我知道我可以使用tc和netem来做
tc qdisc add dev eth0 root netem loss 50%
这将在所有eth0流量中丢弃50%的数据包。但是,我想指定一个协议(UDP,TCP等),因此只会删除此协议的数据包。
答案 0 :(得分:8)
这是iptables的烦人功能。即使文档说DROP默默地将数据包丢弃在地板上,它仍会告诉调用程序,导致sendmsg(或其他)将errno设置为ENETUNREACH或EPERM。似乎没有一个功能“没有真正默默地丢弃数据包,也没有告诉任何人这个”。
我找到了以下解决方法:但是如果数据包将离开本地计算机,您可以在mangle表中将TTL设置为0:
iptables -t mangle -A SomeChain -m ttl -j TTL --ttl-gt 0 --ttl-set 0
我已成功使用它来处理DoS反射攻击。
答案 1 :(得分:4)
使用iptables - 它有一个概率选项,允许你这样做,例如:
iptables -A INPUT -m statistic -p tcp --mode random --probability 0.5 -j DROP
调整各种值以匹配所需的流量/方向/概率。