我正在尝试监控网络中发生的事情,所以我尝试了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
或您想要监听的任何特定接口。