当两个接口(以太网和 wifi)处于活动状态时无法 ping

Unable to ping when two interfaces (ethernet and wifi) are active

我有一个 linux 系统,有两个活动接口:

  1. Bridge br0:包含两个 wifi 接口(2.4 和 5GHz)。 5GHz 接口连接到网络。网桥接口 br0 能够从该网络 (192.168.1.107) 获取 IP。此网络提供无任何限制的互联网。
  2. 以太网eth0:连接到不同的网络(与 5GHz 网络不同)并且也有一个来自它的 IP 地址 (10.102.xx.xx)。此网络在代理后提供互联网。

通过这种安排,我无法 ping 通任何网站,例如ping google.com 失败。如果我暂时删除以太网,则 ping 成功。如果我指定要从中执行 ping 操作的接口,Ping 也会成功。例如ping -I br0 google.com 成功。

系统上的 HTML5 应用程序 运行 需要加载 URL,由于上述问题而失败。

你能帮我理解为什么当两个接口都处于活动状态时 ping/wget/curl 会失败吗?我该如何解决这个问题?

路由 table 如下所示:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.102.132.1    0.0.0.0         UG    202    0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    208    0        0 br0
10.102.132.0    0.0.0.0         255.255.255.128 U     202    0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
192.168.1.0     0.0.0.0         255.255.255.0   U     208    0        0 br0

从您的路由 table 可以看出,当您连接了两个接口时,您有 2 个默认网关,即使最低指标应该优先考虑 10.102.132.1 网关,但这可能不是您想要的鉴于它在代理后面。

如果您运行执行以下命令,您应该能够删除 eth0 上的默认网关,并且能够再次 ping 通:

sudo route del -net 0.0.0.0 gw 10.102.132.1 netmask 0.0.0.0 dev eth0

此命令不是永久性的,因此当您断开并重新连接该接口时,路由将被重置。