在 ifconfig 中看到但在 tcpdump 上看不到的数据包

在 ifconfig 中看到但在 tcpdump 上看不到的数据包

在 ifconfig 上,我可以看到发送/接收的数据包数量以及 tx/rx 值。当该接口处于混杂模式时,如果我在该接口上打开 tcpdump,我应该会看到该接口上发送/接收的所有数据包,对吗?

使用:

tcpdump -XX -e -n -s0 -i <iface>

(选项中可能有冗余:p)

但我没有看到所有发送的数据包。有任何想法吗?

编辑:另外,我阅读了 ifconfig 手册,它写道:

“Ifconfig 用于配置驻留在内核的网络接口。”

那么,ifconfig 在内核级别读取 tx/rx 对吗?有什么方法可以在驾驶员级别获取这些读数吗?

编辑2:另外,驱动程序可以编程为将数据包发送到内核和正在运行的程序吗?

编辑3:我可以制作一个嗅探程序吗任何在接口上传递的字节,无论其格式如何?也许 tcpdump 没有给我数据包,因为它无法识别它们的格式。

答案1

尝试检查 iptables 是否阻止流量流出。使用 iptables --list 查看并 /etc/init.d/iptables stop 卸载所有规则。

答案2

tcpdump得到副本来自网络堆栈高层的数据包——大约是它们从驱动程序传递到内核的地方。 (来源就在那里。去看看。)我不知道您正在查看哪些 tx/rx 统计信息,也不知道您的网卡的特定驱动程序,所以我不能说它们来自哪里。ethtool如果支持,可以直接从驱动程序请求数据。 (并包括内核不跟踪的统计信息。)

相关内容