为了在我的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下没有捕获到丢包?
发布于 2014-01-15 02:51:51
这是因为iptables和ifconfig统计信息引用协议栈中的不同层。ifconfig统计用于NIC (物理层和MAC层),而iptables规则在NIC接收到帧并传送到内核(输入)后执行,或者在数据包传送到协议栈中的第2层(用于输出)之前执行。
https://stackoverflow.com/questions/21113846
复制相似问题