一图看懂Linux网络核心:Netfilter框架全景解剖

374 阅读2分钟

Netfilter 框架由Rusty Russell 于 1998 年创建。它是linux内核的一个子系统,在2000年3月合并进了 linux 2.3.x 版本的 linux 内核,Netfilter采用模块化设计,具有良好的可扩充性,提供扩展各种网络服务的结构化底层框架,你可以在网络堆栈中的数据包遍历过程中的各个点(netfilter hooks)注册回调并对数据包执行各种操作,比如它允许你对数据报进行过滤、地址或端口转换、丢弃数据包、日志记录等。这些 netfilter 钩子为 netfilter 内核模块提供基础结构,这些模块注册回调以执行 netfilter 子系统的各种任务。

  1. ebtables是一个应用程序,用于设置和维护检查以太网帧的规则表(在Linux内核中)。它类似于iptables应用程序,但不那么复杂,因为以太网协议比IP协议简单得多。
  2. arptables是一个用户空间工具,用于在Linux内核中建立和维护ARP规则表。这些规则检查它们看到的ARP帧。arptables类似于iptables用户空间工具,但arptables没有那么复杂。
  3. iptables和ip6tables主要用于建立、维护和检查Linux内核中IPv4和IPv6包过滤规则表。可以定义几个不同的表。每个表包含许多内置链,也可以包含用户定义的链。
  4. nftables是Netfilter的新包过滤部分。NFT是一个新的用户空间实用程序,它取代了iptables、ip6tables、arptables和ebtables。
  5. conntrack实用程序为Netfilter连接跟踪系统提供了一个全功能的用户空间接口。该工具可用于搜索、列出、检查和维护Linux内核的连接跟踪子系统。
  6. ulogd是一个用户空间日志守护进程,用于netfilter/iptables相关的日志记录。
  7. nf_log,主要提供 Netfilter 的日志记录服务。使用 nft 添加规则,Netfilter 抛出日志,然后用户态的 ulogd2 程序监听读取这些日志后。
  8. nf_queue内核模块在 Netfilter 框架基础上提供的 ip_queue/nfnetlink_queue 机制,通常用于将数据包上送给用户空间的应用程序进行处理,从而使得基于用户态的防火墙开发成为可能。

技术文章持续更新,请大家多多关注呀~~
搜索微信公众号,关注我【 帽儿山的枪手 】