在 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
如果支持,可以直接从驱动程序请求数据。 (并包括内核不跟踪的统计信息。)