linux防火墙iptables详细教程

2020-01-30 12:26:26王振洲

 粗略列出 filter 表所有链及所有规则

 iptables -t nat -vnL
 用详细方式列出 nat 表所有链的所有规则,只显示 IP 地址和端口号

 iptables -t nat -vxnL PREROUTING
 用详细方式列出 nat 表 PREROUTING 链的所有规则以及详细数字,不反解
3.3 匹配条件
流入、流出接口(-i、-o)
来源、目的地址(-s、-d)
协议类型     (-p)
来源、目的端口(--sport、--dport)
3.3.1 按网络接口匹配
-i <匹配数据进入的网络接口>
例如:
 -i eth0
 匹配是否从网络接口 eth0 进来

 -i ppp0
 匹配是否从网络接口 ppp0 进来

-o 匹配数据流出的网络接口
例如:
 -o eth0
 -o ppp0
3.3.2 按来源目的地址匹配
-s <匹配来源地址>
 可以是 IP、NET、DOMAIN,也可空(任何地址)
例如:
 -s 192.168.0.1   匹配来自 192.168.0.1 的数据包
 -s 192.168.1.0/24 匹配来自 192.168.1.0/24 网络的数据包
 -s 192.168.0.0/16 匹配来自 192.168.0.0/16 网络的数据包

-d <匹配目的地址>
 可以是 IP、NET、DOMAIN,也可以空
例如:
 -d 202.106.0.20   匹配去往 202.106.0.20 的数据包
 -d 202.106.0.0/16 匹配去往 202.106.0.0/16 网络的数据包
 -d www.abc.com   匹配去往域名 www.abc.com 的数据包

3.3.3 按协议类型匹配
-p <匹配协议类型>
 可以是 TCP、UDP、ICMP 等,也可为空
例如:
 -p tcp
 -p udp
 -p icmp --icmp-type 类型
 ping: type 8     pong: type 0
3.3.4 按来源目的端口匹配
--sport <匹配源端口>
 可以是个别端口,可以是端口范围
例如:
 --sport 1000     匹配源端口是 1000 的数据包
 --sport 1000:3000 匹配源端口是 1000-3000 的数据包(含1000、3000)
 --sport :3000     匹配源端口是 3000 以下的数据包(含 3000)
 --sport 1000:     匹配源端口是 1000 以上的数据包(含 1000)

--dport <匹配目的端口>
 可以是个别端口,可以是端口范围
例如:
 --dport 80       匹配源端口是 80 的数据包
 --dport 6000:8000 匹配源端口是 6000-8000 的数据包(含6000、8000)
 --dport :3000     匹配源端口是 3000 以下的数据包(含 3000)
 --dport 1000:     匹配源端口是 1000 以上的数据包(含 1000)