
Wir haben bei der Arbeit einen Auftrag erhalten, der die Portierung einiger Produkte von Windows auf Linux beinhaltet. Teil dieser Produktfunktionalität ist ein NDIS6-Miniport-Netzwerkadapter, der anscheinend nur Netzwerkpuffer durchläuft. Er hat eine Kennung und eine MAC-Adresse. Eine separate Dienstanwendung aktiviert diesen Netzwerktreiber und startet IP-Dienste, die den Netzwerkverkehr über diesen Adapter leiten.
Meine Frage lautet: Was wäre ein funktionaler Ersatz für einen solchen „Dummy“-Netzwerktreiber unter Linux?
Antwort1
Was ist ein Ersatz für den Windows-Miniport-Netzwerkadapter unter Linux?
"Miniport-Netzwerkadapter" erklärt nicht viel –Miniport-Treiberist ziemlich spezifisch für das Windows-Treibermodell und beschreibt, wie der Treiber geschrieben wurde, aber nicht, was er tut.
Eine Entität (Modul?), die als Pass-Through für Ethernet-Pakete fungiert, die programmgesteuert aktiviert und deaktiviert werden kann und über die programmgesteuert ein IP-Netzwerk eingerichtet werden kann
Wenn Ihr Ziel darin besteht, eine Netzwerkschnittstelle zu erstellen, die durch Software gesteuert wird (d. h. Pakete, die über die Schnittstelle gesendet werden, werden von einem Programm über einen Dateihandle empfangen und umgekehrt), dann sollten Sie einentap
odertun
Schnittstelle. (Erstere überträgt Pakete mit einem Layer-2-Ethernet-Header, letztere ohne, aber ansonsten sind sie gleich.)
Amtliche Dokumentation:
https://www.kernel.org/doc/Documentation/networking/tuntap.txt
(Diese Dokumentation ist ziemlich alt; in allen modernen Linux-Distributionen müssen Sie weder Geräteknoten manuell erstellen noch Kernelmodule manuell laden. Abschnitt 3 „Programmschnittstelle“ und die ioctl-basierte API sind jedoch immer noch korrekt.)
TUN/TAP-Schnittstellen werden von den meisten VPN- und VM-Programmen unter Linux verwendet; die unter Windows verfügbaren NDIS-Treiber „TAP-Windows“ und „Wintun“ wurden sogar so geschrieben, dass sie diese imitieren.
Es ist auch möglich, einen eigenen Netzwerkschnittstellentreiber zu schreiben, der dasselbe tut (wie etwa „vboxnetadp“, das von VirtualBox verwendet wird, und „sheep_net“, das vom SheepShaver-Mac-Emulator verwendet wird), aber die meisten Systemadministratoren werden es Ihnen danken, wenn Sie dies nicht tun und stattdessen das Standard-Tun/Tap verwenden.