ps: iptables只是Linux防火墙的管理工具而已。真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内部结构。
四表五链概念:
- filter表——过滤数据包
- Nat表——用于网络地址转换(IP、端口)
- Mangle表——修改数据包的服务类型、TTL、并且可以配置路由实现QOS
- Raw表——决定数据包是否被状态跟踪机制处理
- INPUT链——进来的数据包应用此规则链中的策略
- OUTPUT链——外出的数据包应用此规则链中的策略
- FORWARD链——转发数据包时应用此规则链中的策略
- PREROUTING链——对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
- POSTROUTING链——对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)
下图为精简后的数据流向:
iptables规则添加,示例:
# 允许访问22端口 iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s 10.159.1.0/24 --dport 22 -j ACCEPT
注:-s后可以跟IP段或指定IP地址
iptables -I INPUT -p tcp --dport 45000:45010 -j ACCEPT
iptables -I INPUT -p tcp -m state --state NEW -m tcp -s 192.168.11.0/24 -j ACCEPT允许该网段的所有端口
iptables -L INPUT -n --line-number 查看INPUT链规则,并显示行号。
iptables -D INPUT 1 删除INPUIT链第一行规则
#屏蔽单个IP的命令是 iptables -I INPUT -s 123.45.6.7 -j DROP
docker的iptables
删除docker的nat iptables -t nat -D DOCKER ! -i docker0 -p tcp -m tcp --dport 33609 -j DNAT --to-destination 172.17.0.2:3306
iptables -t nat -A DOCKER ! -i docker0 -s 192.168.11.201 -p tcp -m tcp --dport 33609 -j DNAT --to-destination 172.17.0.2:3306
创建链 iptables -t nat -N DOCKER
删除链 iptables -t nat -X DOCKER
在链中加入规则iptables -t nat -A DOCKER -p tcp -m tcp --dport 1194 -j DNAT --to-destination 172.17.0.2:1194
删除nat表的DOCKER链的第一条规则 iptables -t nat -D DOCKER 1