Sie bieten beide eine Art von Netzwerkzugriff, warum gibt es zwei verschiedene Dinge, die das gleiche zu tun scheinen? Die Antwort ist, dass sie nicht dasselbe tun.
Das Punkt-zu-Punkt-Protokoll (ppp
) dient zur Bereitstellung einer IP-Netzwerkverbindung über eine serielle Verbindung. Die häufigste Sache, die eine serielle Verbindung zur Verfügung stellt, ist ein Modem, und diese sind in Mobiltelefonen vorhanden und waren allgegenwärtig vor einigen Jahren, als Sie sich zu Ihrem Dienstanbieter anwählten, um sich mit dem Internet zu verbinden. Ihre ppp
Verbindung geht von Ihrem PC zu einem Empfänger, der das serielle Signal zurück in IP-Pakete umwandelt, die über das Internet geroutet werden.
Wenn Sie heute ein Kabelmodem oder ADSL-Modem von Ihrem Dienstanbieter erhalten, stellt es eine IP-Netzwerkverbindung über eine Ethernet- oder WLAN-Verbindung bereit. Das Modem erledigt tatsächlich die Aufgabe, eine Verbindung zurück zu Ihrem Dienstanbieter bereitzustellen, die als die gleiche wie eine ppp
Verbindung angesehen werden kann; Es ist nur so, dass Ihr Computer nicht mehr die Übersetzungsarbeit macht, von IP-Paketen zu Signalen über eine ADSL-Leitung oder Kabelverbindung zu gehen. Das separate Modem bietet eine Schicht weg von der Komplexität des Gesprächs mit dem Anbieter, Sie sprechen nur "einfaches" Ethernet/WiFi.
Der Tun/Tap-Mechanismus ermöglicht Ihnen den Zugriff auf ein virtuelles privates Netzwerk (vpn
) in einer Schicht über Ihrer Standard-Netzwerkverbindung. Wenn Sie zum Beispiel über Ethernet eine Verbindung zu Ihrem Kabelmodem herstellen, können Sie über Ihre Ethernet-Verbindung auf den VPN zugreifen. Wenn Sie über ein Modem, das direkt an Ihren Computer angeschlossen war, auf das Internet zugreifen würden, würden Sie über ppp
auf Ihren VPN-Computer zugreifen. Die tun/tap-Schnittstelle bietet keinen Internetzugang, sie beruht auf einer bereits vorhandenen Verbindung. Es ist ein Beispiel für Netzwerk-Layer.
Die Frage, wie schwierig es ist, ein Programm von einer tun/tap Netzwerkverbindung zu konvertieren, um eine PPP-Verbindung zu verwenden, missversteht, wo die beiden Schnittstellen in der Bereitstellung Ihres Netzwerkzugriffs sitzen - tun/tap würde auf ppp sitzen. Unverschlüsselte Pakete gelangen in die tun/tap-Schnittstelle, werden verschlüsselt und als IP-Pakete an die ppp-Schnittstelle gesendet, die sie in serielle Signale umwandelt, die sie an IP-Pakete zurückschicken und an das Ziel weiterleiten Die entschlüsselt sie und leitet sie durch ihr eigenes privates Netzwerk weiter.
Wenn Sie die Tun/Tap-Schnittstelle entfernen, dann müssten Sie jede Anwendung ändern, die über den VPN kommunizieren möchte, so dass für jede seiner Netzwerk-Kommunikation müssen Sie sie abfangen; verschlüsseln sie; weiterleiten sie; Antworten erhalten und entschlüsseln. Indem Sie die tun/tap-Schicht verwenden, erlauben Sie dem integrierten IP-Routing, die unverschlüsselten Pakete zu verschlüsseln und weiterzuleiten - d. H. Sie müssen keine der Anwendungen ändern, die mit dem privaten Netzwerk kommunizieren.
So ziemlich jedes Problem in der Informatik kann durch Hinzufügen einer Schicht von Indirektion gelöst werden. Durch das Hinzufügen dieser Schichten reduzieren wir die Komplexität einzelner Komponenten, können jedoch leistungsfähige Systeme erstellen.Wenn wir nicht die PPP-Schnittstelle hätten, müsste jedes Programm wissen, wie man seriell spricht, wenn wir tun/tap nicht hätten, müsste jedes Programm wissen, wie man mit vpn spricht und wie man seriell sprechen kann .
Die einzige Möglichkeit, die tun/tap-Verbindung zu entfernen, wäre, wenn die PPP-Verbindung zu einem privaten System hergestellt wurde. Sie müssten etwas verwenden, das GSM-Daten ähnlich ist (9600 Bits/Sekunde, und es ist ein tatsächlicher Telefonanruf), und selbst dann verschlüsseln Sie nicht, und Sie gehen über ein Mobilfunknetz, das die Art von besiegt ganze Absicht eines privaten Netzwerks.
Das Folgende ist eine grobe Vereinfachung, wie die verschiedenen Tunneling-Protokolle funktionieren, sollte aber ausreichend detailliert erklären, dass Sie verstehen sollten, warum Sie nicht einfach eines für das andere austauschen können.
Um zu verstehen, warum die verschiedenen vpn-Protokolle unterschiedliche Schnittstellen für ihre Arbeit verwenden, müssen Sie verstehen, wie sie entworfen wurden. TAP, L2TP und PPTP sind alle Beispiele für ein Schicht-2-Protokoll. TUN ist ein Beispiel für ein Schicht-3-Protokoll.
Um die Unterschiede zu verstehen, werde ich eine postalische Analogie verwenden. Layer 2 (auch Link Layer genannt) entspricht einem Kurier. Sie geben ihm einen Brief und übergeben ihn dem Empfänger. Der Kurier kennt alle möglichen Ziele in seiner Region, jede Nachricht für dieses Gebiet kann von ihm bearbeitet werden.
Wenn wir diese Analogie strecken, kann eine Post-Box auch als gültiger Layer-2-Endpunkt angesehen werden. Wenn Sie Briefe im ganzen Land bekommen möchten, legen Sie sie in den Briefkasten. Dies ist analog zu L2TP, PPTP und TAP, die ihre Pakete für die Übertragung über ein Netzwerk einwickeln.
Layer 3 ist die Adresse auf dem Brief - es kann verwendet werden, um den Brief vom Postamt zum Postamt zu bringen, wo es schließlich in die Hände eines Postboten gelangt. Dies ist, wo das umhüllte Paket durch das Netzwerk geroutet wird.
Es geht zurück zu Schicht 2 an diesem Punkt, wo der Postbote das Ziel in seinem Liefergebiet kennt und den Brief an den vorgesehenen Empfänger übergibt. Hier wird das umhüllte Paket ausgepackt und dann vom L2TP-, PPTP- oder TAP-Endpunkt
verarbeitet. Für TUN ist es ein wenig einfacher. Ihre Briefe gehen direkt zu Ihrer lokalen Poststelle und werden en masse an das Zielpostamt geliefert, wo Sie sie abholen. Es kann einige Details geben, wie man die Briefe zum Postamt bringt, oder vom Postamt zur Zieladresse, aber das ist nicht wirklich Teil des Protokolls.
Dann kommt die peinliche Details, wie sie implementiert sind. Sowohl L2TP als auch PPTP sind in Form von ppp
definiert, einem gut etablierten Mechanismus zum Herstellen einer direkten Verbindung zwischen zwei Endpunkten. Um über diese Art von System zu sprechen, müssen sowohl der Ursprung als auch das Ziel den Punkt-zu-sprechen -Punkt-Protokoll. Das Tunneln stellt eine virtuelle Schicht zur Verfügung, über die sich diese ppp
Nachrichten bewegen (Dieses Tunneln gibt ihnen die T
in ihrem Namen).
Die TAP-Schnittstelle ist in Bezug auf das Tunneling von Ethernet Pakete definiert - das sind die Pakete, die Sie über Ihre WiFi-Verbindung sausen würde sehen. Es stellt eine einfache Brücke zwischen zwei Netzwerken her, über die diese Ethernet-Pakete geleitet werden. Ethernet-Pakete umschließen typischerweise IP-Pakete, so dass Sie sie direkt an der Leitung am Zielort platzieren können, ohne sie erneut einkapseln zu müssen.
Die TUN-Schnittstelle ist definiert als Tunneln von IP Paketen - dies sind Pakete, bevor sie transformiert wurden, so dass sie über eine physikalische Verbindung wie Ethernet/WiFi übertragen werden können. Dies bedeutet, dass Sie ein virtuelles IP-Netzwerk mit Routing zwischen Ihrem Computer und dem Zielnetzwerk einrichten. IP-Pakete, die ein durch die von dieser Schnittstelle bereitgestellten Routen definiertes Ziel haben, werden an diese Schnittstelle gesendet.
Das Endprodukt ist ein anderes Netzwerk-Schnittstelle auf ihrem System, dass IP-Pakete gesendet werden können. Diese Schnittstelle umschließt das Paket (in einem PPP-Paket für PPTP/L2TP; in einem Ethernet-Paket für TAP; in einem anderen IP-Paket für TUN). Die Verschlüsselung kann vor dem Wrapping oder nach dem Wrapping oder an beiden Punkten erfolgen (abhängig vom Protokoll). Ein Programm, das L2TP versteht, wird sich gut mit dem Sprechen von auskennen, aber es wäre nicht in der Lage, andere Protokolle ohne eine wesentliche Neuschreibung zu sprechen.
Auf Android sehe ich/dev/ppp und pppd verwendet werden, um VPN (PPTP oder L2TP) bereitzustellen. Aber standardmäßig ist kein tun/tap verfügbar (Zum Glück habe ich tun.ko für meinen Kernel gefunden). Warum verwendet PPTP/L2TP PPP, nicht TUN/TAP? –
"Die tun/tap-Schnittstelle bietet keinen Internetzugriff, sie beruht auf einer bereits bestehenden Verbindung" -> TUN/TAP lässt das Programm entscheiden, welchen Inhalt diese Verbindung haben soll. Dieses Programm kann zum Beispiel auch auf Modem zugreifen. –
@Vi Ich werde die Antwort mit etwas mehr Details aktualisieren. Das ist, was ich bekomme, um eine Antwort um 1 Uhr morgens zu schreiben. – Petesh