当在具有多个接口的Linux主机上启用微分段时,流量无法到达Socket

问题

对于基于Linux的系统,当连接到两个路由器(一个用于本地流量,一个用于互联网流量)时,启用微分段不会为默认网关创建路由条目。

故障排除 

检查路由表

通过运行命令route -n检查路由表

Destination    Gateway      Genmask         Flags Metric Ref Use Iface
0.0.0.0 10.40.0.254 0.0.0.0 UG 202 0 0 eth0
0.0.0.0 192.168.2.1 0.0.0.0 UG 1024 0 0 eth1
10.10.0.0 10.40.0.254 255.255.0.0 UG 0 0 0 eth0
10.30.0.0 10.40.0.254 255.255.0.0 UG 0 0 0 eth0
10.40.0.0 0.0.0.0 255.255.0.0 U 202 0 0 eth0
10.52.0.0 10.40.0.254 255.255.0.0 UG 0 0 0 eth0
10.53.0.0 10.40.0.254 255.255.0.0 UG 0 0 0 eth0
52.214.167.240 10.40.0.254 255.255.255.255 UGH 0 0 0 eth0
172.17.10.41 10.40.0.254 255.255.255.255 UGH 0 0 0 eth0
192.168.2.1 0.0.0.0 255.255.255.255 UH 1024 0 0 eth1

在上面的示例中,我们可以看到192.168.2.1的网关是0.0.0.0,这表明有一个通过eth1的默认路由专门针对该IP。 但是,由于网关不在同一子网中,第一条默认路由将被选中而不是正确的路由,导致流量因较低的度量而经由eth0发送。

解决方案

通过运行以下命令手动添加缺失子网的路由

ip route add <IP/CIDR> dev <interface>

例如:ip route add 192.168.2.0/24 dev eth1

完成后,检查路由表以确认已添加路由。

Destination    Gateway     Genmask         Flags Metric Ref Use Iface
0.0.0.0 10.40.0.254 0.0.0.0 UG 202 0 0 eth0
0.0.0.0 192.168.2.1 0.0.0.0 UG 1024 0 0 eth1
10.10.0.0 10.40.0.254 255.255.0.0 UG 0 0 0 eth0
10.30.0.0 10.40.0.254 255.255.0.0 UG 0 0 0 eth0
10.40.0.0 0.0.0.0 255.255.0.0 U 202 0 0 eth0
10.52.0.0 10.40.0.254 255.255.0.0 UG 0 0 0 eth0
10.53.0.0 10.40.0.254 255.255.0.0 UG 0 0 0 eth0
52.214.167.240 10.40.0.254 255.255.255.255 UGH 0 0 0 eth0
172.17.10.41 10.40.0.254 255.255.255.255 UGH 0 0 0 eth0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.2.1 0.0.0.0 255.255.255.255 UH 1024 0 0 eth1

这篇文章有帮助吗?

0 人中有 0 人觉得有帮助

0 条评论