简介
- iptables由5个表(table)和5个链(chain)以及一些规则组成。
五表和五链介绍
-
链chain
- 内置链:每个内置链对应一个勾子函数。
- 自定义链:对于内置链的扩展和补充,可以更灵活的规定组织管理机制;只有hook勾子调用自定义链时才生效。
-
五个内置链分别是:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING。
-
五个表table:filter、nat、mangle、raw、security。
- filter:过滤规则表,根据预定义的规则过滤符合条件的数据包,此为默认表。
- nat:network address translation,地址转换规则表。
- mangie:修改数据标记位规则表。
- raw:关闭启动连接跟踪机制,加快封包穿越防火墙速度。
- security:用于强制访问控制(MAC)网络规则,有Linux安全模块(如:SElinux)实现。
-
五个表的优先级由高到低的顺序
- security > raw > mangie > nat > filter
-
表和链的对应关系
-
查看表中存在几个链
iptables -t $TABLE -nvL
内核中数据包的传输过程
- 当一个数据包进入网卡,数据包首先进入盘PREROUTING链,内核根据数据包的IP判断是否要转送出去。
- 如果数据包是要进入本机的就会继续向上移动,到达INPUT链。数据包进入INPUT链后,任何程序都会收到它。本机上运行的程序可以发送数据包,这些数据包经过OUTPUT,然后到达POSTROUTING链输出。
- 如果数据包要转发出去,且内核允许转发数据包会向右移动,经过FORWARD链,然后到达POSTROUTING链输出。