iptables四表五链
iptables传输数据包的过程
- 当一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否是发往本机的。
- 如果数据包就是进入本机的,它就会沿着图向下移动到INPUT链。数据包到了INPUT链后,任何进程都会收到它。本机上运行的程序可以发送数据包,这些数据包会通过OUTPUT链,然后到达POSTROUTING链输出。
- 如果数据包是要转发出去的,且内核运行转发,数据包就会流向FORWARD链进行处理(是否转发拦截),然后到达POSTROUTING链(是否修改数据包的地址等)进行处理。
-
报文的链流向
- 到本机某进程的报文:
PREROUTING --> INPUT
- 由本机转发的报文:
PREROUTING --> FORWARD --> POSTROUTING
- 由本机的某进程发出报文(通常为响应报文):
OUTPUT --> POSTROUTING
- 到本机某进程的报文:
-
报文到达链后匹配表的优先顺序
Raw ==> mangle ==> nat ==> filter
四表
-
filter表:负责过滤功能,防火墙;内核模块:iptables_filter
-
nat表:网络地址转换功能;内核模块:iptables_nat
-
mangle表:拆解报文,作出修改,并重新封装的功能;内核模块:iptables_mangle
-
raw表:关闭nat表上启用的连接追踪机制;内核模块:iptables_raw
五链
- PREROUTING:在进行路由选择前处理数据包(做目标地址转换)
- INPUT:处理入站数据包
- FORWARD:处理转发数据包
- OUTPUT:处理出站数据包
- POSTROUTING:在进行路由选择后处理数据包(对数据链进行源地址转换)