Я использую Sharppcap для преобразования многоадресных UDP пакетов Unicast затем пересылают пакет в другую сеть Я установил туннель IPsec соединения между двумя сетями, как следующий сценарием IPsec-инструменты и енот и работает отличноSharppcap как отправлять пакеты, используя маршрут в ubuntu?
Но в gateway1 я запускаю простую программу с использованием sharppcap, которые слушают eth1 для захвата всех пакетов многоадресного udp из сети A и изменения адреса назначения на eth1-адрес шлюза2, а затем повторно отправить его, а другой шлюз изменяет пакет на многоадресную рассылку и переслать его в сеть B. Я сделал это, потому что режим туннеля IPsec 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);
}
}
}
Модифицированный пакет попадает к месту назначения в другой сети, но до сих пор не шифруется в туннеле между gateway1 и gateway2 Я думаю, что решение это позволить дескриптор операционной системы, отправляющий пакеты Но я не знаю, как это сделать, используя sharppcap.
Спасибо @ Крис есть ли способ, чтобы открыть сокет между двумя шлюзами с помощью sharppcap могли бы вы дать мне пример –
@AhmadDarwish, вы бы открыть сокет, как и любой другой сокет. https://msdn.microsoft.com/en-us/library/kb5kfec7%28v=vs.110%29.aspx Это действительно зависит, хотите ли вы синхронизацию против асинхронного подключения, какой порт, какой протокол и т. д. –
спасибо, проблема когда я использую сокет, я теряю исходный IP-адрес исходного пакета, потому что сокет принимает для отправки только с одного из локальных адресов, он не может быть привязан к исходному IP-адресу источника , и это неприемлемо в моей заявке Мне нужно найти другой способ сделать это –