iptables由五个表和五个链以及规则组成
五个内置链:
INPUT,PREROUTING,FORWARD,OUTPUT和POSTROUTING
五个表:
filter表:过滤规则表,根据预定义的规则过滤符合的匹配条件,默认表
nat表:进行NAT转换
mangle表:修改数据标记位规则表
raw:关闭启用的连接跟踪机制,加快封包穿越防火墙速度
security:用于强制访问控制网络规则,由Linux安全模块实现
优先级高低:
security–>raw–>mangle–>nat—>filter
表和链的对应关系
数据包进入服务器后,首先是经过PREROUTING链,然后根据需求,如果是转发至本服务器的报文(需要CPU处理的),则转至INPUT链,如果是经过服务器(不需要CPU处理),则转至FORWARD链。
数据包出服务器比如经过POSTROUTING链,但是如果是服务器本机发出来的报文,那么还会经过OUTPUT链。
默认的是filter链
[root@centos7-1 ~]# iptables -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
通过-t指定相应的链
[root@centos7-1 ~]# iptables -vnL -t nat
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
可以看到每个链对应的表是不完全一样的