You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04配置Netplan多网卡路由异常:指定子网无法访问服务器

Ubuntu 22.04配置Netplan多网卡路由异常:指定子网无法访问服务器

兄弟,我太懂你这个困扰了——多网卡指定子网路由,结果特定子网连不上服务器,加双默认路由又明显不合理对吧?这问题十有八九是不对称路由搞的鬼,咱们一步步给你捋明白解决。

问题根源分析

你当前的配置里,enp3s0是系统默认路由,所有出站流量都走172.16.8.254。但当10.146.0.0/16这类子网的机器ping你服务器的enp11s0网卡时,服务器收到数据包后,会下意识用默认路由把回包从enp3s0发出去。这就形成了“来的路是enp11s0,回的路是enp3s0”的不对称路径,很多防火墙、路由器会因为安全规则直接丢弃这种回包,所以你就ping不通了。

修正后的Netplan配置

咱们要给服务器加策略路由,让来自指定子网的回包原路返回。修改后的配置如下:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 172.16.8.13/24
      nameservers:
        addresses: [172.16.6.244, 172.16.6.245]
      routes:
        - to: default
          via: 172.16.8.254
          metric: 100  # 给主路由加低优先级数值,确保它是系统首选默认路由
    enp11s0:
      addresses:
        - 10.129.81.215/24
      nameservers:
        addresses: [10.22.73.161, 10.22.73.33]
      routes:
        - to: 10.146.0.0/16
          via: 10.129.81.10
        - to: 10.230.0.0/16
          via: 10.129.81.10
        - to: 10.138.0.0/16
          via: 10.129.81.10
      # 关键配置:路由策略,指定来源子网用专属路由表
      routing-policy:
        - from: 10.146.0.0/16
          table: 100
        - from: 10.230.0.0/16
          table: 100
        - from: 10.138.0.0/16
          table: 100
      # 给专属路由表加默认路由,确保回包走enp11s0的网关
      routes:
        - to: 0.0.0.0/0
          via: 10.129.81.10
          table: 100

配置关键点解释

  • metric 100:数值越小路由优先级越高,这个设置保证enp3s0的默认路由始终是系统第一选择,不会被其他路由干扰。
  • routing-policy:告诉系统,凡是来自10.146.0.0/16等三个子网的流量,都用编号100的专属路由表处理回包。
  • table 100:这个专属路由表里的默认路由指向enp11s0的网关,这样回包就会从enp11s0发出去,和数据包过来的路径完全一致,解决不对称路由的问题。

应用配置并验证

  1. 生成并应用新配置:
sudo netplan generate
sudo netplan apply
  1. 验证路由是否生效:
# 查看主路由表,确认enp3s0的默认路由优先级最高
ip route show
# 查看专属路由表100的内容,确认默认路由指向enp11s0的网关
ip route show table 100
# 查看路由策略规则,确认三个子网的规则已经添加
ip rule show

额外排查点

如果配置后还是不通,可以试试:

  • 检查enp11s0所在网络的路由器/防火墙,确保允许10.129.81.0/24到目标子网的回包通行。
  • 临时关闭系统的反向路径过滤测试:
sudo sysctl -w net.ipv4.conf.all.rp_filter=0
sudo sysctl -w net.ipv4.conf.enp11s0.rp_filter=0

如果关闭后能通,说明是rp_filter规则拦截了,你可以把这两行加到/etc/sysctl.conf里永久生效。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 11:29:36