注意:--sport 和 --dport 必须配合 -p 参数使用
3.3.5 匹配应用举例
1、端口匹配
-p udp --dport 53
匹配网络中目的地址是 53 的 UDP 协议数据包
2、地址匹配
-s 10.1.0.0/24 -d 172.17.0.0/16
匹配来自 10.1.0.0/24 去往 172.17.0.0/16 的所有数据包
3、端口和地址联合匹配
-s 192.168.0.1 -d www.abc.com -p tcp --dport 80
匹配来自 192.168.0.1,去往 www.abc.com 的 80 端口的 TCP 协议数据包
注意:
1、--sport、--dport 必须联合 -p 使用,必须指明协议类型是什么
2、条件写的越多,匹配越细致,匹配范围越小
3.4 动作(处理方式)
ACCEPT
DROP
SNAT
DNAT
MASQUERADE
3.4.1 -j ACCEPT
-j ACCEPT
通过,允许数据包通过本链而不拦截它
类似 Cisco 中 ACL 里面的 permit
例如:
iptables -A INPUT -j ACCEPT
允许所有访问本机 IP 的数据包通过
3.4.2 -j DROP
-j DROP
丢弃,阻止数据包通过本链而丢弃它
类似 Cisco 中 ACL 里的 deny
例如:
iptables -A FORWARD -s 192.168.80.39 -j DROP
阻止来源地址为 192.168.80.39 的数据包通过本机
3.4.3 -j SNAT
-j SNAT --to IP[-IP][:端口-端口](nat 表的 POSTROUTING 链)
源地址转换,SNAT 支持转换为单 IP,也支持转换到 IP 地址池
(一组连续的 IP 地址)
例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24
-j SNAT --to 1.1.1.1
将内网 192.168.0.0/24 的原地址修改为 1.1.1.1,用于 NAT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24
-j SNAT --to 1.1.1.1-1.1.1.10
同上,只不过修改成一个地址池里的 IP
3.4.4 -j DNAT
-j DNAT --to IP[-IP][:端口-端口](nat 表的 PREROUTING 链)
目的地址转换,DNAT 支持转换为单 IP,也支持转换到 IP 地址池
(一组连续的 IP 地址)
例如:
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80
-j DNAT --to 192.168.0.1
把从 ppp0 进来的要访问 TCP/80 的数据包目的地址改为 192.168.0.1
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 81
-j DNAT --to 192.168.0.2:80
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80
-j DNAT --to 192.168.0.1-192.168.0.10
3.4.5 -j MASQUERADE
-j MASQUERADE
动态源地址转换(动态 IP 的情况下使用)
例如:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
将源地址是 192.168.0.0/24 的数据包进行地址伪装
3.5 附加模块
按包状态匹配 (state)
按来源 MAC 匹配(mac)










