【发布时间】:2015-04-08 03:15:50
【问题描述】:
我正在使用 Sharppcap 将多播 udp 数据包转换为单播,然后将数据包转发到另一个网络 我建立了一个隧道 IPsec 两个网络之间的连接,例如以下场景 IPsec-tools 和 racoon,它工作正常
但在 gateway1 中,我运行一个使用 sharppcap 的简单程序,它监听 eth1 以捕获来自网络 A 的所有多播 udp 数据包,并将目标地址更改为 gateway2 的 eth1 地址,然后重新发送它,然后另一个网关将数据包更改为多播和转发到网络 B。 我这样做是因为 IPsec 隧道模式不适用于多播 例如在网关1:
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。
【问题讨论】:
标签: ubuntu networking multicast sharppcap