Sharppcap如何使用ubuntu中的路由发送数据包?

Sharppcap如何使用ubuntu中的路由发送数据包?,ubuntu,networking,multicast,sharppcap,Ubuntu,Networking,Multicast,Sharppcap,我正在使用Sharppcap将多播udp数据包转换为单播,然后将数据包转发到另一个网络 我建立了一个隧道 两个网络之间的连接,如以下场景IPsec工具和racoon,工作正常 但在gateway1中,我使用sharppcap运行了一个简单的程序,该程序侦听eth1以捕获来自网络a的所有多播udp数据包,并将目标地址更改为gateway2的eth1地址,然后重新发送,然后另一个网关将数据包更改为多播并转发到网络B。 我这样做是因为IPsec隧道模式不适用于多播 例如,在gatway1中: pri

我正在使用Sharppcap将多播udp数据包转换为单播,然后将数据包转发到另一个网络 我建立了一个隧道 两个网络之间的连接,如以下场景IPsec工具和racoon,工作正常

但在gateway1中,我使用sharppcap运行了一个简单的程序,该程序侦听eth1以捕获来自网络a的所有多播udp数据包,并将目标地址更改为gateway2的eth1地址,然后重新发送,然后另一个网关将数据包更改为多播并转发到网络B。 我这样做是因为IPsec隧道模式不适用于多播 例如,在gatway1中:

private static void device_PcapOnPacketArrival(object sender, PcapCaptureEventArgs e)
        {   
            if(e.Packet is UDPPacket)
            {               
                UDPPacket udp = (UDPPacket)e.Packet;
                System.Net.IPAddress dstIp = udp.DestinationAddress;
              if (dstIp.ToString() == "224.5.6.7")
                {
                    udp.DestinationAddress= IPAddress.Parse("192.168.2.1");
                    udp.SourceHwAddress= System.Net.NetworkInformation.PhysicalAddress.Parse("A0-48-1C-D6-7E-C0");
                    udp.DestinationHwAddress= System.Net.NetworkInformation.PhysicalAddress.Parse("A0-48-1C-D6-D5-90");
                    udp.TimeToLive=20;
                    udp.ipv4.IPChecksum= udp.ComputeIPChecksum();
                    device1.SendPacket(udp);
                }
            }
        }
修改后的数据包到达另一个网络中的目的地,但在网关1和网关2之间的隧道中仍未加密 我认为解决方案是让操作系统处理发送数据包的问题
但我不知道如何使用sharppcap

libpcap/winpcap和Sharppcap通过发送数据包。这些是原始数据包,因此如果您想使用加密,您必须在发送数据包时自己应用加密,因为这些调用绕过操作系统中的更高级别通信堆栈


也许您可以使用一种混合方法,即使用Sharppcap接收数据包,然后使用IPSec隧道(通常将其用作应用程序),例如,打开两个系统之间的套接字并通过该套接字发送数据包。这将允许操作系统通过IPSec隧道路由数据。

谢谢@Chris有没有办法使用sharppcap打开两个网关之间的套接字您能给我一个example@AhmadDarwish,您可以像打开其他插座一样打开插座。这实际上取决于您是否想要同步与异步、哪个端口、什么协议等。谢谢,问题是当我使用套接字时,我丢失了原始数据包的源ip地址,因为套接字只接受从一个本地地址发送,它不能绑定到原始的源ip地址,这在我的应用程序中是不可接受的。我需要找到另一种方法,端点必须看到原始ip吗?为什么不让正在运行的应用程序和系统作为远程端的端点?它看起来不是透明的,但要做到这一点,您需要编写一个防火墙包过滤器应用程序。