我提供了以下行,以便模拟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命令时,我看到数据包丢失仍为零
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数据包行中的丢弃字段仍为零。
任何机构都可以告诉我为什么在ifconfig下没有捕获丢包吗?
答案 0 :(得分:2)
这是因为iptables和ifconfig统计信息引用协议栈中的不同层。 ifconfig统计信息用于NIC(物理层和MAC层),而iptables规则执行一旦帧接收到NIC并传送到内核(INPUT)或在数据包传送到协议栈中的第2层(用于OUTPUT)之前执行。 / p>