在 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.