iptables 匹配规则用于接收窗口大小?

iptables 匹配规则用于接收窗口大小?

我需要一条规则来匹配没有设置选项和/或设置特定窗口接收大小的数据包:

IP (tos 0x0、ttl 66、id 9000、偏移量 0、标志 [无]、proto TCP (6)、长度 40) yyyy11111 > xxxxhttp:标志 [S]、cksum 0xe425 (正确)、seq 1729214256、win 715、长度 0

因此,这个数据包有 win 715,标志 [none] -> 我该如何匹配这样的数据包?

答案1

谢谢您的回答,但我认为我找到了最好的解决方案(速度最好):

iptables -I INPUT -m u32 --u32 "6&0xFF=0x6 && 0>>22&0x3C@12&0xFFFF=0x02CB" -j LOG

上面的代码确保这是一个 TCP 数据包,然后找到 IP 长度并将其采用(还有两个字节提取)到需要比较的字节(示例中为 715)。总之,每个人都可以使用出色的模块 -> u32 提取/查找/比较数据包中的每个位/字节。更多信息:iptables-u32.v0.1

答案2

Iptables 具有处理 TCP 标志和 TCP 选项的选项,即--tcp-option number--tcp-flags

对于窗口大小,您可以使用带有选项的字符串模块:--hex-string pattern。因此,选项将适合您的情况。要获得准确的结果,您应该使用和来--hex-string 02CB限制搜索偏移量。看看--from--toiptables 手册了解更多信息。

相关内容