0

0

nftables 规则加载后不匹配流量的 priority / hook 调试方法

舞夢輝影

舞夢輝影

发布时间:2026-02-11 19:57:35

|

337人浏览过

|

来源于php中文网

原创

最常见原因是hook位置和priority不匹配——规则必须位于流量实际经过的hook(如input/prerouting/forward)且priority值需符合内核预定义范围(如-450、-200、0),否则被conntrack或br_netfilter等模块截断;用nft monitor trace实时追踪数据包路径可准确定位。

nftables 规则加载后不匹配流量的 priority / hook 调试方法

为什么 nft list ruleset 看到规则,但流量完全不匹配?

最常见原因是 hook 位置和 priority 不对——nftables 的规则不是全局生效的,必须落在正确的 hook(如 inputforward)且 priority 值能插入到实际数据包经过的链中。比如你加在 inet filter input,但 SSH 流量走的是 inet filter prerouting(若启用了连接跟踪或 DNAT),或者 priority 太高/太低被其他内核子系统(如 conntrack、br_netfilter)截断。

  • nft monitor trace 实时抓包看路径:开一个终端运行它,再从另一台机器发测试包(如 curl -v http://your-ip),观察输出里是否出现你的 chain 名、rule handle,以及停在哪一步
  • 确认 hook 类型是否匹配流量方向:本地进程发出的包走 output,进来的包走 inputprerouting,转发包走 forward;桥接流量还可能走 ingresspostrouting
  • 检查是否启用了 br_netfilter 模块:它会让桥接流量“绕行”到 netfilter 链,导致本该走 ingress 的包实际进了 prerouting,此时规则得挂到对应 hook 才生效

nft add rule 时 priority 值怎么选才不会被跳过?

priority 不是“越大越优先”,而是决定规则在 hook 内部链表里的插入顺序。内核为每个 hook 预定义了若干标准 priority 常量(如 0 对应 NF_IP_PRI_FIRST-200 对应 NF_IP_PRI_CONNTRACK),规则必须设成这些值附近,否则可能被插到无效位置甚至被忽略。

  • 常用参考值:-450(raw 表)、-200(conntrack)、0(filter 默认)、100(mangle)、300(nat);直接写数字比写符号名更稳妥,因为不同内核版本符号定义可能不一致
  • 避免用正数大值(如 999):可能插到所有内置模块之后,而某些关键处理(如 TCP 连接状态检查)已在前面完成,导致你的规则收不到原始包
  • 如果想确保最早触发,优先用 -450;想在 conntrack 后、路由前执行,用 -150;不确定时先试 0,再配合 nft monitor trace 观察

如何验证某条规则是否真正在处理目标流量?

光看 nft list ruleset 显示 counters 为 0 并不能说明问题——counter 只在规则匹配且未被跳过时累加,而规则可能因 verdict 是 continue、或被更高优先级规则 drop 掉,根本没走到你这来。

风声雨声
风声雨声

基于 gpt-3.5 的翻译服务、内容学习服务

下载
  • 给规则加 counter + log prefix "my-rule: ",然后 tail -f /var/log/kern.log | grep "my-rule";log 比 counter 更早触发,能确认包是否抵达该规则
  • 临时把规则 verdict 改成 dropreject,看对应流量是否立刻中断;如果没反应,基本确定包根本没路过这条规则
  • 注意 log 的 rate-limit:默认每分钟最多 5 条,高频测试时加 limit rate 10/second 避免丢日志

bridge + nftables 混合场景下 hook 错位的典型表现

当服务器同时启用网桥(如 docker0、virbr0)和 nftables 时,br_netfilter 模块会强制把桥接帧送入 IPv4/IPv6 netfilter 链,导致原本该走 ingressforward 的包,实际进了 preroutinginputforwardpostrouting,而你的规则若只挂在 filter input,就会漏掉大量桥接入口流量。

  • 查是否加载:运行 lsmod | grep br_netfilter;若存在,且你有桥接接口,就必须在 inet filter preroutinginet filter forward 中补全规则
  • 临时禁用验证:运行 sysctl -w net.bridge.bridge-nf-call-iptables=0,再测规则是否突然生效;若是,说明问题根源在此
  • 生产环境别长期关它——关了会影响 Docker、KVM 等依赖 iptables/nftables 控制桥接流量的功能

hook 和 priority 不是配置项,是数据包穿越内核协议栈时的真实坐标。调错一个数,整条链就脱节。最省时间的做法永远是先 nft monitor trace 看一眼包到底走了哪几步,而不是反复改 priority 猜。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1547

2023.10.24

curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

450

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

179

2023.10.30

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

259

2025.10.24

硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

1370

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

318

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2208

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

36

2026.01.19

2026春节习俗大全
2026春节习俗大全

本专题整合了2026春节习俗大全,阅读专题下面的文章了解更多详细内容。

68

2026.02.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号