我在这里介绍一下这两个命令的基本用法。
IPTABLE
断开198.18.16.2到本机的连接,我们可以用以下命令模拟:
iptables -A OUTPUT -d 198.18.16.2 -j REJECT
iptables -A INTPUT -d 198.18.16.2 -j REJECT
丢掉198.18.16.2到本机的9002断开的包,可以用以下命令模拟:
iptables -A OUTPUT -d 198.18.16.2 -p udp --dport 9002 -j REJECT
NETEM
首先使用ifconfig查看网卡信息,比如使用的网口是eth0。
将网卡加入监控列表:
sudo tc qdisc add dev eth0 root netem
设置丢包率:
sudo tc qdisc change dev eth0 root netem loss 5%
设置重发率:
sudo tc qdisc change dev eth0 root netem duplicate 5%
设置发乱序包
sudo tc qdisc change dev etho root netem gap 5 delay 5ms
最后参数设置为0表示恢复为初始状态。
在我的测试中,断开连接是用来测试heath check和断开正在传输数据的。丢包是用来测试Streaming包在移动网络中传输的。