当定义多个接口时,Ubuntu 如何确定默认路由?

当定义多个接口时,Ubuntu 如何确定默认路由?

我有一台 Ubuntu 服务器(无头,未安装网络管理器)。它有两个接口,eth0 和 eth1。我在 /etc/network/interfaces 中定义了以下内容:

auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
address 10.0.5.10
netmask 255.255.255.0
gateway 10.0.5.1
dns-search test.domain.com
dns-nameserver 10.0.2.3
broadcast 10.0.5.255

auto eth0
iface eth0 inet static
address 192.168.57.10
netmask 255.255.255.0
gateway 192.168.57.1
broadcast 192.168.57.255

目前,重新启动后,/etc/resolve.conf 为空,我的路由表如下所示:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.57.1    0.0.0.0         UG    0      0        0 eth0
10.0.5.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.57.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

为什么默认路由选择为 192.168.57.1​​?eth1 是列表中的第一个接口。我本来希望它获得默认路由。我希望重新启动后 /etc/resolve.conf 看起来像这样:

search test.domain.com
nameserver 10.0.2.3

我希望路由表如下所示:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.5.1        0.0.0.0         UG    0      0        0 eth1
10.0.5.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
192.168.57.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0

我可以通过手动编辑 /etc/resolv.conf 并使用“ip route delete default”“ip route add default ...”来获得它,但它不会在重启后持续存在。

答案1

人们经常对“默认网关”的含义存在误解。通常可能只有默认网关(有例外,但不是您的情况)。网络中不需要网关192.168.57.0,因为它是直接连接的。

定义两个网关(每个接口一个)似乎最终只有一个,具体取决于定义的顺序。DNS 服务器也是如此 - 它们不绑定到特定接口,因此可能取决于定义/启动接口的顺序,最后一个定义将被使用。

如果需要,您可以更改接口定义的顺序(eth1,然后是 eth0),但使用 eth0 定义gateway 10.0.5.1dns-...(或者,如果有疑问,对两个接口都定义相同)。

相关内容