无法转发ICMP数据包

时间:2018-07-19 06:45:39

标签: networking routing forwarding

机器A 10.167.27.10 在A上的路线如下:

0.0.0.0         10.167.27.1     0.0.0.0         UG    0      0        0 eth0
10.167.28.20    10.167.27.11    255.255.255.255 UGH   0      0        0 eth0
10.167.27.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

机器B 10.167.27.11 B上的路线像:

default         10.167.27.1     0.0.0.0         UG    0      0        0 eth0
10.167.27.0     *               255.255.255.0   U     0      0        0 eth0

在B上ip_forward和accept_redirects设置为1。

机器C为10.167.28.20。我可以从B pingC。 由于存在使用B作为A上的网关的C路由,因此我认为如果从A ping C,则会收到ICMP重定向消息。但实际上我没有得到任何答复。

我在B的eth0上进行了tcpdump,然后看到ICMP到达了。但是为什么不转发它们呢?

更新

在B上,当处理ICMP数据包时,我使用Netfilter挂钩函数输出日志。我添加到FORWARD挂接点的日志已打印,并且路由结果正确。但是未打印POST ROUTING挂接点处的日志。我很困惑...

1 个答案:

答案 0 :(得分:0)

机器C知道如何回复A? 机器A知道如何到达C(这就是为什么您看到IMCP到达B的原因),但是如果设备C不知道如何到达A,它将无法响应A(并且ping操作将失败)。

尝试从C pingA。如果失败,则在设备C中添加到计算机A的路由。

希望获得帮助。

编辑

这是您的拓扑结构吗?

Topology

由于B连接到所有其他设备,它将知道如何到达它们。您只需在B上启用转发并将A和C的默认网关定义为B。