Netzwerkschnittstellen-Simulator

Ich suche nach einem Netzwerkschnittstellensimulator, der beide Enden eines Netzwerks auf einer einzigen Maschine bietet (insbesondere für UDP).

Die Art und Weise, wie com0com für serielle Ports arbeitet, simuliert jedoch eine Netzwerkkarte anstelle eines seriellen Ports.

Ist dieses Verhalten möglich, indem der vorhandene Netzwerkstapel auf kreative Weise verwendet wird? (Portweiterleitung oder ähnliches?) Oder eine kreative Konfiguration von OpenVPN, L2TP/IPSec, SoftEther, PPTP usw.?

Ich habe eine Software, die ich nicht ändern kann, die an bestimmte UDP-Ports bindet und ausgehende Nachrichten an dieselben Ports sendet. Ich möchte diese Nachrichten abfangen und weiterleiten, aber ich kann mich nicht selbst an dieselben Ports binden, da diese Software bereits an sie gebunden ist.

Antworten (2)

Zunächst einmal haben Sie eigentlich schon eine auf so ziemlich jeder Plattform, die über eine Netzwerkschnittstelle verfügt. Es wird als Loopback-Schnittstelle bezeichnet und ist tatsächlich eine der schnellsten Methoden, mit denen Sie so etwas tun können. Standardmäßig stellt dies eine Adresse für das gesamte System bereit, aber auf vielen Plattformen, aber wenn Sie IPv4 verwenden, können Sie mehrere Adressen aus dem 127.0.0.0/8-Block hinzufügen, und es wird im Allgemeinen korrekt funktionieren (Sie können es leider nicht). Tun Sie dies nicht mit IPv6, da dort nur eine Adresse für die Loopback-Nutzung reserviert ist).

Es gibt jedoch mehrere alternative Optionen, je nachdem, auf welchem ​​​​System Sie arbeiten:

  • Software-Bridge-Schnittstellen. Auf vielen UNIX-Systemen können Sie Ethernet-Bridges in Software erstellen, um eine transparente Überbrückung zwischen mehreren physischen Schnittstellen bereitzustellen. Auf den meisten dieser Systeme müssen Sie keine physischen Schnittstellen an sie binden und können die Bridges einfach als private interne Netzwerkschnittstellen verwenden.
  • Linux bietet einen speziellen Treiber, der verwendet werden kann, um buchstäblich genau das zu tun, wonach Sie fragen. Die bereitgestellten virtuellen Geräte werden als „virtuelle Ethernet-Pair-Geräte“ bezeichnet. Mit diesem Treiber erhalten Sie zwei Netzwerkschnittstellen, die eine (nahezu latenzfreie) Ethernet-Verbindung simulieren.
  • Viele Betriebssysteme, die über einen modernen Netzwerkstapel verfügen, bieten eine spezielle Art von Netzwerkschnittstelle, die es einer Anwendung ermöglicht, eine grundlegende Netzwerkemulation bereitzustellen. Auf den meisten Systemen sind diese als tunund tap-Schnittstellen bekannt (der Unterschied besteht darin, welche Schicht sie emulieren), und sie werden für eine Vielzahl von Dingen verwendet, von VPN-Schnittstellen bis zur Netzwerkemulation für virtuelle Maschinen.
  • Ein bisschen unkonventionell, aber Sie erwähnten bereits serielle Emulationssoftware, also erwähne ich sie hier: Sie könnten PPP oder SLIP über die emulierte serielle Verbindung ausführen. Dies könnte tatsächlich eine der besten Optionen sein, da es jegliche Optimierungen durch das Betriebssystem verhindern sollte, die das gewünschte Routing beeinträchtigen könnten.
  • Wie Lucio Crusca erwähnte, könnten Sie dafür eine virtuelle Maschine verwenden, obwohl ich argumentieren würde, dass dies auf den meisten Systemen wahrscheinlich übertrieben ist (außer Windows, weil komplizierte Netzwerk-Dinge ein Schmerz im Arsch sind).
  • VDE , auch bekannt als Virtual Distributed Ethernet, könnte für Ihre Anforderungen geeignet sein. Es ist hauptsächlich darauf ausgelegt, virtuellen Maschinen, die physisch weit voneinander entfernt sind, ein emuliertes Ethernet-Netzwerk bereitzustellen, kann aber auch lokal betrieben werden.
  • Open vSwitch , eine weitere auf Virtualisierung ausgerichtete Technologie, kann Ihnen ebenfalls von Nutzen sein.
Danke für die vielen tollen Ideen! Eine native Netzwerk-Stack-Lösung wie 127.0.0.0/8 wäre großartig: Kennen Sie eine Anleitung dafür? Ich bin mit tun and tap von OpenVPN ein wenig vertraut: Können wir das auf native Weise erreichen? (Mein unmittelbarstes Anliegen ist Windows, ich werde das Tag meines Qs aktualisieren.)
Hier ist etwas über die Verwendung des tun-Treibers von OpenVPN selbst , der für das, was sie versuchen, nicht zu funktionieren scheint, aber es ist nicht klar, ob er für UDP funktionieren würde .
Ich denke , dass Sie die gleichen Dinge tun können wie die Treiber tunund tapunter Windows, indem Sie nativ erstellte Treiber verwenden (das tun die meisten VM-Angebote unter Windows), aber es ist viel mehr Aufwand.

Sie haben nicht gesagt, welches Betriebssystem Sie verwenden, trotzdem ist es immer möglich, eine virtuelle Maschine (z. B. VirtualBox unter Windows, qemu/KVM unter Linux) zu installieren und Ihre Software darin zu installieren.

Von dort aus haben Sie ein ganzes virtuelles Netzwerk, in dem Sie alle Arten von virtuellen Routern hinzufügen können, die Sie benötigen.

Danke! Ich habe eine VM in Betracht gezogen, aber sie ist nur für den Ethernet-Treiber ziemlich schwergewichtig, und es scheint ziemlich viel zu sein, wenn sie beim Start der Maschine gestartet wird und dann unsere Software startet.
Wenn Sie es mit dem Aufwand vergleichen, virtuelle Schnittstellen unter Windows einzurichten, sind Sie wahrscheinlich mit Virtualisierung besser dran. Übrigens, das Starten einer VM beim Booten ist mit VirtualBox oder einem anderen Virtualisierungssystem recht einfach, das gleiche gilt für Ihre Software in der VM ...