You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

nftables规则无法正确匹配特定SNMP社区字符串“pawan”的问题求助

nftables规则无法正确匹配特定SNMP社区字符串“pawan”的问题求助

我正在尝试用nftables [v1.0.2 (Lester Gooch)] 丢弃包含SNMP社区字符串pawan的数据包,目前遇到了规则不生效的问题,希望能得到大家的帮助。

我的操作步骤与思路

首先我创建了过滤表和输入链:

nft add table ip filter
nft 'add chain ip filter input { type filter hook input priority 0; policy accept; }'

接下来我想通过nftables的原始负载表达式来匹配目标SNMP数据包,根据官方文档的说明,@th(传输层头部)相关的匹配需要使用比特单位的偏移量和长度。

我的匹配逻辑如下:

  • SNMP社区字符串“pawan”对应的十六进制值是 0x706177616e
  • 我计算了UDP负载的起始位置:以太网头14字节 + 默认无选项的IP头20字节 + UDP头8字节 = 数据包的第42字节,也就是UDP负载从这里开始
  • “pawan”在数据包中从第48字节开始,所以相对于UDP负载的偏移是 48-42=6字节,转换成比特就是 6*8=48比特
  • 字符串长度是5字节,对应比特长度为 5*8=40比特

基于这个逻辑,我添加了这条规则:

nft add rule ip filter input udp dport 161 @th,48,40 0x706177616e drop

遇到的问题

这条规则并没有按预期生效,当我用nft list ruleset查看当前规则集时,发现内核解析后的规则完全变了:

table ip filter { chain input { type filter hook input priority filter; policy accept; udp dport 161 udp checksum 112 @th,64,24 0x77616e drop } }

明明我配置的是@th,48,40,但内核却错误地解析成了udp checksum 112 @th,64,24,导致规则根本无法匹配目标数据包。

有没有大佬能帮我分析一下哪里出了问题?或者我是不是应该换一种方式来配置这个SNMP社区字符串的匹配规则?非常感谢大家的帮助!

备注:内容来源于stack exchange,提问作者Pa1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:09:43