官网:https://www.netfilter.org/
简单来来说 ,netfilter 是一个工作在内核空间的数据包过滤系统,iptables 是一个工作在用户控件。调用netfilter 的规则管理工具。
一 、什么是netfilter?
netfilter.org是 2.4.x及更高版本内核系列中包过滤框架软件的所在地。通常与netfilter.org相关的软件是。
该框架内的软件支持包过滤,网络地址[和端口]转换(NA [P] T)和其他数据包重整。它是以前的Linux 2.2.x 和Linux 2.0.x 系统的重新设计和大幅改进的后继者。
netfilter是Linux内核中的一组钩子,允许内核模块向网络堆栈注册回调函数。然后,对于遍历网络堆栈内的相应挂钩的每个数据包,回调注册的回调函数。
iptables是规则集定义的通用表结构。IP表中的每个规则都包含许多分类器(iptables匹配)和一个连接动作(iptables目标)。
netfilter,ip_tables,连接跟踪(ip_conntrack,nf_conntrack)和NAT子系统共同构建了框架的主要部分。
主要特点
- 无状态数据包过滤(IPv4和IPv6)
- 状态包过滤(IPv4和IPv6)
- 各种网络地址和端口转换,例如NAT / NAPT(IPv4和IPv6)
- 灵活且可扩展的基础架构
- 用于第三方扩展的多层API
我可以用netfilter / iptables做什么?
- 构建基于无状态和状态包过滤的互联网防火墙
- 部署高可用的无状态和状态防火墙集群
- 如果您没有足够的公共IP地址,请使用NAT和伪装来共享Internet访问
- 使用NAT实现透明代理
- 帮助用于构建复杂的QoS和策略路由器的tc和iproute2系统
- 进行进一步的数据包操作(修改),例如改变IP报头的TOS / DSCP / ECN位
二 、什么是iptables?
iptables是用户空间命令行程序,用于配置Linux 2.4.x及更高版本的包过滤规则集。是一个工作管理工具,它面向系统管理员。
由于网络地址转换也是从数据包过滤规则集配置的,因此 也使用iptables。
的iptables的包装还包括 ip6tables。 ip6tables用于配置IPv6数据包过滤器。
依赖
iptables需要一个具有ip_tables数据包过滤器的内核。这包括所有2.4.x及更高版本的内核版本。
主要特点
- 列出数据包过滤规则集的内容
- 在数据包过滤规则集中添加/删除/修改规则
- 列表/归零数据包过滤规则集的每个规则计数器
具体调用过程如下: