资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
nftables 配置一、概述nftables包过滤框架历史小解:配置详解:有些地方可能些不需要了解此文档的内容是根据上面的nftables配置详解的链接进行翻译整理的,有错误,对于有问题的地方,可以去上面的英文网站查询,同时对于一 的内容,在文中只给出了链接。nftables配置分为表链 规则三个层次,示例如下:table ip filter64 bytes from icmp_req=1 ttl=64 time= ms然后,如果我们列出规则集,我们获得:% nft -nn list table filtertable ip filter chain input type filter hook input priority 0;chain output type filter hook output priority 0;ip daddr counter packets 1 bytes 84tcp dport 22 counter packets 0 bytes 0请注意,计数器已更新。、在给定位置添加规则如果要在给定位置添加规则,则必须使用句柄作为参考:% nft list table filter -n -atable filter chain output type filter hook output priority 0;ip protocol tcp counter packets 82 bytes 9680 # handle 8ip saddr ip daddr drop # handle 7 如果要在处理程序编号为8的规则之后添加规则,则必须键入:% nft add rule filter output position 8 ip daddr drop 现在,您可以通过列出规则集来检查该命令的效果:% nft list table filter -n -atable filter chain output type filter hook output priority 0;ip protocol tcp counter packets 190 bytes 21908 # handle 8 ip daddr drop # handle 10 ip saddr ip daddr drop # handle 7 如果要在具有处理程序编号8的规则之前插入规则,则必须键入:% nft insert rule filter output position 8 ip daddr drop、删除规则您必须通过-a选项获取删除规则的句柄。句柄由内核自动分配,它唯一地标识规则。% nft list table filter -atable ip filter chain input type filter hook input priority 0;chain output type filter hook output priority 0;ip daddr counter packets 1 bytes 84 # handle 5 可以使用以下命令删除句柄为5的规则:% nft delete rule filter output handle 5 注意:有计划通过传递以支持删除规则:% nft delete rule filter output ip saddr counter 但这还没有实现。因此,您必须使用句柄来删除规则,直到实现该特性。、删除一条链中的所有规则您可以使用以下命令删除链中的所有规则:% nft delete rule filter output您还可以使用以下命令删除表中的所有规则:% nft flush table filter、在最前面添加新规则要通过insert命令预先添加新规则:% nft insert rule filter output ip daddr counter这预先附加了一个规则,该规则将针对寻址到的流量更新每个规则包和字节计数器。在iptables中的等价是:% iptables T OUTPUT -t filter -d请注意,iptables总是提供每个规则的计数口器。、替换规则您可以通过指定规则句柄通过replace命令替换任何规则。因此,首先必须列出带有 选项-a的规则集,以获取规则句柄。# nft list ruleset -atable ip filter chain input type filter hook input priority 0; policy accept;ip protocol tcp counter packets 0 bytes 0 # handle 2 然后,假设您想要使用句柄号2替换规则,则必须指定此句柄号和要放置的新规则,而不是它:nft replace rule filter input handle 2 counter然后,当列出规则集时:# nft list ruleset -atable ip filter chain input counter packets 0 bytes 0您可以有效地注意到,该规则已被替代为计数任何数据包的简单规则,而不是如前面的规则那样计数TCP数据包。、原子规则替换您可以使用-f选项自动更新规则集:% nft -f file其中file包含您的规则集您可以通过将现有列表存储在文件中来保存规则集,即。% nft list table filter filter-table然后,您可以使用-f选项恢复它: % nft -f filter-table如果您在过滤器表文件的最开始处预置flush表过滤器行,您将实现原子规则集替 换,等同于iptables-restore提供的内容。注意,内核在一事务中处理文件中的规 则命令,因此基本上新规则的刷新和加载发生在一个单独的事务中。有些人喜欢用规则集来维护一个shel l脚本文件。注意这种方法,你不能使用shell 脚本文件来实现原子规则集更新。因此,最好的方法是使用本机nftables脚本功 能,并通过nft -f恢复规则集。、从命令行报告错误当您使用错误的数据类型时,nft命令行实用程序会尝试帮助您。以下示例显示如果将IPv4地址作为TCP端口传递,则错误输出。% nft add rule filter input tcp dport counter drop:1:33-39: Error: Could not resolve service: Servname not supported for ai_socktypeadd rule filter input tcp dport counter drop如果命令不完整,典型输出如下:% nft add rule filter input tcp dport:1:32-32: Error: syntax error, unexpected end of fileadd rule filter input tcp dport、通过表达式构建规则nftables提供以下内置操作:NE表示不相等,或者你可以使用!二LT表示小于,或者你可以使用GT表示大于,或者你可以使用LE表示小于等于,或者你可以使用二GE表示大于等于,或者你可以使用二注意:如果您使用来自shel l的符号和,因为它会将它们分别解释为标准输入和输 出重定向。你需要逃避他们,例如。 。以下示例显示如何匹配未到端口 TCP / 22的所有传入流量。nft add rule filter input tcp dport != 22 同样,您也可以使用以下命令匹配到达高端口的流量:nft add rule filter input tcp dport = 1024、规则集级别的操作、使用原生nft语法Linux Kernel包括一些有关管理您的规则集作为一整体的可用操作的改进。1、查看规则集清单列出完整的规则集% nft list ruleset列出每个系列的规则集% nft list ruleset arp% nft list ruleset ip% nft list ruleset ip6% nft list ruleset bridge% nft list ruleset inet 这些命令将打印给定系列的所有表/链/集/规则。2、删除规则集 此外,您还可以冲洗(擦除,删除,擦除)完整的规则集 % nft flush ruleset也适用于每个系列:% nft flush ruleset arp% nft flush ruleset ip% nft flush ruleset ip6% nft flush ruleset bridge% nft flush ruleset inet3、备份和还原 您可以组合以上两个命令来备份您的规则集 % echo nft flush ruleset % nft list ruleset 并原子加载:4、以XML或JSON格式 您还可以以XML或JSON格式导出规则集。% nft export xml % nft export json 注意,导出操作输出所有家庭(ip,ip6,inet, arp, bridge)的所有表。、监视规则集更新nft可以通过以下方式显示规则集更新的通知:% nft monitor这将订阅任何种类的规则集更新。您可以按以下类型过滤掉事件:object: tables, chains, rules, sets and elements.event: new and destroy.输出格式可以是:plain text (ie. native nft format)xmljson以下示例显示了如何跟踪规则更新:% nft monitor rules如果您只想接收新规则:有点更发达的例子 在终端中键入以下内容:term1% nft monitor 从不同的终端,如果你键入:term2% nft add table inet filterterm2% nft add chain inet filter forwardterm2% nft add rule inet filter forward counter acceptterm2% nft flush table inet filter forwardterm2% nft flush ruleset然后,如果你回到terml,你会看到:term1% nft monitoradd table inet filteradd chain inet filter forwardadd rule inet filter forward counter packets 0 bytes 0 acceptdelete rule inet filter forward handle 4delete chain inet filter forwarddelete table inet filter、脚本三、数据包匹配支持的
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号