0

我正在运行一些需要使用非标准 TCP 套接字的安全测试,以生成普通 TCP 堆栈不会遵循的行为。我使用原始套接字来生成这样的流量。

当收到来自另一个端点的回复时,内核不知道 TCP 连接并发出 RESET。为防止这种情况发生,通常的解决方案是定义一个 iptables 规则来丢弃所有传出的 RESET(例如 iptables -A OUTPUT -p tcp -dport 50000 --tcp-flags RST RST -j DROP)。

但是,在我的特定情况下,RESET 也是在测试期间生成的有效段。我需要的是一种从该连接中过滤掉所有段的方法,以便不涉及内核 TCP 堆栈,但可以访问我的原始套接字中的所有段。任何想法我怎样才能做到这一点?这可能与 iptables 吗?

在此先感谢路易斯

4

1 回答 1

0

试图使用主机的 IP 地址并与 Linux 的 TCP/IP 堆栈作斗争是自找麻烦。

相反,我会使用单独的 IP 地址,将其路由到 tun 设备并从 tun 设备获取原始 IP 数据包,而不是使用原始套接字(连接 tun 设备的一些示例代码可从http://www. secdev.org/projects/tuntap_udp/)。这样,Linux TCP/IP 堆栈就不会妨碍您(路由目的除外)。

于 2012-06-01T19:40:15.983 回答