我使用Sharppcap組播UDP數據包,以單播,然後將數據包轉發到另一個網絡 我建立了兩個網絡之間,如以下情形IPsec的工具和浣熊隧道的IPsec 連接轉換,它工作正常Sharppcap如何使用ubuntu中的路由發送數據包?
但是在gateway1中,我運行一個簡單的程序,使用sharppcap監聽eth1,捕獲來自網絡A的所有多播udp數據包,並將目標地址更改爲gateway2的eth1地址,然後重新發送,然後另一個網關將數據包更改爲多播並轉發到網絡B. 我這樣做是因爲IPsec隧道模式doe sn't組播 工作,例如在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來做到這一點。
感謝@克里斯 有沒有什麼辦法打開使用sharppcap 你可以給我一個例子 – 2015-02-09 08:43:17
@AhmadDarwish兩個網關之間的插槽,你會打開插座,就像您其他任何插座。 https://msdn.microsoft.com/en-us/library/kb5kfec7%28v=vs.110%29.aspx這真的取決於,如果你想同步與異步,哪個端口,什麼協議等 – 2015-02-09 15:47:54
謝謝,問題是當我使用套接字時,我丟失了原始數據包的源IP地址,因爲套接字只接受來自其中一個本地地址的發送,它不能綁定到原始源IP地址 ,這在我的應用程序中是不可接受的 我需要找到另一種方式來執行此操作 – 2015-02-10 12:30:14