有时候我们需要模拟网络丢包,可以用一台Linux 作为网络通信的一方或网关, 在Linux上用 iptables 创建防火墙规则, 阻止某些包,而规则的有效时间可用sleep来设置,到了预期时间,把规则删除。 如此循环。用shell语言实现如下
iptables -A OUTPUT -p tcp --dst 111.111.11.1 --dport 8739 -j DROP
sleep 5
iptables -D OUTPUT -p tcp --dst 111.111.11.1 --dport 8739 -j DROP
常用规则解析
查看
iptables -nvL --line-number
- -L 查看当前表的所有规则,默认查看的是filter表,如果要查看NAT表,可以加上-t NAT参数
- -n 不对ip地址进行查,加上这个参数显示速度会快很多
- -v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
- --line-number 显示规则的序列号,这个参数在删除或修改规则时会用到
添加
添加规则有两个参数:-A和-I。其中-A是添加到规则的末尾;-I可以插入到指定位置,没有指定位置的话默认插入到规则的首部 ,例如:添加一条规则到第2行
iptables -I INPUT 2 -s 111.111.11.1 -j DROP
删除
删除用参数: -D
iptables -D INPUT -s 111.111.11.1 -j DROP
有时候有些规则太长,删除时要写一大串,既浪费时间又容易写错,这时我们可以先使用–line-numbers查看出该条规则的行号,再通过行号删除
iptables -D INPUT 2
修改
修改使用R参数 ,将第三行改为accept
iptables -R INPUT 3 -j ACCEPT