C 打开源和目标之间的UDP套接字,修改它并将其转发到原始目标

C 打开源和目标之间的UDP套接字,修改它并将其转发到原始目标,c,linux,sockets,routing,ipv6,C,Linux,Sockets,Routing,Ipv6,我正在运行一个包含2个节点和一个网关的简单网络。我的场景如下:Node1希望通过网关向Node2发送UDP IPv6套接字,网关必须打开套接字,验证数据,然后转发数据 我在节点1和网关之间配置了一个内部网络,地址为aaaa::/20,在网关和节点2之间配置了另一个网络,地址为aaab::/20。我修改了Node1路由表,通过其连接到网关的aaaa::/20接口向aaab::/20网络发送数据包,并将前者配置为转发数据包 我的问题是,通过这样做,网关变得完全透明。我希望我的网关能够捕获套接字,即使

我正在运行一个包含2个节点和一个网关的简单网络。我的场景如下:Node1希望通过网关向Node2发送UDP IPv6套接字,网关必须打开套接字,验证数据,然后转发数据

我在节点1和网关之间配置了一个内部网络,地址为aaaa::/20,在网关和节点2之间配置了另一个网络,地址为aaab::/20。我修改了Node1路由表,通过其连接到网关的aaaa::/20接口向aaab::/20网络发送数据包,并将前者配置为转发数据包

我的问题是,通过这样做,网关变得完全透明。我希望我的网关能够捕获套接字,即使它们不是命中注定的,打开它们,修改它们并将它们转发到它们的原始目的地。谷歌搜索了这篇文章,我找到了使用iptables的建议,但我对它们并不精通


我在linux下使用3个虚拟机,并用c编程。需要帮忙吗

Iptables不是什么可怕的东西;)它有自己定义的C函数。浏览接口库并将其应用到您自己的案例中。也就是说,在网关中运行一个程序,捕获通过它的所有数据包。有。

不确定这是否会引起更多的关注。如果你尝试格式化你的问题,这也会很有帮助。以目前的形式阅读起来真的很难。谢谢,我对这一点真的很陌生:(谢谢你的回复。我会尝试使用它们:)如果你需要一个可靠的代码来完成你想要做的事情,你也可以看看nProbe的源代码。