如上图,iptables命令风格,第一部分指定表名,第二部分指定对规则的增删改查的动作。
第三部分指定规则的匹配条件,第四部分指定数据包匹配该规则时执行的动作。
其中:命令的第一部分第二部分没啥好说的了,现在总结第三部分,匹配条件。
一:-s 匹配报文的原地址
#示例如下
1.匹配多个IP
iptables -t filter -I INPUT -s 192.168.1.111,192.168.1.118 -j DROP
2.匹配一个网段
iptables -t filter -I INPUT -s 192.168.1.0/24 -j ACCEPT
3.匹配该网段以外的
iptables -t filter -I INPUT ! -s 192.168.1.0/24 -j ACCEPT
二:-d匹配报文目标地址
#示例如下
iptables -t filter -I OUTPUT -d 192.168.1.111,192.168.1.118 -j DROP
iptables -t filter -I INPUT -d 192.168.1.0/24 -j ACCEPT
iptables -t filter -I INPUT ! -d 192.168.1.0/24 -j ACCEPT
三:-p匹配报文协议类型
#示例如下
iptables -t filter -I INPUT -p tcp -s 192.168.1.146 -j ACCEPT
iptables -t filter -I INPUT ! -p udp -s 192.168.1.146 -j ACCEPT
四:-i匹配报文流入的网卡
该匹条件进匹配报文流入的网卡,所以在output链和postrouting链中不能使用该选项。
#示例如下
iptables -t filter -I INPUT -p icmp -i eth4 -j DROP
iptables -t filter -I INPUT -p icmp ! -i eth4 -j DROP
五:-o匹配报文流出的网卡
匹配报文将要从哪个网络接口流出本机,匹配条件只是用于匹配报文流出的网卡,所以在input链与prerouting中不能使用这个选项
#示例如下
iptables -t filter -I OUTPUT -p icmp -o eth4 -j DROP
iptables -t filter -I OUTPUT -p icmp ! -o eth4 -j DROP
六:拓展匹配条件
tcp常用拓展模块
-p tcp -m tcp --sport用于匹配tcp协议报文的源端口,可以使用冒号指定一个连续的端口范围
-p tcp -m tcp --dport用于匹配tcp协议报文的目标端口,可以使用冒号指定连续端口范围
其中-m tcp可以省略,
#示例如下
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp --sport 22 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 22:25 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport :22 -j REJECT
iptables -t filter -I INPUT -s 192.168.1.146 -p tcp -m tcp --dport 80: -j REJECT
iptables -t filter -I OUTPUT -d 192.168.1.146 -p tcp -m tcp ! --sport 22 -j ACCEPT