结构
iptables -> Tables -> Chains -> Rules. 简单地讲,tables由chains组成,而chains又由rules组成。
如下图所示:

五张表
这五张表是对 iptables 所有规则的逻辑集群且是有顺序的,当数据包到达某一条链时会按表的顺序进行处理,表的优先级为:
1 | raw > mangle > nat > filter > security |
- filter 表:iptables的默认表,用于控制到达某条链上的数据包是继续放行、直接丢弃(drop)还是拒绝(reject)。
- nat 表:network address translation 网络地址转换,用于修改数据包的源地址和目的地址。
- mangle 表:用于修改数据包的 IP 头信息。
- raw 表:iptables 是有状态的,其对数据包有链接追踪机制,连接追踪信息在 /proc/net/nf_conntrack 中可以看到记录,而 raw 是用来去除链接追踪机制的。
- security 表:最不常用的表,用在 SELinux 上。
大多数情况下仅需要使用 filter
和 nat
表。
五条链
- PREROUTING 链:数据包进入路由之前,可以在此处进行 DNAT。
- INPUT 链:一般处理本地进程的数据包,目的地址为本机。
- FORWARD 链:一般处理转发到其他机器或者 network namespace 的数据包。
- OUTPUT 链:原地址为本机,向外发送,一般处理本地进程的输出数据包。
- POSTROUTING 链:发送到网卡之前,可以在此处进行 SNAT。
每条链链与表的关系如下:
- PREROUTING 链 :raw, mangle, nat
- INPUT 链 :mangle, nat, filter
- FORWARD 链 :raw, mangle, nat, filter
- OUTPUT 链 :mangle, filter
- POSTROUTING 链 :mangle, nat
iptables 的工作流程如下图所示:

永久生效
Debain
1 | 1.配置完iptables策略后,使用iptables-save保存策略文件。 |
常见参数作用
收集各种常见的iptables参数作用
-A PREROUTING -m addrtype –dst-type LOCAL -j DOCKER
-m addrtpe
: Address type match扩展模块--dst-type
: 按源地址或目标地址类型去做匹配,地址类型有UNSPEC、UNICAST、LOCAL、BROADCAST、ANYCAST、MULTICAST、BLACKHOLE、UNREACHABLE、PROHIBIT、THROW、NAT
作用:把目标地址类型属于主机系统的本地网络地址的数据包,在数据包进入NAT表PREROUTING链时,都让它们直接jump到一个名为DOCKER的链。
-j MARK –set-xmark 0x40000/0x4000
-j MARK
: 执行mark操作--set-xmark
: 简单可理解为设置特殊格式的标签
mark用于标记数据包。在一些不同的table或者chain之间需要协同处理某一个数据包时尤其有用
作用:设置标签为0x40000/0x4000
推荐阅读系列
iptables详解(2):iptables实际操作之规则查询
iptables详解(4):iptables匹配条件总结之一
iptables详解(5):iptables匹配条件总结之二(常用扩展模块)
iptables详解(6):iptables扩展匹配条件之’–tcp-flags’
iptables详解(7):iptables扩展之udp扩展与icmp扩展
iptables详解(8):iptables扩展模块之state扩展
iptables详解(14):iptables小结之常用套路
iptables入门:iptables构架、基本命令及扩展(功能)简介
iptables: SNAT, DNAT, MASQUERADE的联系与区别
iptables详细教程:基础、架构、清空规则、追加规则、应用实例
iptables应用:NAT、数据报处理、清空iptables规则