Netfilter/iptables 项目由 Rusty Russe 创建于1998年,并于 1999 年建立了 Netfilter Core team,并在此后负责维护此项目,同时也于2000年3月合并进了 linux 2.3.x 版本的 linux 内核。
Netfilter/iptables 有三部分组成,分别是Netfilter 框架/Iptables(内核空间)/Iptables 命令行工具(用户空间)。
Netfilter 是一个由Linux 内核提供的框架,可以进行多种网络相关的自定义操作。
例如:
- 无状态的报过滤(IPv4 and IPv6)
- 有状态的报过滤(IPv4 and IPv6)
- 网络地址转换(NAT/NAPT)
Netfilter 在 Linux 内核中表现为一系列的hook, 并允许Linux 内核模块注册为回调函数,Linux内核模块通过回调函数操作网络报文。
架构
Netfilterk框架是如何工作的?
Netfilter 一共提供了5个hook,分别位于linux 网络栈中的各个处理节点,如下图:
--->[NF_IP_PRE_ROUTING]--->[ROUTE]--->[NF_IP_FORWARD]--->[NF_IP_POST_ROUTING]--->
| ^
| |
|