CentOS已收到icmp请求,但未答复的问题解决方法

CentOS已收到icmp请求,但未答复的问题解决方法

时间:2022-06-25 作者:zhankehua 评论:2 点击:2803 次


001.png

有两台服务器,信息如下:

服务器A

Ip: 10.6.214.15

路由信息如下:

Destination     Gateway     Genmask      Flags Metric Ref    Use Iface

0.0.0.0       10.6.214.254    0.0.0.0         UG    0      0        0 bond0

10.6.214.0    0.0.0.0         255.255.255.0   U     0      0        0 bond0

10.6.214.0    0.0.0.0         255.255.255.0   U     0      0        0 wangqiao214

10.6.215.0    0.0.0.0         255.255.255.0   U     0      0        0 wangqiao215

服务器A网卡信息

bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether f8:f2:1e:af:40:d8 brd ff:ff:ff:ff:ff:ff

    inet 10.6.214.15/24 brd 10.6.214.255 scope global bond0

       valid_lft forever preferred_lft forever

    inet6 fe80::faf2:1eff:feaf:40d8/64 scope link

       valid_lft forever preferred_lft forever

wangqiao215: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether f8:f2:1e:af:40:d9 brd ff:ff:ff:ff:ff:ff

    inet 10.6.215.5/24 brd 10.6.215.255 scope global wangqiao215

       valid_lft forever preferred_lft forever

    inet6 fe80::faf2:1eff:feaf:40d9/64 scope link

       valid_lft forever preferred_lft forever

 

服务器B

Ip:10.6.215.41

路由信息如下:

Destination     Gateway         Genmask       Flags Metric Ref    Use Iface

10.6.215.0    0.0.0.0         255.255.255.0     U     0      0        0 bond0

10.10.10.0      0.0.0.0         255.255.255.0   U     0      0        0 em3

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 em3

0.0.0.0         10.6.215.254  0.0.0.0           UG    0      0        0 bond0

 

当服务器A ping服务器B的时候,能够ping通,但是反过来,服务器B ping服务器A的时候ping不通,在服务器A上抓包发现服务器A是可以收到服务器Bicmp请求,但是不响应。

002.png

 

对服务器A的路由分析发现,数据包进来是通过bond0进来,而出去的时候是通过wangqiao215出去。

经查linux有这样一个内核参数:rp_filter

rp_filter Reverse Path Filtering)参数定义了网卡对接收到的数据包进行反向路由验证的规则。他有三个值,012,具体含意如下:

0:关闭反向路由校验

1:开启严格的反向路由校验。对每个进来的数据包,校验其反向路由是否是最佳路由。如果反向路由不是最佳路由,则直接丢弃该数据包。

2:开启松散的反向路由校验。对每个进来的数据包,校验其源地址是否可达,即反向路由是否能通(通过任意网口),如果反向路径不通,则直接丢弃该数据包。

什么是反向路由校验

所谓反向路由校验,就是在一个网卡收到数据包后,把源地址和目标地址对调后查找路由出口,从而得到反身后路由出口。然后根据反向路由出口进行过滤。

 

rp_filter的值为1时,要求反向路由的出口必须与数据包的入口网卡是同一块,否则就会丢弃数据包。

rp_filter的值为2时,要求反向路由必须是可达的,如果反路由不可达,则会丢弃数据包。

 问题解决

了解了rp_filter参数的作用,那我们就把这个参数修改一下吧。

sysctl net.ipv4.conf.all.rp_filter=2

或在/etc/sysctl.conf中添加net.ipv4.conf.all.rp_filter=2,然后运行命令:sysctl –p

服务器B ping服务器A的时候就可以ping通了。

参考资料:

https://www.jianshu.com/p/16d5c130670b

已有 2803 位网友参与,快来吐槽:

1#赤吾  2022-06-25 16:01:21 回复该评论
问题就是网络问题
1#zhankehua  2022-06-25 16:05:40 回复该评论
是的,应该是网络问题。

发表评论

必填

选填

选填

◎欢迎参与讨论,发表您的看法、交流您的观点。