首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在packets中使用路由发送数据包?

如何在packets中使用路由发送数据包?
EN

Stack Overflow用户
提问于 2015-02-08 08:03:42
回答 1查看 477关注 0票数 0

我正在使用夏普帽将多播udp数据包转换为单播,然后将包转发到另一个网络,我在两个网络之间建立了一个隧道IPsec连接,如下面的场景:IPsec工具和racoon,它工作得很好。

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

代码语言:javascript
复制
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);
                }
            }
        }

修改后的数据包到达另一个网络中的目的地,但仍未在gateway1和gateway2之间的隧道中加密,我认为解决方案是让操作系统处理发送数据包的问题,但我不知道如何使用sharppcap进行加密。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-08 15:42:55

libpcap/winpcap (因此也是Sharppcap)通过注射()发送数据包。这些是原始数据包,所以如果您想使用加密,那么在发送数据包时必须自己应用,因为这些调用绕过了操作系统中的高层通信堆栈。

也许你可以使用一种混合的方法来接收带有夏普盖的数据包,然后使用IPSec隧道,就像通常使用它作为一个应用程序一样。打开两个系统之间的套接字,并通过该套接字发送数据包。这将允许操作系统通过IPSec隧道路由数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28391871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档