为什么目标接口上无法捕获 ICMP 数据包?

为什么目标接口上无法捕获 ICMP 数据包?

我有一个如图所示的网络设置:

在此处输入图片描述

中央盒是一个网关(Ubuntu 15.10),它在各个网络(图片上仅显示一个 - lan0)和互联网之间中继数据包。

  • 网关:我可以 ping 通互联网上的所有接口和主机
  • laptop:我可以 ping 互联网上的所有接口和主机,除了192.168.0.254

我还不知道为什么无法 ping 通,这就是我捕获流量的原因。这不是我的问题,不过如果有人有想法,欢迎提出。所有接口都接受所有流量,并且所有接口之间都有转发

为了了解 ping 失败的原因,我捕获了三个测试

  1. 从 pinglaptop192.168.0.10

ping穿过去,但tcpdump -i int0 icmp没有显示任何捕获的数据包

  1. 从 pinglaptop192.168.0.254

ping 不通,tcpdump -i int0 icmp显示

13:26:28.032635 IP 10.10.10.93 > 192.168.0.254: ICMP echo request, id 1, seq 671, length 40
13:26:32.604606 IP 10.10.10.93 > 192.168.0.254: ICMP echo request, id 1, seq 672, length 40
  1. 从 pinglaptop8.8.8.8

ping 成功并tcpdump -i int0 icmp显示

14:02:52.016081 IP 192.168.0.10 > google-public-dns-a.google.com: ICMP echo request, id 1, seq 749, length 40
14:02:52.029388 IP google-public-dns-a.google.com > 192.168.0.10: ICMP echo reply, id 1, seq 749, length 40

我理解第二种情况(至少是捕获了回声请求的事实)。

为什么在第一种情况下 ping 通时没有捕获到数据包?

为什么在第三种情况下,捕获仅显示来自 192.168.0.10 的请求?来自哪里的请求laptop(我猜原因和上面一样)

答案1

为什么在第一种情况下 ping 通时没有捕获到数据包?

因为您在 int0 上捕获数据包,但数据包并未发送到 int0。笔记本电脑通过 lan0 将其发送到网关,网关说“192.168.0.10 - 嘿,那是我!”并在 lan0 上发回响应。它不需要将数据包转发到 192.168.0 网络上的另一台主机,因此不需要在 int0 上将其发送出去。

是的,int0伪装来自lan0互联网的流量。还有 DNAT 可以将端口重定向192.168.0.10到内部主机。

那么这也许可以解释“为什么在第三种情况下捕获仅显示来自 192.168.0.10 的请求?” - 来自笔记本电脑的请求在发送到 int0 之前可能已将其源 IP 地址修改为 192.168.0.10。

相关内容