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

Ubuntu 22.04双网卡独立默认网关的Netplan与iproute2配置问题求助

Ubuntu 22.04双网卡独立默认网关的Netplan与iproute2配置问题求助

嘿,我来帮你搞定这个双网卡配置的问题!Ubuntu 22.04确实彻底换掉了旧的/etc/network/interfaces配置方式,改用Netplan来管理网络,而且你之前的iproute2配置也犯了个小错误,咱们一步步来解决:

一、用Netplan替代旧的interfaces配置

首先,Netplan的配置文件都在/etc/netplan/目录下,通常是类似00-installer-config.yaml这样的文件(如果没有就新建一个)。你需要把原来的静态IP和双网关需求转换成Netplan的YAML格式,注意YAML对缩进要求很严格,一定要用空格不要用Tab:

network:
  version: 2
  renderer: networkd  # 服务器环境用networkd,桌面版可以替换为NetworkManager
  ethernets:
    enp7s0:
      addresses: [192.168.0.101/24]
      routes:
        - to: default
          via: 192.168.0.1
          table: 100  # 给这个网卡指定专属路由表,编号自定义即可
      routing-policy:
        - from: 192.168.0.101/32
          table: 100  # 让从该IP发出的流量走专属路由表
    enp8s0:
      addresses: [192.168.1.16/24]
      routes:
        - to: default
          via: 192.168.1.1  # 这里替换为你这个网段的实际网关地址
          table: 200
      routing-policy:
        - from: 192.168.1.16/32
          table: 200

配置好之后,执行以下命令生效:

sudo netplan generate  # 生成配置文件
sudo netplan apply     # 应用配置

你可以用下面的命令验证是否配置成功:

ip route show table 100  # 查看enp7s0的专属路由表
ip route show table 200  # 查看enp8s0的专属路由表
ip rule show             # 查看路由规则

二、修复iproute2的rt_tables错误

你之前犯了一个关键错误:把路由命令直接写到了/etc/iproute2/rt_tables文件里!这个文件的作用只是定义路由表的编号和名称的映射关系,只能写[编号] [表名]这种格式,不能放任何ip route或ip rule命令,这就是你执行ip rule show时提示文件损坏的原因。

正确的rt_tables配置应该是这样的:
打开/etc/iproute2/rt_tables文件,添加以下两行(编号要和Netplan里的table对应):

100 rt2
200 rt3

其实如果用了上面的Netplan配置,Netplan会自动帮你配置路由和规则,不需要再手动执行那些ip route和ip rule命令了,省了不少事~

最后验证

配置完成后,你可以分别从两个网卡的IP发起请求,测试是否各自走对应的网关,比如用curl --interface enp7s0 ifconfig.me和curl --interface enp8s0 ifconfig.me来查看出口IP是否符合预期。

备注:内容来源于stack exchange,提问作者God of Money

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 09:44:09