情况是这样的 - 服务器上有一个脚本可以 ping 到某个地方,但我不知道到哪里。我想看看这个 ping 是在哪台机器上进行的,以及为什么会返回FAILED
。
我所做的是在一个终端中打开 tcpdump,同时在第二个终端中打开 ping 的脚本,但我不确定是否捕获了实际的 ping。
这是我使用的命令
tcpdump -w - | tee ping.pcap | tcpdump -r -
这是这样做的正确方法还是还有其他方法?
编辑:
问题是,当我启动 tcpdump 时,有大量流量,而我无法识别哪一个来自此 ping...
答案1
尝试:
tcpdump -i eth0 icmp
这将列出ping
接口上的流量eth0
。
答案2
您可以使用tcpdump -n icmp
它来过滤 ping 请求和回复。我添加了-n
开关以防止名称查找。您的主机中可能有多个接口,因此可能需要添加开关-i ethX
来指定正确的接口。
请注意,过滤器(在本例中为 icmp)应该是命令的最后部分。
答案3
在使用 unix/linux 命令之前,请务必尝试阅读它们的手册页。 tcpdump 命令有不同的选项。探索所有这些都是非常有趣的。
您需要具有 root 访问权限才能使用 tcpdump 命令捕获转储。
例子:
tcpdump -i any -s 0 -v -w ping.pcap
上述命令将捕获所有可用以太网接口上的所有数据包,快照长度不受限制,详细,并将捕获结果写入文件 ping.pcap。
同样,您可以使用内联过滤器来过滤特定主机的数据包。
例子:
tcpdump -i any -s 0 -v -w ping.pcap 135.250.80.55
上述命令将捕获从 135.250.80.55 到 135.250.80.55 的所有数据包。