Vergleich TUN/TAP

Aus OpenVPN Wiki

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

Einleitung

Im Moment bietet OpenVPN zwei Netzwerkmodi an: Bridging (TAP-Device) und Routing (TUN-Device).

Hinweis: Es ist auch möglich mit TAP ein geroutetes VPN Netzwerk zu erzeugen (umgekehrt jedoch nicht, mit TUN kann nicht gebrückt werden). In den Dokumentationen wird (daher) oft Bridging mit TAP gleichgesetzt und TUN mit Routing, da es die gängige Praxis darstellt. Auch dieser Artikel orientiert sich daran.

Bridgingmodus

Erklärung

Dabei werden zwei Netze (egal ob IP, IPX, NetBEUI, o.a.) miteinander verknüpft, ähnlich wie das zwei Switches/Hubs über den Uplinkport machen. Diese leiten Pakete nicht aufgrund der IP Adressen weiter, sondern arbeiten eine Schicht unter IP (Layer 3 im OSI-Modell), auf Ethernetebene (Layer 2). OpenVPN macht das genauso, dabei muss aber eine Brücke zwischen dem TAP-Device und der internen Netzwerkkarte geschlossen werden. Die Netzwerkkarten werden in den Promiscuous Mode geschaltet, d.h. es werden alle Pakete die an der Netzwerkkarte ankommen ans Betriebssystem weitergeleitet. Auch die, die nicht dem Computer selbst gehören. Alle diese Pakete die auf der Netzwerkkarte ankommen, werden auch auf das TAP-Device gesendet. OpenVPN empfängt diese und leitet sie über den (verschlüsselten) Tunnel zur anderen Seite weiter. Der andere Endpunkt B sendet die Pakete auf sein TAP-Device. Sofern dort ebenfalls eine Brücke erstellt wurde, werden die Paket auch ins lokale LAN des Endpunkts B gesendet. In die andere Richtung geht es genauso.

Da die Netzwerkkarte und das TAP-Device quasi zu einer neuen virtuellen Netzwerkkarte zusammengeschalten werden, verliert die Netzwerkkarte dabei ihre "Identität", d.h. sie hat dann keine eigene IP Adresse mehr. Man kann aber der Brücke eine IP Adresse zuweisen. Was normalerweise auch Sinn macht. (muss man aber natürlich nicht)

Je nach Netzwerkstruktur werden bei dieser VPN-Art, alle Netzwerkpakete zwischen zwei physikalischen Netzen hin- und herreflektiert.

Voraussetzungen

  • Im Normalfall muss auf beiden Seiten das selbe Subnet (z.B. 192.168.1.0) verwendet werden, damit die Computer sich später erreichen können.
  • Eine IP Adresse im LAN 1 darf nicht bereits im LAN 2 vergeben sein, und umgekehrt. (= eindeutige IP Adressen)
  • Nur eine Netzwerkbrücke/OpenVPN pro physikalisches Netzwerk.

Spezialfall "Multi-Singlepoint"

Viele Leute wollen lediglich mehrere Computer, ohne die LANs dahinter, zusammenschalten. In diesem Fall sucht man sich ein eigenes Subnet aus, das keiner der Clients besitzt. Weiters werden keine Netzwerkbrücken erstellt. Das TAP-Device wird natürlich trotzdem als "virtuelle Netzwerkkarte" verwendet und jeder der Clients bekommt eine IP Adresse in diesem virtuellen Subnet. Dieser Fall wird gerne zum Spielen von LAN-Games verwendet, da es alle Vorteile von Bridging bietet (Multi-Protokoll, Broadcasts), ohne jemanden in das eigene LAN zu lassen.

Vorteile

  • Jedes Protokoll, das auf Ethernet läuft, läuft auch durch den Tunnel.
  • Broadcasts werden auch getunnelt. (z.B. für diverse LAN-Spiele)
  • In den meisten Fällen einfacher zu Konfigurieren als Routing, da keine Änderungen an Routingtabellen notwendig sind.

Nachteile

  • Firewalling von Brückenpaketen ist schwer möglich. (Unter Windows fällt mir keine Firewall ein die das könnte. Unter Linux geht das mit iptables und einem Bridging-Hack)
  • Unschöne" Netzwerktopologie. Bei Diagnose von Netzwerkproblemen sind Netzwerkbrücken schwer als Ursache zu finden. Sie wirken wie schwarze Löcher, die unerwünscht Pakete verschlingen können. Können im schlimmsten Fall sogar Loops erzeugen, wo Pakete im Kreis laufen.

Zusammenfassung

Briding ist einfacher, wenn man bloß ein paar Computer zusammenhängen möchte über das Internet. Dann kann man sogar auf die Netzwerkbrücke(n) verzichten, sofern die Computer alleine reichen. Die Konfiguration ist eigentlich kein Problem unter Linux und Windows XP. Sofern man aber auf andere Protokolle außer IP verzichten kann, ist wahrscheinlich Routing "sauberer" und besser.


