
Netfilter框架由Rusty Russell于1998年创建,作为Linux内核的一个子系统,在2000年3月被合并进内核。它采用模块化设计,具有良好的可扩展性,为各种网络服务提供结构化底层框架。在网络堆栈的数据包遍历过程中,您可以在各个点(称为netfilter hooks)注册回调函数,对数据包执行多种操作,如过滤、地址或端口转换、丢弃数据包、日志记录等。
以下是Netfilter框架相关的核心工具和组件:
-
ebtables:一个用于在Linux内核中设置和维护以太网帧检查规则表的应用程序。它与iptables类似,但由于以太网协议较简单,因此复杂度较低。
-
arptables:一个用户空间工具,用于在Linux内核中建立和维护ARP规则表,检查ARP帧。其功能类似于iptables,但结构更简单。
-
iptables和ip6tables:主要用于建立、维护和检查Linux内核中IPv4和IPv6包过滤规则表。支持多个表,每个表包含内置链和用户自定义链。
-
nftables:Netfilter的新一代包过滤组件,作为用户空间实用程序,取代了iptables、ip6tables、arptables和ebtables。
-
conntrack:为Netfilter连接跟踪系统提供全功能用户空间接口,可用于搜索、列表、检查和维护内核中的连接跟踪子系统。
-
ulogd:一个用户空间日志守护进程,专门用于netfilter/iptables相关的日志记录。
-
nf_log:主要提供Netfilter的日志记录服务。通过nft添加规则后,Netfilter抛出日志,用户态的ulogd2程序监听并读取这些日志。
-
nf_queue:基于Netfilter框架的ip_queue/nfnetlink_queue机制,常用于将数据包上送给用户空间应用程序处理,支持用户态防火墙开发。
|