nftables防火墙
nftables防火墙
更新在rhel8的最新技术。
与iptables相比较:
- iptables在没有使用也会占据内存空间,内置链链空间占用;nft则是使用什么开启什么
- 内部的5个hook还是一样
- 内存、性能消耗更小于iptables。不再需要修改内核,把iptables的各种命令集合做一个命令中
相关基础
nft簇:
统一了v4,v6数据包(ip和ip6簇)。当没有指定地址簇时,默认为ip
- ip ipv4
- ip6 ipv6
- inet v4,v6
- arp 地址解析协议(arp)地址
- bridge 处理桥接数据包
基本链:
数据包的入口点,需要指定hook类型和优先级,相当于内置链。要自己创建
常规链:
不需要指定钩子类型和优先级,可以用来叫做跳转,从逻辑上对规则进行分类,类似于自定义链
nftables包
配置文件:/etc/sysconfig/nftables.conf,默认内容都是注释,使用哪个开启哪个
nft命令
nft [选项] 操作符 对象 簇 表 链 操作内容
选项
-c 检查命令有效性,不会实际应用更改
-f file 包含文件内容
-i 从命令行读取输入
-j 以json格式输出
-n 指定一次后,以数字方式显示网络地址(默认)。指定两次以数字方式显示网络服务、端口。指定三次以数字方式显示协议,用户id和组id
-s 省略规则集的有状态信息
-N 将ip地址转为名称
-a 显示规则句柄handle
-e 显示已添加的内容
-I dir 添加目录到包含文件的搜索路径中,默认:/etc
--debug 等级 添加调试,等级有:scanner、parser、eval、n
操作符:
- 表操作: add、delete、list、flush
- 链操作: add、delete、rename、list、flush、create
- 规则: add、delete、inster
操作目标:
- 对象: chain、table、rule
- 链类型: filter、route、nat
- 链钩子: hook
规则选项:
accept
drop
reject
queue 队列,发送包到用户空间进程,停止处理
continue 继续处理包
return 发送到调用的规则链进行处理
jump 跳跃,发送到指定的规则链进行处理,当完成时或执行了返回的声明,返回到调用的规则链
goto 转到,发送到指定的规则链进行处理,不返回到调用的规则链
limit 打到结束包的匹配限制,根据规则处理包
log 日志记录包,继续处理
安利:
例1:查看相关
#可以加 -nn 用于不解析ip地址和端口
#加 -a 用于显示 handles
nft list ruleset 列出所有规则
nft list tables # 列出所有表
nft list table filter # 列出ip簇的filter表
nft list table inet filter # 列出inet簇的filter表
nft list chain filter INPUT # 列出filter表input链
例2:添加自定义链
nft add table inet test_tab #建test_tab链
nft delete table inet test_tab
nft add chain inet test_tab ts_chain #建自定义链,也要关联hook才生效
nft add rule inet test_tab ts_chain tcp dport http reject #添加到自定义链中,没有引用hook之前不会生效
例3:添加基本链
nft add chain inet test_tab ts_input {type filter hook input priority 0 \;} 基本链(也就是跟内置hook关联的)。priority为取整数值,可以是负数,较小的链优先处理
nft add rule inet test_tab ts_input tcp dport http reject
nft add rule inet test_tab ts_input ip saddr 1.1.1.10 reject
例4:插入规则
普通索引是0开始,与iptables一样,位置会变化
nft -a list chain inet test_tab ts_input
#handle也设置固定值,每个都一个固定不变的值
ndt -ae add rule inet test_tab ts_input handle 5 tcp dport 1000 accept
nft delete rule inet test_tab ts_input handle 5
例5:规则保存备份
重启后nft服务会自动读取改文件
vim /etc/sysconfig/nftables.conf
include "/etc/mynft.nft"
nft list ruleset > /etc/mynft.nft
例6:手动加载规则文件
nft -f /etc/test.nft
例7:迁移iptables到nft
iptables-save > rule.iptb
iptables-restore-translate -f rule.iptb > rules.nft #用工具转换成nft格式
nft -f rules.nft

浙公网安备 33010602011771号