- ap/50-van-wan.yaml: revert the comment to "see STARLINK_IFACE in deploy.conf" so the
rendered file is byte-identical to the Pi 5's installed netplan (it otherwise reports
"differs" forever); note in deploy.sh next to render_wan_netplan.
- check 14: baseline 3d117e7, keep byte-identity for wan.conf, assert no /etc/vanlink.conf;
the failure branch no longer aborts the suite under pipefail.
- helper restore(): restart van-br0-setup (unit present, timeout 30, non-fatal) after the
re-apply, before the connectivity re-check; asserted in the rollback sandbox scenario.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KqhjP7nud5gdBg25zCiRk9
36 lines
1.9 KiB
YAML
36 lines
1.9 KiB
YAML
# /etc/netplan/50-van-wan.yaml — replaces cloud-init's 50-cloud-init.yaml.
|
|
# The WANs handed to NetworkManager so van-failover can steer them (mirrors
|
|
# wayback where NM owns all WANs): wlan0 = wifi uplink (Wapana at home /
|
|
# campsite wifi), enxd8ec5eeb3512 = Starlink. The AP radios and the wired LAN
|
|
# ports (USB dongle + onboard eth0, since 2026-07-12 an internal LAN port) are
|
|
# deliberately absent: systemd-networkd/hostapd own them, and
|
|
# van-ap-unmanaged.conf hides them from NM.
|
|
# Apply once by hand: netplan generate && netplan apply (flaps the uplinks).
|
|
network:
|
|
version: 2
|
|
ethernets:
|
|
# Starlink dish uplink (RTL8153 USB NIC, MAC-named — travels with the
|
|
# adapter, see STARLINK_IFACE in deploy.conf). The /32 link route keeps the
|
|
# dish's management address reachable no matter which WAN holds the
|
|
# default route: the dish answers on 192.168.100.1 (gRPC :9200) even while
|
|
# the uplink sits behind CGNAT.
|
|
@STARLINK_IFACE@:
|
|
renderer: NetworkManager
|
|
optional: true
|
|
dhcp4: true
|
|
routes:
|
|
- to: 192.168.100.1/32
|
|
scope: link
|
|
# never-default: van-failover is the sole owner of the default route (it manages it
|
|
# directly via `ip route`, deliberately never `nmcli device reapply`d — that resets
|
|
# r8152 USB-ethernet carriers). Without this, NM's own DHCP client reinstalls its own
|
|
# default route (metric 100, NM's ethernet default) on every lease renewal — observed
|
|
# every ~8s here (dish hands out a 16s lease) — which van-failover's loop prunes within
|
|
# ~1s, but during that window it can tie wifi's own healthy base metric (also 100).
|
|
# Setting this at connection-creation time (vs. a live `nmcli modify`, which does NOT
|
|
# take effect on an already-active connection without a reactivation) closes the race
|
|
# for good.
|
|
networkmanager:
|
|
passthrough:
|
|
ipv4.never-default: "true"
|