topic: "ethernet-wifi-failover"
draft: false is_template_doc: false tags: ["networking", "proxmox", "uplink", "wifi", "ethernet"]
access: public
stub: enabled: false blurb: "" highlights: [] cta_url: "" cta_label: ""
Ethernet/WiFi Uplink Failover¶
Purpose: Execute a controlled failover between Ethernet and WiFi uplinks on the Proxmox host.
Owner: Platform / Infrastructure operations.
Trigger: Uplink failure, upstream switch maintenance, host relocation, or WiFi performance testing.
Impact: Management IP for Proxmox changes; short loss of connectivity (target < 30 seconds). VMs remain running.
Severity: P2.
Pre-reqs:
- SSH or console access to Proxmox.
- WiFi interface configured with valid WPA credentials.
- /etc/network/interfaces contains both Ethernet and WiFi vmbr0 stanzas as per ADR-0105.
Rollback strategy: Re-apply the previous vmbr0 stanza from backup and reload networking.
Context¶
Proxmox uses a VLAN-aware bridge (vmbr0) with subinterfaces for management, observability, and workload VLANs (ADR-0101, ADR-0102).
Only one uplink is active at a time:
- Ethernet (enp87s0) as primary.
- WiFi (wlp89s0) as standby.
This runbook covers switching between the two uplinks. It does not cover initial WiFi configuration or ADR changes.
Preconditions and safety checks¶
-
Confirm correct host and environment:
hostnamectl ip addr show vmbr0 -
Confirm WiFi interface is present and associated (for failover to WiFi):
Expected:iwconfig wlp89s0 wpa_cli -i wlp89s0 status | grep wpa_statewpa_state=COMPLETED. -
Backup current network configuration:
cp /etc/network/interfaces /etc/network/interfaces.backup-$(date +%Y%m%d-%H%M%S) -
Ensure console access is available in case SSH is lost (physical, IPMI, or similar).
-
Confirm a suitable window:
- No critical maintenance in progress.
- Stakeholders informed of brief connectivity interruption.
Steps¶
1) Record current state - Action: Capture current routing and vmbr0 configuration. - Command:
ip route show default
ip addr show vmbr0
2) Edit vmbr0 stanza - Action: Switch vmbr0 from current uplink to alternate uplink. - Command:
vi /etc/network/interfaces
3) Reload network configuration - Action: Apply the updated network configuration. - Command:
ifreload -a
4) Reconnect to new management IP - Action: Re-establish SSH session via new uplink address. - Command examples:
# After failover to WiFi
ssh root@192.168.0.30
# After failback to Ethernet
ssh root@192.168.0.27
5) Verify bridge and VLAN interfaces - Action: Confirm vmbr0 and VLAN subinterfaces are up. - Command:
ip addr show vmbr0
ip addr show | grep 'vmbr0.'
6) Verify upstream and internet connectivity - Action: Confirm routing and internet reachability from Proxmox. - Command:
ping -c3 192.168.0.1
ping -c3 8.8.8.8
7) Verify VM connectivity - Action: Confirm workloads still reach gateway and internet. - Examples:
# From operator workstation
ping -c3 10.20.0.10
# From a VM in VLAN 20
ping -c3 10.20.0.1
ping -c3 8.8.8.8
8) Confirm NAT and firewall state - Action: Sanity-check NAT and FORWARD rules. - Command:
iptables -t nat -L POSTROUTING -n -v | grep MASQUERADE || true
iptables -L FORWARD -n -v | head -20
Verification¶
Runbook is considered successful when:
- Proxmox management is reachable on the intended IP address.
- All VLAN subinterfaces on vmbr0 are UP with correct addresses.
- VMs in management, observability, and workload VLANs can reach their gateways and the internet.
- Monitoring and automation systems can reach the host again (or DNS updated where applicable).
Post-actions and clean-up¶
- Update
docs/guides/getting-started/20-network-architecture.mdwith active uplink and timestamp if this is a long-lived change. - Adjust Prometheus or other monitoring targets if static IPs are used instead of DNS.
- If this was a temporary failover, schedule and execute failback using the same procedure in reverse.
References¶
- ADR-0101 – VLAN Allocation Strategy
- ADR-0102 – Proxmox as Intra-Site Core Router
- ADR-0105 – Dual Uplink Design (Ethernet/WiFi Failover)
- Network Architecture
Maintainer: HybridOps.Studio
License: MIT-0 for code, CC-BY-4.0 for documentation unless otherwise stated.