debian中有两个接口的默认路由


4

我有一个带有两个接口的debian机器,由dhcp配置:

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth1
iface eth1 inet dhcp

在启动时,将向eth1添加默认路由:

0.0.0.0         10.200.10.253   0.0.0.0         UG    0      0        0 eth1
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.200.10.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

但我需要默认路由作为eth0上的网关。 删除默认路由并在引导后运行dhclient:

$ sudo route del default
$ sudo dhclient -v eth0

我知道我可以把它放在上面 rc.local,但有更“干净”的方式吗?

我不能使用静态地址。

Answers:


5

对我来说,看起来两个DHCP客户端都会产生 - 每个客户端都有相应的iface - 获得默认网关和竞争。事情就是这样发生的 eth1 可靠地获胜(无论出于何种原因)。

该解决方案似乎并不明显,因为它取决于您的设置。在逻辑上使用DHCP获取默认GW意味着您不关心它的位置。

基于 这个 这个 ,我试着加入

interface eth1 {
    supersede routers ""
}

/etc/dhcp/dhclient.conf 看看会发生什么。这个想法是 supersede 任何 routers 由DHCP服务器提供通过 eth1 没有。


谢谢你,这让我朝着正确的方向前进!我想如果您需要来自DHCP的路由(默认值除外),这将无效 - 幸运的是,我没有
goncalopp

1
请注意,该选项是 routers不是 static-routes。我会说在大多数设置中 routers 只发送一个主机 - 托管网络的默认网关。
kostix

1
@goncalopp,来自手册页 - 部分 static-routes:“默认路由(0.0.0.0)是静态路由的非法目的地。要指定默认路由,请使用路由器选项。” (然后继续建议使用 classless-static-routes 代替 static-routes 但这与我们的案子无关。)
kostix

对我这么快找到这个非常有用。 Fedora网络服务使用不同的方法,它使用环境变量来驱动自己的dhclient脚本。可以说是否通过连接提交每个连接的路由器 DEFROUTE 连接配置中的变量。
Pavel Šimerda
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.