无线与以太网接口默认路由冲突及网络配置问题求助
无线与以太网接口默认路由冲突及网络配置问题求助
嗨,我来帮你搞定这个多网卡路由冲突的问题!你遇到的错误提示已经说得很清楚了——两个接口都在主路由表(main)里声明了默认路由,系统根本不知道该优先走哪一条,所以才会报错,而且这也直接导致你的WANIF没法正常连外网。咱们一步步来修复:
问题根源拆解
- 重复默认路由:你给LANIF和WANIF都配置了
default路由,而且都塞进了main路由表,系统面临“二选一”的困境,直接触发一致性校验错误。 - WANIF IP配置冗余:你给WiFi接口WANIF同时分配了
10.102.44.36/27(和LANIF同子网)和192.168.0.100/24两个IP,这完全没必要——WANIF是用来连外网的,只需要保留外网网段的IP就行,同LAN的IP只会添乱,导致路由判断混乱。
修复方案:用策略路由分离网段流量
我们需要用Netplan的routing-policy功能,给LAN和WAN分别配置独立的路由规则,让不同网段的流量走对应的网关,同时清理冗余配置。
1. 修改Netplan配置文件
先确认你已经备份了原配置(你之前已经做了01-network-manager-all.yaml.backup,很棒),然后替换成下面的配置(注意替换脚本里的$LANIF和$WANIF变量):
network: version: 2 renderer: NetworkManager ethernets: "$LANIF": addresses: - 10.102.44.33/27 routes: # 不给LAN配置默认路由,只针对LAN子网设置专属路由 - to: 10.102.44.32/27 via: 10.102.44.36 table: 100 # 自定义LAN专属路由表编号 routing-policy: # 来自LAN子网的流量,强制使用表100的路由规则 - from: 10.102.44.32/27 table: 100 wifis: "$WANIF": addresses: - 192.168.0.100/24 # 移除和LAN同网段的冗余IP routes: # 给WAN配置唯一的默认路由,设置更低的metric确保优先级最高 - to: default via: 192.168.0.1 metric: 100 access-points: "Network": password: "passw"
2. 应用配置并验证
执行以下命令让配置生效:
sudo netplan generate sudo netplan apply
然后检查路由表,确认规则正确:
# 查看主路由表(应该只有WAN的默认路由) ip route show table main # 查看LAN专属路由表(应该有LAN子网到10.102.44.36的路由) ip route show table 100
3. 确认转发规则有效
你的iptables转发和伪装规则是没问题的,再快速验证一下:
# 确认IP转发开启 cat /proc/sys/net/ipv4/ip_forward # 查看NAT规则是否存在 sudo iptables -t nat -L POSTROUTING
测试验证
- 在本机ping外网(比如
ping 8.8.8.8),看是否能通,同时用traceroute 8.8.8.8确认走的是WANIF的网关192.168.0.1。 - 从LAN子网的设备ping外网,验证是否能通过本机的MASQUERADE规则正常访问外网。
这样修改后,既解决了默认路由冲突的问题,又让LAN和WAN的流量各走其道,WANIF也能正常连外网啦~
备注:内容来源于stack exchange,提问作者deadlock




