nftables配置IP长度匹配规则触发bash重定向错误如何解决
nftables IP长度匹配规则改写方案
报错原因
你收到的报错并非nftables工具抛出,而是Bash shell的重定向机制导致:未被引号包裹的
>会被Bash识别为标准输出重定向符号,默认会尝试将命令执行结果写入名为2000的文件,因此触发了「2000: No such file or directory」的报错。
无尖括号比较运算符改写方案
nftables原生支持纯字母形式的比较关键字,完全可以替代</>这类符号运算符,且不会触发Bash的特殊字符解析,对应关系如下:
gt:等价于>,表示大于lt:等价于<,表示小于ge:等价于>=,表示大于等于le:等价于<=,表示小于等于eq:等价于==,表示等于ne:等价于!=,表示不等于
匹配「IP长度大于2000」需求的规则可改写为如下命令,无需使用任何尖括号类比较符:
sudo nft add rule inet my_table my_chain ip length gt 2000 counter accept
可选补充(使用尖括号的解决方法)
如果后续需要使用尖括号类比较符,只需将包含特殊符号的规则部分用单引号包裹,避免Bash解析即可,命令示例:
sudo nft add rule inet my_table my_chain 'ip length > 2000 counter accept'
内容的提问来源于stack exchange,提问作者Eldragon01
相关产品推荐
相关产品推荐

