由于路由表,无法 ping 接口 IP

由于路由表,无法 ping 接口 IP

我有一个实例/虚拟机,有以下 3 个接口

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet 10.34.154.3x  netmask 255.255.254.0  broadcast 10.34.155.255
        inet6 fe80::f816:3eff:feaa:7ced  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:aa:7c:ed  txqueuelen 1000  (Ethernet)
        RX packets 33670  bytes 22184129 (21.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 30600  bytes 6280478 (5.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet 10.34.148.5x  netmask 255.255.254.0  broadcast 10.34.149.255
        inet6 fe80::f816:3eff:feb8:83ac  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:b8:83:ac  txqueuelen 1000  (Ethernet)
        RX packets 1712  bytes 106586 (104.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 86  bytes 6172 (6.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 9000
        inet 10.34.150.1x  netmask 255.255.254.0  broadcast 10.34.151.255
        inet6 fe80::f816:3eff:fee2:5a68  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:e2:5a:68  txqueuelen 1000  (Ethernet)
        RX packets 131  bytes 9929 (9.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 74  bytes 5432 (5.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我的路由表创建如下

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.34.154.1     0.0.0.0         UG    0      0        0 eth0
10.34.148.0     0.0.0.0         255.255.254.0   U     0      0        0 eth1
10.34.148.59    10.34.148.1     255.255.255.255 UGH   0      0        0 eth1
10.34.150.0     0.0.0.0         255.255.254.0   U     0      0        0 eth2
10.34.154.0     0.0.0.0         255.255.254.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1004   0        0 eth2

我的问题是我只能从配置的接口 ping 通网关 IP,例如:1. 我可以从 eth1 ping 通网关 IP 10.34.148.1,但不能从 eth0 或 eth2 ping 通 2. 我可以从 eth2 ping 通网关 IP 10.34.150.1,但不能从 eth0 或 eth1 ping 通

另外,我只能从外部网络访问 eth0 IP(10.34.154.3x),但无法访问 eth1 和 eth2 IP

在询问网络管理员时,他认为问题出在上面的路由表上。路由表不应该有如下条目

10.34.148.59    10.34.148.1     255.255.255.255 UGH   0      0        0 eth1

因为,我们不应该使用网关访问本地接口。

为了解决这个问题,他建议创建/定义一个新的路由表条目,如下所示

cat /etc/iproute2/rt_tables
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
200       dnstraf
201 rt1  //creating new definition

创建新规则

cat rule-eth1
from 10.34.148.157 table rt1

并在 /etc/sysctl.conf 中为 arp 添加此行

net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.default.arp_filter = 1

因此新的路由表应如下所示

ip route show table rt1
default via 10.34.148.1 dev eth1
10.34.148.0/23 dev eth1 scope link

经过这些改变,ping 开始正常工作。

所以我的问题是,我的路由表出了什么问题?建议的解决方法是解决问题的正确方法吗?还是操作系统中有什么我应该注意的?

答案1

如果您在尝试 PING 的子网中有一个本地接口(IP 地址),则可以使用该接口。如果您将接口指定为源以 ping 不同子网中的网关,则路由器需要能够相互访问。如果它们无法相互访问,则它们会将您的请求转发到其(路由器的)默认网关,直到达到 PING 的 TTL 并丢弃。如果网关/路由实例位于防火墙系统上,则策略可能会阻止/丢弃 ICMP(PING)。其中一个原因可能是您无法 PING 网关的原因。

此外,路由表缺少条目。每个接口都应该有一个255.255.255.255带有网络掩码/genmask 的条目(此条目将本地接口绑定到相应的 IP)。这使得很难真正了解您的配置中存在什么问题。

相关内容