STUN/TURN 流量的 iptable 匹配规则

STUN/TURN 流量的 iptable 匹配规则

我正在寻找来自 443 端口的 TURN/STUN 数据包。根据 TURN RFC,字节 46 至 49 是 TURN 数据包 magic 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

知道我可能做错了什么吗?

答案1

iptables u32 模块偏移量参考数据包减去以太网包装器(减去源和目标 MAC,各 6 个字节,以及以太类型,2 个字节)。因此,您的 wireshark 偏移量 46 需要调整 14,应该是 32。

现在,为了进行完整性检查,找到服务字节的类型,我们从iptables-extensions 的手册页偏移量为 9,我们还知道 UDP 的偏移量为 0x11 (17)。它位于您的 wireshark 屏幕截图的字节 0x17 (23)。从那里开始算起,我们还得到 32 作为您应该使用的偏移量。

编辑 1:由于协议是 UDP,您还需要调整 iptables 命令的该部分。因此:

sudo iptables -A PREROUTING -i eth0 -p udp --dport 443 -m u32 --u32 "32=0x2112A442" -j REDIRECT --to-port 3478

编辑 2:在您的示例 wireshark 屏幕截图中,目标端口是 5004,而不是 443。因此,iptables 命令仍然不适用于您的特定数据包示例。也许是这样的:

sudo iptables -A PREROUTING -i eth0 -p udp --dport 5004 -m u32 --u32 "32=0x2112A442" -j REDIRECT --to-port 3478

相关内容