You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无线与以太网接口默认路由冲突及网络配置问题求助

无线与以太网接口默认路由冲突及网络配置问题求助

嗨,我来帮你搞定这个多网卡路由冲突的问题!你遇到的错误提示已经说得很清楚了——两个接口都在主路由表(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

测试验证

  1. 在本机ping外网(比如ping 8.8.8.8),看是否能通,同时用traceroute 8.8.8.8确认走的是WANIF的网关192.168.0.1
  2. 从LAN子网的设备ping外网,验证是否能通过本机的MASQUERADE规则正常访问外网。

这样修改后,既解决了默认路由冲突的问题,又让LAN和WAN的流量各走其道,WANIF也能正常连外网啦~

备注:内容来源于stack exchange,提问作者deadlock

火山引擎 最新活动