dsh/lmvpn_server:fix/nat-wan-iface-redetect
main
服务器更换网卡后(enp1s0f3 → enp1s0),nft masquerade 规则仍绑定旧网卡名,规则永不命中,客户端连上 VPN 但无法上网。
enp1s0f3
enp1s0
完整故障链:
After=network.target
ip route show default
detectWANInterface()
install_linux.sh
Wants/After=network-online.target
internal/vpn/firewall_linux.go
internal/vpn/diag_linux.go
go build ./...
ping -I 192.168.77.1 8.8.8.8
问题: 更换网卡后(如 enp1s0f3 -> enp1s0), nft masquerade 规则仍绑定旧网卡名, 规则永不命中, 客户端连上 VPN 但无法出网; 且诊断面板只检查规则是否存在, 会误报正常。 修改: 1. systemd 单元增加 Wants/After=network-online.target, 开机等待默认路由 就绪后再启动, 避免启动竞态下检测不到出口网卡而跳过防火墙配置; 2. detectWANInterface 增加 10x1s 重试, 开机初期无默认路由时短暂等待; 3. 诊断面板校验 masquerade 规则绑定的网卡是否真实存在, 不存在时给出 明确提示(网卡已更换?), 不再误报正常。
No dependencies set.
The note is not visible to the blocked user.
背景
服务器更换网卡后(
enp1s0f3→enp1s0),nft masquerade 规则仍绑定旧网卡名,规则永不命中,客户端连上 VPN 但无法上网。完整故障链:
After=network.target不等待网络就绪),此时新网卡链路未 UP、DHCP 未完成,ip route show default为空,detectWANInterface()失败,日志记录「未能检测出口网卡,跳过防火墙配置」;修改内容
install_linux.sh:systemd 单元增加Wants/After=network-online.target,开机等待默认路由就绪后再启动服务;internal/vpn/firewall_linux.go:detectWANInterface()增加 10×1s 重试,开机初期无默认路由时短暂等待;internal/vpn/diag_linux.go:诊断面板校验 masquerade 规则绑定的网卡是否真实存在,失效时给出明确提示(此前仅检查规则是否存在,本故障下会误报正常)。验证
go build ./...通过;enp1s0并重写规则,ping -I 192.168.77.1 8.8.8.8经 SNAT 正常出网。