Linux防火墙 - netfilter的四表五链概述
iptables作为Linux发行版自带的防火墙管理工具,通过调用内核netfilter模块实现流量的转发、控制、跟踪功能,是Linux内核中实现包过滤的内部结构。
四表五链概念
四表:filter、nat、mangle、raw
五链:PREROUTING、FORWARD、INPUT、OUTPUT、POSTROUTING
四表:
filter表——涉及FORWARD、INPUT、OUTPUT三条链,多用于本地和转发过程中数据过滤;
Nat表——涉及PREROUTING、OUTPUT、POSTROUT三条链,多用于源地址/端口转换和目标地址/端口的转换;
Mangle表——涉及整条链,可实现拆解报文、修改报文、重新封装,可常见于IPVS的PPC下多端口会话保持。
Raw表——涉及PREROUTING和OUTPUT链,决定数据包是否被状态跟踪机制处理,需关闭nat表上的连接追踪机制。
五链:
INPUT链——进入本地的数据包应用此规则链中的策略;
OUTPUT链——流出本地的数据包应用此规则链中的策略;
FORWARD链——转发数据包时应用此规则链中的策略;
PREROUTING链——对数据包作路由选择前应用此链中的规则;
POSTROUTING链——对数据包作路由选择后(包含流出本地的二次路由)应用此链中的规则;
五个链也分别被形象的称为五个钩子(hook)函数。
Netfilter数据包从入到出的全流程:
借此图帮助理解netfilter实现机制。
常见数据流向:
流入: PREROUTING → INPUT
流出: OUTPUT → POSTROUTING
转发: PREROUTING → FORWARD → POSTROUTING
搞清netfilter流程对于我们理解iptables是很有帮助的,iptables只是一系列的规则生成器,而真正想要实现防火墙相关功能还是得要借助netfilter的处理机制。