tcpdump 未捕获任何数据包

tcpdump 未捕获任何数据包

我正在尝试监控网络中发生的事情,所以我尝试了tcpdump命令。我刚刚开始学习使用它,所以我想尝试一下。

我的问题是,我无法仅使用不带任何参数的 tcpdump 捕获任何数据包。

当我输入时tcpdump,我得到了这个答案:

tcpdump:链接类型 BLUETOOTH_HCI_H4_WITH_PHDR 不支持数据包打印:使用 -w

因此我尝试了 tcpdump:tcpdump -w archivito我得到了这个:

监听蓝牙 0,链接类型为 BLUETOOTH_HCI_H4_WITH_PHDR(蓝牙 HCI UART 传输层加伪头),

捕获大小 65535 字节

捕获 0 个数据包

过滤器接收到 62 个数据包

内核丢弃了 0 个数据包

因此 archivito 文件是空的,所以我尝试过:tcpdump port 80并且我得到了这个答复:

tcpdump:蓝牙链路层类型过滤未实现

我如何从 tcpdump 获得一些输出?我已阅读有关此命令的手册页,但不明白为什么它对我不起作用。

因此,我尝试了一下sudo tcpdump -w archivito,得到了这个输出:

tcpdump:警告:eth0:未分配 IPv4 地址 tcpdump:正在 eth0 上监听,链接类型 EN10MB(以太网),捕获大小 65535 字节

它在那里停留了一段时间,但我得到的只是

捕获 0 个数据包

过滤器收到 0 个数据包

内核丢弃了 0 个数据包

最后我试了一下sudo tcpdump -i any,成功了(捕获了几个数据包)。但为什么只有要求它监控所有接口时才有效?

答案1

根据tcpdump手册页:

   -i     Listen  on  interface.   If  unspecified, tcpdump searches the system interface list for the lowest numbered, configured up interface (excluding loop‐
          back), which may turn out to be, for example, ``eth0''.

          On Linux systems with 2.2 or later kernels, an interface argument of ``any'' can be used to capture packets from all interfaces.  Note  that  captures
          on the ``any'' device will not be done in promiscuous mode.

因此,查看您的输出,似乎第一个可用的接口bluetooth0不允许数据包打印,因此出现错误。

但是,如果将-i标志指定为any,您将选择任何允许数据包打印的可用接口,这就是它在这种情况下起作用的原因。

答案2

我现在不在它前面,但是

tcpdump 有一个开关可以列出所有接口,然后您可以具体指定您想要的接口。尝试一下,tcpdump --list-interfaces 然后您可以执行例如tcpdump -i eth0或您想要监听的任何特定接口。

相关内容