Routingmodus

Erklärung

Das funktioniert nur mit IP-Paketen - andere Protokolle werden nicht unterstützt. Das Prinzip setzt also auf Layer 3 des OSI-Modells auf. Dabei muss jedes Netzwerk, das mit OpenVPN verbunden wird, ein eigenes Subnet besitzen. Weiter existiert noch ein virtuelles Netzwerk, das die VPN-Endpunkte verbindet.

Ein Beispiel, 2 Netzwerke, VPN-Server im Multi-Client Modus:

  • LAN 1: 192.168.1.0/255.255.255.0 (VPN-Server-A: 192.168.1.99)
  • LAN 2: 192.168.2.0/255.255.255.0 (VPN-Client-B: 192.168.2.99)
  • VPN-Netzwerk: 10.8.0.0/255.255.255.0

Das TUN-Device in OpenVPN erzeugt immer 2 virtuelle Endpunkte (Point-To-Point). Im Peer-To-Peer Modus von OpenVPN hätte die Endstelle A 10.8.0.1 und Endstelle B 10.8.0.2. Im Multi-Client Modus ist die Sache komplizierter. OpenVPN teilt das virtuelle Netzwerk 10.8.0.0/255.255.255.0 in viele kleinere Netzwerke auf, die aus 4 IP-Adressen bestehen. (256 / 4 = 64 Subnets/Clients maximal, wobei das erste Subnet für OpenVPN selbst reserviert ist) Die Subnetmask der Netzwerke ist immer 255.255.255.252 oder in Kurzschreibweise /30.

Erstes Minisubnet:

  • 10.8.0.0 = Netzwerkadresse
  • 10.8.0.1 = VPN-Server
  • 10.8.0.2 = virtueller Endpunkt B
  • 10.8.0.3 = Broadcastadresse

Das nächste Minisubnet:

  • 10.8.0.4 = Netzwerkadresse
  • 10.8.0.5 = Gateway zu OpenVPN (Endpunkt A)
  • 10.8.0.6 = Client-IP (Endpunkt B)
  • 10.8.0.7 = Broadcastadresse

Beim Routing muss man einige Sachen beachten; vorallem muss man dafür Sorge tragen, dass die Pakete von jedem Netzwerk richtig ins andere geroutet werden. Jeder Computer muss das andere Netzwerk kennen. Im Normalfall ist es aber einfacher, wenn das Standardgateway (Internetgateway, Router) diese Routen besitzt, dann braucht man nicht die Routing Tabellen von jeden Computer abändern.

Im LAN 1 muss dann folgende Route im Standardgateway eingetragen werden:

192.168.2.0/255.255.255.0 ==> 192.168.1.99

Im LAN 2 folgende:

192.168.1.0/255.255.255.0 ==> 192.168.2.99

Sofern man noch einzelne Computer hat, die sich ebenfalls per VPN verbinden, muss man noch die Route für das VPN-Netzwerk 10.8.0.0 in beide LAN-Router eintragen.

LAN 1:

10.8.0.0/255.255.255.0 ==> 192.168.1.99

LAN 2:

10.8.0.0/255.255.255.0 ==> 192.168.2.99

Voraussetzungen

  • Unterschiedliche Netzwerk-Subnets. Auch bei einzelnen Clients sollten die Netzwerkadressen nicht mit den eigenen LAN-Subnets kollidieren.
  • IP Forwarding muss auf dem OpenVPN Server aktiviert sein.
  • Die Firewalls müssen angepasst werden um die neuen IP Adressen durchzulassen.

Vorteile

  • Die Bandbreitenbelastung ist niedriger, da der zusätzliche Ethernet-Layer wegfällt.
  • Netzwerktechnisch ist Routing "schöner", es verschwinden keine Pakete in schwarzen Löchern/Netzwerkbrücken.
  • Bei einem Zusammenschluss von zwei oder mehreren Netzwerken müssen keine doppelten Adressen gesucht werden.
  • Logischer bei der Fehlersuche.

Nachteile

  • Nur IP-Pakete gehen über den Tunnel.
  • Broadcasts werden nicht geroutet. Einige Spiele könnten da Probleme machen, genauso wie das Browsing ("Netzwerkumgebung") unter Windows.
  • Schwieriger zu Konfigurieren.

Zusammenfassung

Routing ist logischer und einfacher, wenn man Ahnung von IP-Netzwerken hat. Bei Internetanschlüssen mit geringer Bandbreite oder sogar Trafficlimitierung sollte es bevorzugt werden. Allerdings ist es keine Lösung, die man mal eben implementiert.

Persönliche Werkzeuge