无法使用 tcpdump 命令收集 Google PING 数据

无法使用 tcpdump 命令收集 Google PING 数据

在 Udemy 上学习 Linux 课程后,我对此感到困惑。我在 CentOS7 中使用的命令是:

tcpdump -i enp0s3 | grep 216.25.212.58

216.25.212.58是我使用命令时显示的IP:

ping www.google.com

我在 Oracle VM 上使用虚拟机,并且我期待一些 ICMP 请求,因为我在另一个重复会话上打开了 pinger,但是命令卡住了并且没有返回任何内容,就像在讲座上一样。

控制台

谁能告诉我问题可能是什么以及如何获取一些返回数据?


在这种情况下,要查看任何 icmp 转储,

我将命令改为简单如下:

tcpdump -i enp0s3 icmp

现在它返回:

[root@mycentos7vm ~]# tcpdump -i enp0s3 icmp

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), capture size 262144 bytes
06:49:19.326067 IP mycentos7vm > lhr25s33-in-f4.1e100.net: ICMP echo request, id 21856, seq 1, length 64
06:49:19.339880 IP lhr25s33-in-f4.1e100.net > mycentos7vm: ICMP echo reply, id 21856, seq 1, length 64
06:49:20.328544 IP mycentos7vm > lhr25s33-in-f4.1e100.net: ICMP echo request, id 21856, seq 2, length 64
06:49:20.341887 IP lhr25s33-in-f4.1e100.net > mycentos7vm: ICMP echo reply, id 21856, seq 2, length 64
06:49:21.330406 IP mycentos7vm > lhr25s33-in-f4.1e100.net: ICMP echo request, id 21856, seq 3, length 64
06:49:21.340807 IP lhr25s33-in-f4.1e100.net > mycentos7vm: ICMP echo reply, id 21856, seq 3, length 64
06:49:22.332153 IP mycentos7vm > lhr25s33-in-f4.1e100.net: ICMP echo request, id 21856, seq 4, length 64
06:49:22.342174 IP lhr25s33-in-f4.1e100.net > mycentos7vm: ICMP echo reply, id 21856, seq 4, length 64
06:49:23.333899 IP mycentos7vm > lhr25s33-in-f4.1e100.net: ICMP echo request, id 21856, seq 5, length 64
06:49:23.352133 IP lhr25s33-in-f4.1e100.net > mycentos7vm: ICMP echo reply, id 21856, seq 5, length 64

这是在复制会话 ping 后返回的www.google.com

[root@mycentos7vm ~]# ping www.google.com
PING www.google.com (142.250.187.196) 56(84) bytes of data.
64 bytes from lhr25s33-in-f4.1e100.net (142.250.187.196): icmp_seq=1 ttl=117 time=12.6 ms
64 bytes from lhr25s33-in-f4.1e100.net (142.250.187.196): icmp_seq=2 ttl=117 time=13.6 ms
64 bytes from lhr25s33-in-f4.1e100.net (142.250.187.196): icmp_seq=3 ttl=117 time=9.85 ms
64 bytes from lhr25s33-in-f4.1e100.net (142.250.187.196): icmp_seq=4 ttl=117 time=12.3 ms
64 bytes from lhr25s33-in-f4.1e100.net (142.250.187.196): icmp_seq=5 ttl=117 time=10.1 ms

我的问题是:为什么这个 tcp 命令没有返回任何内容?

tcpdump -i enp0s3 | grep 142.250.187.196

新手:这是否与 Google 在 tcpdump 期间不透露其 IP 有关?

感谢大家的帮助!

答案1

我的问题是:为什么这个 tcp 命令没有返回任何内容?

tcpdump -i enp0s3 | grep 142.250.187.196

因为没有提及您可以亲眼看到,tcpdump 的输出中有“142.250.187.196”。

相反,tcpdump 显示数据包来自“lhr25s33-in-f4.1e100.net”,这是 142.250.187.196 的“反向 DNS”查找。

grep 只处理文本,并且只搜索纯文本匹配项;它不会尝试理解域或 IP 地址(或两者之间的关系)。如果 tcpdump 没有输出首先,一些文本,grep 不会凭空找到它。

新手:这是否与 Google 在 tcpdump 期间不透露其 IP 有关?

