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

loo*_*bee 4 networking linux boot debian routing

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

allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth1
iface eth1 inet dhcp
Run Code Online (Sandbox Code Playgroud)

启动时,默认路由添加到 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
Run Code Online (Sandbox Code Playgroud)

但是我需要将默认路由作为 eth0 上的网关。删除默认路由并在启动后运行 dhclient 工作:

$ sudo route del default
$ sudo dhclient -v eth0
Run Code Online (Sandbox Code Playgroud)

我知道我可以穿上它rc.local,但是有没有更“干净”的方法来做到这一点?

我不能使用静态地址。

kos*_*tix 5

对我来说,看起来两个 DHCP 客户端都产生了 - 每个都为其相应的 iface - 获得默认网关和比赛。事情以这种方式发生,即eth1可靠地获胜(无论出于何种原因)。

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

基于thisthis,我会尝试添加

interface eth1 {
    supersede routers ""
}
Run Code Online (Sandbox Code Playgroud)

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