Skip to content
Posted by
By
king

1.简介
nftables
是 Linux 内核中的一种现代防火墙框架,旨在替代传统的 iptables
和 ip6tables
。它提供了更高效、更灵活和更强大的网络过滤和地址转换功能。
2.理论
1.地址簇
- 用来定义网络协议类型
- 常见的地址簇有:IPv4(默认)、IPv6、arp、bridge、inet
2.钩子
- 用于指定规则在何时触发
- 常见的钩子点有:
- input:数据包到达系统的入口时
- output:数据包到达系统的出口时
- forward:数据包转发时
- prerouting:在数据包到达系统后,但在进行任何路由决策之前
- postrouting:在数据包经过路由决策后,但在数据包被发送到网络接口之前。
3.规则集
- 表
- 表是规则集的最高层次容器,每个表可以包含多个链
- 表名大多数用链类型+地址簇命名
- 链
- 大多以钩子点命名
- 链类型:
- filter:用于过滤
- nat:用于地址转换
- route:用于路由
- mangle:用于修改头部
- 规则
- 条件
- 源目地址:saddr、daddr
- 源目端口:sport、sport
- 协议:tcp、udp、icmp、smtp
- 出入口:iifname、oifname
- 标志:SYN、ACK
- 元数据
- 动作
- 同意、拒绝、丢弃:accept、reject、drop
- 地址转换:masquerade、dnat、snat
- 其他:log、return、jump、queue
4.集合
- 用于存储元素
- 类型:
- ipv4_addr:IPv4
- ipv6_addr:IPv6
- inet_service:服务端口
- ether_addr:以太网MAC
- ifname:接口
- interval:值区间
5.字典
6.元素
7.备份/恢复
8.优先级
- 简介
- 优先级是一个整数值,用于确定链在同一个钩子点上的执行顺序。
- 优先级数值越小,优先级越高,链会被更早地处理
- 常见钩子的默认优先级
- prerouting:
- input:
- forward:
- output:
- postrouting:
- 规则集中的优先级
- 表
- 表本身没有优先级,但表中的链可以有不同的优先级。
- 表的处理顺序通常是按照配置文件中定义的顺序进行的。
- 链
- 链的优先级是一个整数值,用于确定链在同一个钩子点上的执行顺序。
- 优先级数值越小,优先级越高,链会被更早地处理。
- 规则
- 规则按添加的顺序依次执行,直到有一条规则匹配并执行了一个终止动作。
9.数据包处理概述
- 在 nftables中,数据包的处理流程分为多个阶段,每个阶段由一个钩子点表示。在每个钩子点上,可以有多个链,每个链有一个优先级,系统会根据链的优先级来决定数据包的处理顺序
Scroll to Top