Ubuntu 22虚拟机配置第二、第三块网卡时Netplan默认路由冲突问题求助
Ubuntu 22虚拟机配置第二、第三块网卡时Netplan默认路由冲突问题求助
嗨,我之前也碰到过Netplan这种默认路由冲突的问题,咱们来一步步解决它~
首先得搞清楚报错的原因:Netplan不允许在同一个默认路由表(也就是main表)里同时存在两个默认路由,所以你给ens160和ens192都设置了default路由,就触发了这个冲突提示。接下来分两种场景给你对应的解决方案:
场景一:只需要一个默认网关(大多数情况)
如果你的需求是仅用其中一块网卡(比如ens160)作为默认网关访问外网,另一块网卡(ens192)只负责和自身网段(192.168.252.0/24)的设备通信,那只要去掉ens192的默认路由配置就行——Netplan会自动给网卡添加对应网段的直连路由,不需要手动设置。
修改后的Netplan配置如下:
network: ethernets: ens160: addresses: - 192.168.50.231/24 nameservers: addresses: - 192.168.50.1 search: - domain.com routes: - to: default via: 192.168.50.254 ens192: addresses: - 192.168.252.231/24 nameservers: addresses: - 192.168.252.1 search: - domain.com version: 2
场景二:需要分流(特定流量走不同网卡)
如果你确实需要让部分流量走ens192的网关,就得用到策略路由,给每个网卡分配独立的路由表,再通过规则指定哪些流量用哪个表。
比如我们给ens160分配路由表100,ens192分配路由表200,配置如下:
network: ethernets: ens160: addresses: - 192.168.50.231/24 nameservers: addresses: - 192.168.50.1 search: - domain.com routes: - to: default via: 192.168.50.254 table: 100 routing-policy: # 来自ens160 IP的流量用表100 - from: 192.168.50.231/32 table: 100 # 访问ens160网段的流量用表100 - to: 192.168.50.0/24 table: 100 ens192: addresses: - 192.168.252.231/24 nameservers: addresses: - 192.168.252.1 search: - domain.com routes: # 添加自身网段的路由 - to: 192.168.252.0/24 via: 192.168.252.254 table: 200 # 给ens192设置默认路由(仅在表200生效) - to: default via: 192.168.252.254 table: 200 routing-policy: # 来自ens192 IP的流量用表200 - from: 192.168.252.231/32 table: 200 # 访问ens192网段的流量用表200 - to: 192.168.252.0/24 table: 200 version: 2
配置验证与应用
不管用哪种方案,都建议先运行以下命令检查配置语法:
sudo netplan generate
如果没有报错,再应用配置:
sudo netplan apply
你还可以用这些命令查看路由和规则是否生效:
- 查看指定路由表:
ip route show table 100(替换成对应表号) - 查看策略路由规则:
ip rule show
备注:内容来源于stack exchange,提问作者user212398
相关产品推荐
相关产品推荐