不,Google 无法“不透露其 IP”。IP 地址始终是已知的,因为 IP 数据包传递始终使用地址(而不是域名);如果操作系统不知道地址,它就无法发送数据包。

您所看到的是反向查找 –一个已知的 IP 地址。tcpdump 工具正在执行“反向 DNS“查找 IP 地址到其对应的域名,并故意只打印这些名称而不是原始地址(因为反向 DNS 标签应该更具描述性)。

简而言之,这主要是 tcpdump 决定从其输出中省略地址 - 并且,如果输入中不存在该文本,grep 就无法找到该文本。

您可以使用-ntcpdump 选项禁用反向 DNS 查找,并使其始终打印原始 IP 地址。(这通常也会使速度更快,因为 rDNS 查询有时会很慢。)

tcpdump -n -i enp0s3 | grep ...

但你实际上应该做的是使用tcpdump 捕获过滤器而不是基于文本的 grep,而是让 tcpdump 本身在生成输出之前匹配 IP 地址:

tcpdump -i enp0s3 "host 142.250.187.196"

答案2

在这种情况下,要查看任何 icmp 转储,

我将命令改为简单如下:

tcpdump -i enp0s3 icmp

现在它返回:[root@mycentos7vm ~]# tcpdump -i enp0s3 icmp

tcpdump:抑制详细输出,使用 -v 或 -vv 进行完整协议解码 监听 enp0s3,链路类型 EN10MB(以太网),捕获大小 262144 字节 06:49:19.326067 IP mycentos7vm > lhr25s33-in-f4.1e100.net:ICMP 回显请求,id 21856,序号 1,长度 64 06:49:19.339880 IP lhr25s33-in-f4.1e100.net > mycentos7vm:ICMP 回显答复,id 21856,序号 1,长度 64 06:49:20.328544 IP mycentos7vm > lhr25s33-in-f4.1e100.net:ICMP 回显请求,id 21856,序号 2,长度 64 06:49:20.341887 IP lhr25s33-in-f4.1e100.net > mycentos7vm:ICMP 回显答复,编号 21856,序号 2,长度 64 06:49:21.330406 IP mycentos7vm > lhr25s33-in-f4.1e100.net:ICMP 回显请求,编号 21856,序号 3,长度 64 06:49:21.340807 IP lhr25s33-in-f4.1e100.net > mycentos7vm:ICMP 回显答复,编号 21856,序号 3,长度 64 06:49:22.332153 IP mycentos7vm > lhr25s33-in-f4.1e100.net:ICMP 回显请求,id 21856,序号 4,长度 64 06:49:22.342174 IP lhr25s33-in-f4.1e100.net > mycentos7vm:ICMP 回显答复,id 21856,序号 4,长度 64 06:49:23.333899 IP mycentos7vm > lhr25s33-in-f4.1e100.net:ICMP 回显请求,id 21856,序号 5,长度 64 06:49:23.352133 IP lhr25s33-in-f4.1e100.net > mycentos7vm:ICMP 回显答复,id 21856,序号 5,长度64

这是在复制会话 ping 后返回的www.google.com

[root@mycentos7vm ~]# pingwww.google.com

www.google.com(142.250.187.196)56(84)字节数据。64 字节来自 lhr25s33-in-f4.1e100.net(142.250.187.196):icmp_seq=1 ttl=117 time=12.6 ms

来自 lhr25s33-in-f4.1e100.net (142.250.187.196) 的 64 字节:icmp_seq=2 ttl=117 时间=13.6 毫秒

来自 lhr25s33-in-f4.1e100.net (142.250.187.196) 的 64 字节:icmp_seq=3 ttl=117 时间=9.85 毫秒

来自 lhr25s33-in-f4.1e100.net (142.250.187.196) 的 64 字节:icmp_seq=4 ttl=117 时间=12.3 毫秒

来自 lhr25s33-in-f4.1e100.net (142.250.187.196) 的 64 字节:icmp_seq=5 ttl=117 时间=10.1 毫秒

我的问题是:为什么这个 tcp 命令没有返回任何内容?

tcpdump -i enp0s3 |复制代码 142.250.187.196

新手:这是否与 Google 在 tcpdump 期间不透露其 IP 有关?

感谢大家的帮助!

相关内容