共计 1966 个字符,预计需要花费 5 分钟才能阅读完成。
/ 位于 /sbin/iptables
四表五链
四表 filter. nat. mangle. raw
五链 INPUT. FORWARD. OUTPUT. PREROUTING. POSTROUTING
表的处理优先级 raw >mangle >nat >filter
filter:执行所有的过滤动作
nat:(端口映射,地址转换),所有网络地址转换都在 nat 上执行
mangle:用于数据包的修改
raw:加快封包穿越防火墙的速度,可提高防火墙性能
五个链的作用
INPUT: 处理入站数据包,通过路由表后目的地为本机
OUTPUT:由本级产生,向外转发
FORWARD:通过路由表后,目的地不为本机
PREROUTING:数据包进入路由表之前
POSTROUTING:在进行路由选择前处理数据包,数据包进入路由表之前
规则链之间的匹配顺序
入站数据:PREROUTING >INPUT
出站数据:OUTPUT >POSTROUTING
转发数据:PREROOUTING >FORWARD >POSTROUTING
1. 当数据包的目标地址是本机时
(1)数据包进入网络接口
(2)进入 NAT 表的 prerouting 链,根据需要做 DNAT
(3)进入 mangle 表的 prerouting 链,在这里根据需要改变数据包头内容(比如 TTL 值)
(4)进入路由判断,(进入本地还是转发)
(5)进入 mangle 表的 INPUT 链,在路由之后到达本地程序之前修改数据包头内容
(6)进入 filter 表的 INPUT 链,所有目标地址是本机的数据包都会经过这里
(7)到达本机应用程序处理
2. 当数据包的源地址是本机时、
(1)本机应用程序产生数据包
(2)路由判断
(3)进入 mangle 表的 OUTPUT 链,在这里可以根据需要改变包头内容
(4)进入 nat 表的 OUTPUT 链,根据需要对防火墙产产生的数据作 DNAT
(5)进入 filter 表的 OUTPUT 链,在这里可以对数据包的过滤条件进行设置
(6)进入 mangle 表的 PREROUTING 链,这里主要做 DNAT 动作
(7)进入 NAT 表的 PREROUTING 链,这里主要做 DNAT 动作
(8)离开本机
3. 经由本机转发的数据包(源、目标地址都不是本机)
(1)数据包进入网络接口
(2)mangle 表的 PREROUTING 链,在这里可以根据需要改变数据包内容(TTL 值)
(3)nat 表中 FORWARD 链,可根据需要对数据包做 DNAT
(4)mangle 表的 FORWARD 链,在这里数据包头内容被修改
(5)filter 表的 FORWARD 链,需要转发的数据包会到这里
(6)mangle 表的 PREROUTING 链
(7)nat 表的 POSTROUTING 链,在这里根据需要对数据包做 SNAT
(8)离开网络接口
Iptables 表和链的动作
filter 表主要用于过滤数据包,对数据包进行(ACCEPT DROP REJECT LOG RETURN)
filter 表包含:
INPUT 链,过滤所有目标地址是本机的数据包
FORWARD 链,过滤由本机转发的数据包
OUTPUT 链,过滤有本机产生的数据包
NAT 表主要用于网络地址转换
(1)DNAT,主要用于改变数据包目的地址,使包能重新路由到某台主机
(2)SNAT, 改变数据包的源地址,将源地址转换成公网地址
NAT 表包含三条链
(1)PREROUTING 链,在数据包到达防火墙的时候改变目标地址
(2)OUTPUT 链,可以改变数据包的目的地址
(3)POSTROUTING,在数据包离开防火墙时改变数据包源地址
MANGLE 表
mangle 表主要用于修改数据包,通过 mangle 表可以改变(TTL)等
mangle 表主要包含 5 条链
(1)PREROUTING、(2)POSTROUTING、(3)OUTPUT、(4)INPUT、(5)FORWARD、
推荐阅读:
iptables—包过滤(网络层)防火墙 http://www.linuxidc.com/Linux/2013-08/88423.htm
Linux 防火墙 iptables 详细教程 http://www.linuxidc.com/Linux/2013-07/87045.htm
iptables+L7+Squid 实现完善的软件防火墙 http://www.linuxidc.com/Linux/2013-05/84802.htm
iptables 的备份、恢复及防火墙脚本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm
Linux 下防火墙 iptables 用法规则详解 http://www.linuxidc.com/Linux/2012-08/67952.htm