为了在我的 Linux 机器上模拟丢包,我提供了以下几行。
# for randomly dropping 10% of incoming packets:
iptables -A INPUT -m statistic --mode random --probability 0.1 -j DROP
# and for dropping 10% of outgoing packets:
iptables -A OUTPUT -m statistic --mode random --probability 0.1 -j DROP
之后我运行 ping some_ip_address,当我终止它时,可以看到行
100 packets transmitted, 84 received, 16% packet loss, time 99137ms
但是当我运行 ifconfig 命令时,我看到 packet drop filled 仍然是零
RX packets:16007 errors:0 dropped:0 overruns:0 frame:0
TX packets:16207 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
在这里,您可以看到 Rx 和 Tx 数据包行中的 Dropped 字段仍然为零。
谁能告诉我为什么在 ifconfig 下没有捕获丢包?
最佳答案
这是因为 iptables 和 ifconfig 统计指的是协议(protocol)栈中的不同层。 ifconfig 统计信息用于 NIC(物理层和 MAC 层),而 iptables 规则在 NIC 接收到帧并将其传送到内核(INPUT)或在数据包传送到协议(protocol)栈中的第 2 层(用于 OUTPUT)之前执行。
关于networking - 为什么在ifconfig下不抓包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21113846/