我正在寻找来自 443 端口的 TURN/STUN 数据包。根据 TURN RFC,字节 46 到 49 是 TURN 数据包魔术 cookie '2112a442'。这是wireshark的截图,我发现STUN cookie从46到49
我正在使用-m u32 --u32 "46=0x2112A442"
但无法过滤它们。
这是我完整的 iptable 规则
-A PREROUTING -i eth0 -p tcp --dport 443 -m u32 --u32 "46=0x2112A442" -j REDIRECT --to-port 3478
知道我可能做错了什么吗?
iptables u32 模块偏移量参考数据包减去以太网包装器(减去源和目标 MAC,每个 6 个字节,以及以太网类型,2 个字节。因此您的 46 的wireshark 偏移量需要调整 14,应该是 32 .
现在,为了进行完整性检查,找到服务字节的类型,我们从iptables-extensions 手册页的 u32 区域知道它位于偏移量 9 处,我们还知道对于 UDP 是 0x11 (17)。它位于您的 wireshark 屏幕截图的 0x17 (23) 字节。从那里开始计数,我们还得到 32 作为您应该使用的偏移量。
编辑 1:由于协议是 UDP,您还需要调整 iptables 命令的那部分。所以:
编辑 2:在您的示例 wireshark 屏幕截图中,目标端口是 5004,而不是 443。因此 iptables 命令仍然不适用于您的特定数据包示例。也许是这样: