tcpdump 冻结,没有网络连接时无法正确捕获

tcpdump 冻结,没有网络连接时无法正确捕获

当我没有任何互联网连接并且想要捕获本地计算机之间的网络时,tcpdump 的行为如下:

1.我使用以下命令启动 tcpdump:

tcpdump -ixenbr0

2. 运行后,tcpdump 进入冻结模式约 1-2 分钟,之后捕获一些数据包并再次冻结,然后再次捕获一些数据包,同样的情况反复发生。

我甚至无法使用 ctrl+c 退出 tcpdump 或使用killall tcpdump命令终止 tcpdump 进程。

网络中的所有计算机都存在此问题,不只是一台。

但是当我将网络连接到互联网时,tcpdump 工作正常。互联网连接一切正常。这对我来说似乎很奇怪。

我也尝试了 -l,但没有成功。

我正在使用 Ubuntu 14.04。Tcpdump 版本是 4.5.1。

谁知道出了什么问题?

答案1

当我没有任何互联网连接时

...

tcpdump 进入冻结模式大约 1-2 分钟,此后它会捕获一些数据包并再次冻结,然后再次捕获一些数据包,并且同样的事情一遍又一遍地发生。

您在没有的情况下运行它-w,因此,它不是将原始数据包数据写入文件,而是剖析数据包并打印它们的摘要。

这意味着,对于 IP 数据包,它会尝试报告数据包的源 IP 地址和目标 IP 地址。

如果没有-n,它会尝试查找与地址对应的主机名,这意味着,除非地址在 hosts 文件中,否则它会尝试使用 DNS 来查找名称。如果您没有任何 Internet 连接,但本地 DNS 解析器认为它应该搜索 Internet DNS 服务器,它会尝试联系这些服务器并等待答案或超时。它不会得到答案,因此它必须等待超时。

一旦发生超时,它会被告知“我没有该地址的主机名”,并且只打印数据包信息,以数字形式显示地址。然后,当下一个数据包到达时,如果有 IP 地址,也会发生同样的事情。

-n禁用查找 IP 地址的名称,因此不会出现任何超时。

相关内容