更新

更新

要么是我对接口的工作方式存在根本性的误解,要么是我做错了什么奇怪的事情。

我有两个接口:

  • 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 会路由传出的数据包仅按目标地址.
您需要基于目标地址和源地址

https://superuser.com/questions/376667/how-to-route-only-specific-subnet-source-ip-to-a-particular-interface

相关内容