linux nftables简介和基础操做

1、什么是nftables?  php

nftables 是新的数据包分类框架,新的linux防火墙管理程序,旨在替代现存的 {ip,ip6,arp,eb}_tables。简而言之:html

  • 它在 Linux 内核版本高于 3.13 时可用。linux

  • 它有一个新的命令行工具 ntf,它的语法与 iptables 不一样。编程

  • 它也包含了一个兼容层,让你在新的 nftables 内核框架之上运行 iptables 命令。bash

  • 它提供了通用的集合基础容许你创建映射和关联。你可使用这个新特性把你的规则集分类到多维树中,这大大地减小了找到包最终的行为以前须要检查的规则的数量。框架

2、nftables 特色tcp

  • 拥有一些高级的相似编程语言的能力,例如定义变量和包含外部文件,即拥有使用额外脚本的能力。nftables也能够用于多种地址簇的过滤和处理。编程语言

  • 不一样于iptables, nftables并不包含任何的内置表。由管理员决定须要哪些表并添加这些表的处理规则。ide

  • 表包含规则链,规则链包含规则。工具

3、相比于iptables优势

  • 更新速度更快。在iptables中添加一条规则,会随着规则数量增多而变得很是慢,这也就解释了为何调用iptables的脚本须要花好久才完成。这种情况对nftables而言就不存在了。nftables使用原子的快速操做来更新规则集合。

  • 内核更新更少。使用iptables,每个匹配或投递都须要内核模块的支持。所以,若是你忘记一些东西或者要添加新的功能时都须要从新编译内核。nftables就不存在这种情况了。在nftables中,大部分工做是在用户态完成的,内核只知道一些基本指令(过滤是用伪状态机实现的)。例如,icmpv6 支持是经过nft工具的一个简单的补丁实现的。在iptables中这种类型的更改须要内核和iptables都升级才能够。

4、基础操做

一、增

增长表:nft add table fillter 

增长链:nft add chain filter input { type filter hook input priority 0 \; } # 要和hook(钩子)相关连

增长规则:nft add rule filter input tcp dport 22 accept

二、删

只须要把上面的 add 改成 delete 便可

三、改

更改链名用rename

更改规则用replace

四、查

nft list ruleset # 列出全部规则

nft list tables # 列出全部表

nft list table filter # 列出filter表

nft list chain filter input # 列出filter表input链

以上命令后面也能够加 -nn  用于不解析ip地址和端口

加 -a 用于显示 handles


操做手册可参考 nftables-wiki  和  nftables-manpage

注意各表和链的优先级(重要)。 参考连接:Base chain priority

[root@test01 nft]# cat setup-tables 
table ip filter {
        chain input             { type filter hook input priority 0; }
        chain forward           { type filter hook forward priority 0; }
        chain output            { type filter hook output priority 0; }
}

table ip nat {
        chain prerouting        { type nat hook prerouting priority -100; }
        chain postrouting       { type nat hook postrouting priority 100; }
        chain output            { type nat hook output priority -100; }
}

table ip mangle {
        chain output            { type route hook output priority -150; }
}

table ip raw {
        chain prerouting        { type filter hook prerouting priority -300; }
        chain postrouting       { type filter hook postrouting priority -300; }
}
相关文章
相关标签/搜索