3

我有一个工作系统,通过发送到固定 IP:Port 的 UDP 数据包接收数据,我想使用程序(某种代理?)将这些数据包的副本发送到新 IP:Port(或IP:端口,但都在与程序相同的 LAN 内)。

不像看起来那么容易,因为我需要复制的数据包与原始数据包具有相同的源 IP 地址。

在我的研究中,我发现 PCap.Net(WinPCap .NET 包装器)很有用,因为它可以从头开始构建数据包,并且支持修改所有地址字段。我设法捕获数据包并构建它们。但在某种程度上,他们没有到达预期的目的地(!?)。我应该使用不同的 PacketCommunicator 来接收和发送它们吗?

无论如何,这个问题与 PCap.Net 并不完全相关,而是要知道实现我想要的目标的替代方法。通过免费应用程序?商业应用?开源样本?还有其他图书馆可以使用吗?

我的系统是基于 Windows 的(这里没有可用的 Linux)。而且我有 C# (.NET) 经验(如果 NET 绑定不可用,我不能使用 C++ 库)。

非常感谢您的帮助

4

5 回答 5

2

我知道这是一个老问题,但这是答案:

http://code.google.com/p/samplicor/

侦听 UDP 并将其转发到一个或多个其他 IP 地址,可选择欺骗(原始)源 IP 地址。

用于转发 netflow/sflow/syslog 等数据包。

于 2012-10-30T13:17:30.747 回答
0

您应该首先考虑网络。如果流量需要通过路由器,这可能是不可能的。原始数据包通过:

源->路由器->你的服务器

如果您尝试像这样将其发送回去:

您的服务器->路由器->另一台计算机

根据路由器的配置,路由器甚至可能不接受此流量,因为它不能来自您的计算机。想想看——如果允许的话,我可以像任何人一样发送流量。

但是,在 LAN 中这是非常可行的(除非您的交换机上有某种 MAC 欺骗保护)

于 2010-12-02T22:44:05.423 回答
0

您正在尝试做的事情称为“UDP 转发”。您收到一个 UDP 数据包,然后将其转发到另一台主机

这是一个执行此操作的应用程序(似乎是免费的)

于 2010-12-03T08:07:14.073 回答
0

除了保留源 IP 地址和更改目标 IP 地址之外,您还必须交换源 MAC 地址和目标 MAC 地址。

如果您将原始数据包发送到路由器/交换机/调制解调器,但 MAC 地址不是它的地址。它会被丢弃。

基本上,您必须修改您处理的每个网络层,并适当地处理寻址。对不起我的拼写

于 2011-07-30T01:50:08.597 回答
0

如果您尝试欺骗目标地址来执行诸如 netflow 中继之类的操作,您通常会被中间的反欺骗路由器阻止。例如,我在 AWS 上遇到过这种情况。

解决方案是获取 RAW udp 数据包,然后将其发送到另一个 udp 数据包中的新目的地。当它到达目的地时,您必须“解包”数据包,然后在环回接口上将其发送给自身(本质上是“解包”)。

您可以使用带有 sockets 模块的 python 代码来执行此操作。

于 2016-06-29T22:44:57.260 回答