使用 -w 时,tcpdump 丢失大多数数据包

使用 -w 时,tcpdump 丢失大多数数据包

当我使用时,$ sudo tcpdump -i ens160我可以看到我的虚拟机中有很多噪音。比如几秒钟内有 150 个包。大部分在端口上64651。我不知道那是什么噪音,所以我想弄清楚。

所以我使用$ sudo tcpdump -i ens160 -w noise.pcap。现在我在 30 秒内可能收到 10 个数据包,其中没有一个是针对端口 64651 的,只是 ARP 协议。

我试过
$ sudo tcpdump -i ens160 -w noise.pcap -U
$ sudo tcpdump -i ens160 -B 10000 -w noise.pcap -U
$ sudo tcpdump -i ens160 -B 10000 -w noise.pcap -U
$ sudo tcpdump -i ens160 -w noise.pcap port 64651

没有成功。即使我这样做了$ sudo tcpdump -i ens160 >> noise.txt,我在屏幕上看到的数据也没有保存到文件中。

捕获的结果总是0 packets dropped

对此有什么想法吗?

答案1

tcpdump 在重定向到文件时没有捕获任何内容的原因是因为有问题的数据包与显示 tcpdump 的输出。第一个数据包可能是由您按下“Enter”键后的 TCP ACK 引起的;tcpdump 通过 SSH 打印第一个数据包会导致第二个数据包;打印的第二个数据包会导致第三个数据包,依此类推。每个捕获的数据包都会再次生成一个新数据包。

为了避免在交互式捕获期间出现这种情况,请过滤掉 SSH 数据包,例如not tcp port 2222。如果您想要更精确的过滤器,可以使用 $SSH_CONNECTION 来查找本地端口(例如,如果您仍然想查看其他SSH 数据包(但不是您自己的):

read -r rhost rport lhost lport <<< "$SSH_CONNECTION"
tcpdump -i ens160 "not (host $rhost and host $lhost and tcp port $rport and tcp port $lport)"

Windows 上的 Wireshark 用于检测何时通过远程桌面运行并自动选择过滤器not port 3389以避免这种情况。

相关内容