两个 DHCP 接口分配给 OS 的两个默认网关

两个 DHCP 接口分配给 OS 的两个默认网关

我有一个 Ubuntu 盒子,它有两个网络接口(eth0 和 wlan0)。它们都配置为 DHCP /etc/network/interfaces,但它们都分配了一个默认网关:

/etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto wlan0
iface wlan0 inet dhcp
wireless-essid test

的结果route -n

Kernel IP routing table
Destination Gateway      Genmask       Flags  Metric Ref Use  Iface
0.0.0.0     172.16.1.1   0.0.0.0        UG    100    0   0    wlan0
0.0.0.0     10.0.0.1     0.0.0.0        UG    100    0   0    eth0
10.0.0.0    0.0.0.0      255.255.255.0   U     0     0   0    eth0
172.16.1.0  0.0.0.0      255.255.255.0   U     0     0   0    wlan0

如何/etc/network/interfaces在我想要的接口上设置只有一个默认网关?

最坏的情况是,我怎样才能至少控制route -n每次启动时哪一个命令处于领先地位?

笔记:

  • 这个盒子将会经常移动,并且会连接到不同的网络,所以我事先不知道它会有的 IP 地址/范围。

  • 有时默认的 gw 接口是 eth0。有时是 wlan0 ... 因此,这需要某种程度的自动化...

答案1

通常与网络相关的东西是由“网络管理员”来管理的,并且它配备了一个相当好的玻璃灯泡,知道如何做正确的事情(TM)。

如果您坚持使用 /etc/network/interfaces,并且您的计算机经常出差,则应将可执行脚本放入 /etc/network/if-up.d。每次接口启动时,都会执行此目录中的所有脚本。在新脚本中,您可以实现根据需要修改路由表的逻辑。

我建议你开始阅读接口手册页中的“IFACE OPTIONS”部分。但请注意,没有确定路由表“正确”设置的“方法”。

您可以通过分配不同的度量来更改默认路由的顺序。度量是一个简单的数字,内核将优先选择度量最低(我认为)的默认路由。因此,您应该想出一些测试,让您的脚本运行这些测试,并根据测试结果,您的脚本将度量分配给默认路由。

相关内容