Linux防火墙 - netfilter的四表五链概述

Linux防火墙 - netfilter的四表五链概述

iptables作为Linux发行版自带的防火墙管理工具,通过调用内核netfilter模块实现流量的转发、控制、跟踪功能,是Linux内核中实现包过滤的内部结构。

四表五链概念

四表:filter、nat、mangle、raw
五链:PREROUTING、FORWARD、INPUT、OUTPUT、POSTROUTING

Linux防火墙 - netfilter的四表五链概述
四表:
filter表——涉及FORWARD、INPUT、OUTPUT三条链,多用于本地和转发过程中数据过滤;
Nat表——涉及PREROUTING、OUTPUT、POSTROUT三条链,多用于源地址/端口转换和目标地址/端口的转换;
Mangle表——涉及整条链,可实现拆解报文、修改报文、重新封装,可常见于IPVS的PPC下多端口会话保持。
Raw表——涉及PREROUTING和OUTPUT链,决定数据包是否被状态跟踪机制处理,需关闭nat表上的连接追踪机制。

五链:
INPUT链——进入本地的数据包应用此规则链中的策略;
OUTPUT链——流出本地的数据包应用此规则链中的策略;
FORWARD链——转发数据包时应用此规则链中的策略;
PREROUTING链——对数据包作路由选择前应用此链中的规则;
POSTROUTING链——对数据包作路由选择后(包含流出本地的二次路由)应用此链中的规则;
五个链也分别被形象的称为五个钩子(hook)函数。

Netfilter数据包从入到出的全流程:
Linux防火墙 - netfilter的四表五链概述
借此图帮助理解netfilter实现机制。

常见数据流向:
流入: PREROUTING → INPUT
流出: OUTPUT → POSTROUTING
转发: PREROUTING → FORWARD → POSTROUTING

搞清netfilter流程对于我们理解iptables是很有帮助的,iptables只是一系列的规则生成器,而真正想要实现防火墙相关功能还是得要借助netfilter的处理机制。