使用原始套接字进行TCP流量时,请保持内核不接收传入的数据包

时间:2012-06-01 18:34:00

标签: security sockets testing iptables

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

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

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

提前致谢 路易斯

1 个答案:

答案 0 :(得分:0)

尝试使用主机的IP地址并与Linux的TCP / IP堆栈作斗争正在招致麻烦。

相反,我会使用一个单独的IP地址,将其路由到tun设备并从tun设备获取原始IP数据包,而不是使用原始套接字(可以从{{3获得一些示例代码来连接tun设备) }})。这样,Linux TCP / IP堆栈就不会妨碍您(路由设备除外)。