要么是我对接口的工作方式存在根本性的误解,要么是我做错了什么奇怪的事情。
我有两个接口:
eno1: 10.6.59.203/24 (gateway 10.6.59.1)
eno2: 192.168.5.100/24 (gateway 192.168.5.1)
如果我拔掉一根电缆并重新启动,无论使用什么电缆,它都可以上网。
但是,如果我同时插入两个接口,则只有一个接口可以工作(默认为eno2
)。例如:
ping google.com -I eno2 # works
ping google.com -I eno1 # hangs forever
我如何才能使上述两个语句发挥作用?
我的 /etc/network/interface:
# The loopback network interface
auto lo
iface lo inet loopback
allow-hotplug eno2
iface eno2 inet dhcp
allow-hotplug eno1
iface eno1 inet dhcp
我的route
:
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.5.1 0.0.0.0 UG 0 0 0 eno2
10.6.59.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eno2
更新
我发现解决这个问题的方法是route add default gw 10.6.59.1 eno1
。但是,如何在启动时正确地执行此操作(可能只需编辑 /etc/network/interfaces)。
此外,现在我有 2 个默认目的地,Linux 如何知道默认使用哪一个?
答案1
您只有一个默认网关,因此传出的数据包只会通过该网关发送;如果您希望能够使用这两个连接,则需要使用另一个0.0.0.0
接口的网关手动添加另一个默认网关(即到的路由)。
但请注意,这将不是同时使用两个连接;这在出厂时是不可能的。其中一个连接将始终被使用,另一个连接仅在主连接发生故障时才被使用;首选路由由“metric”参数定义。
答案2
默认情况下,Linux 会路由传出的数据包仅按目标地址.
您需要基于目标地址和源地址。