Ubuntu Linux中如何确保指定默认网关的Metric始终低于其他网关?
Ubuntu Linux中如何确保指定默认网关的Metric始终低于其他网关?
我完全理解你遇到的头疼问题——在vSphere上的双网卡Ubuntu VM里,eth0对应的10.100.0.1是能正常访问公网、DNS的核心默认网关,而eth1的192.168.100.1只有测试网段的连通性。但偶尔eth0的网关metric会莫名升高,导致系统优先走eth1的网关,直接断了DNS访问,只能靠重启或重加网关临时救急。
要彻底解决这个问题,核心是固定两个网卡的路由metric值,确保eth0的metric始终低于eth1,这样系统会始终优先选择eth0的默认网关。下面分两种常用的Ubuntu网络配置方式给出具体方案:
方案1:针对Ubuntu 18.04+(使用Netplan默认配置)
Netplan是Ubuntu新版本的默认网络配置工具,我们可以通过它强制指定每个网卡的路由metric:
- 找到Netplan的配置文件,一般位于
/etc/netplan/目录下,文件名类似00-installer-config.yaml - 编辑该文件,给两个网卡分别设置固定的metric,确保eth0的数值更小:
network: ethernets: eth0: dhcp4: true dhcp4-overrides: route-metric: 20101 # 比eth1的metric低,确保优先级更高 eth1: dhcp4: true dhcp4-overrides: route-metric: 20102 version: 2
- 应用配置并生效:
sudo netplan generate && sudo netplan apply
这样后续DHCP自动分配路由时,会严格遵循我们设置的metric值,不会再出现eth0的metric莫名升高的情况。
方案2:针对传统Ubuntu版本(使用ifupdown配置)
如果你的系统还在使用传统的/etc/network/interfaces配置:
- 编辑网络配置文件:
sudo nano /etc/network/interfaces
- 给每个网卡添加固定的metric参数:
auto eth0 iface eth0 inet dhcp metric 20101 # 优先级更高的metric auto eth1 iface eth1 inet dhcp metric 20102
- 重启网络服务使配置生效:
sudo systemctl restart networking
备选方案:静态路由固定网关(彻底避免DHCP干扰)
如果不想依赖DHCP分配网关,也可以直接配置静态网络参数,彻底锁死默认网关和metric:
以Netplan为例,编辑配置文件如下:
network: ethernets: eth0: addresses: [10.100.0.xxx/24] # 替换为你的eth0静态IP gateway4: 10.100.0.1 nameservers: addresses: [你的DNS服务器IP, 比如8.8.8.8] route-metric: 20101 eth1: addresses: [192.168.100.xxx/24] # 替换为你的eth1静态IP gateway4: 192.168.100.1 route-metric: 20102 version: 2
应用配置后,系统会完全按照你设定的规则路由,不会受DHCP推送的路由变化影响。
问题根源补充
你的问题本质是DHCP服务器(或vSphere的网络自动配置)偶尔会重新分配eth0的路由metric,导致其数值超过eth1的metric。通过固定每个网卡的metric值,就能强制系统始终优先选择eth0的默认网关,彻底解决DNS不可用的问题。
备注:内容来源于stack exchange,提问作者PatS
相关产品推荐
相关产品推荐

