![iptables:使用-m u32函数时如何显示“不等于/匹配”](https://linux22.com/image/886087/iptables%EF%BC%9A%E4%BD%BF%E7%94%A8-m%20u32%E5%87%BD%E6%95%B0%E6%97%B6%E5%A6%82%E4%BD%95%E6%98%BE%E7%A4%BA%E2%80%9C%E4%B8%8D%E7%AD%89%E4%BA%8E%2F%E5%8C%B9%E9%85%8D%E2%80%9D.png)
在 iptables 中,可以使用 -m u32 --u32 将数据包中的某些字节与用户定义的值进行匹配。例如,
iptables -A 输入 -p tcp --dport 1000 -m u32 --u32 “xxxxxxxxxxx=0x11” -j 拒绝
通过上面的iptables规则,如果某个1字节的值是等于0x11。
我的问题是:如何呈现“不等于“ 或者“不匹配”? 从 iptables 的 man 页面来看,好像没有 !-m 或 -m! 这个功能。
答案1
-m u32
命令行的部分指定模块。部分--u32
指定实际表达式。因此,您要查找的语法是:
iptables -A INPUT -p tcp --dport 1000 -m u32 ! --u32 "xxxxxxxxxxx=0x11" -j REJECT
另请参阅iptables-extensions 手册页,摘录如下:
u32
U32 tests whether quantities of up to 4 bytes extracted from a
packet have specified values. The specification of what to
extract is general enough to find data at given offsets from
tcp headers or payloads.
[!] --u32 tests
The argument amounts to a program in a small language described below.