【发布时间】:2010-10-10 07:10:34
【问题描述】:
我试图找到最简单的方法来拦截我的计算机在 c++ 程序中发送的 TCP SYN 数据包。我知道有几个选择。一种是监控所有流量,只选择性地处理 SYN 数据包,其余的不做任何事情。我遇到的另一个选择是使用数据包过滤实用程序,它将 SYN 数据包转发到我的程序。有人建议我使用netfilter 来做同样的事情。
我想知道是否还有其他选择,或者我应该深入研究 netfilter。此外,有关如何使用 netfilter 执行此操作的任何指示都会有所帮助。
编辑:我想拦截 SYN 数据包,可能需要修改它(重新路由到不同的目的地,更改目标端口等),然后再将其重新注入网络
编辑:我能够使用 iptables 和 libnetfilter_queue 的组合来做到这一点。我使用 ipfilter 将所有 TCP SYN 数据包重定向到特定队列(这是使用简单命令)
然后在一个 C 程序中,我能够使用 libnetfilter_queue API 访问队列中的数据包,分析它们并将它们重新注入网络。
【问题讨论】:
-
请澄清您是否真的想重新路由 - 您建议您做这个主题,但不要在问题中提及这一点
-
我想拦截 SYN 数据包,可能需要对其进行修改(重新路由到不同的目标,更改目标端口等),然后再将其重新注入网络
-
您也可以使用原始套接字注入数据包。
-
虽然你仍然需要 netfilter 来阻止原始数据包被转发