17. Apr 2015 07:04
Keine Kommentare

Mehrere gleichzeitige Verbindungen mit OpenVPN

OpenVPN mit zwei Verbindungen für Zattoo und Sky Go
OpenVPN mit zwei Verbindungen für Zattoo und Sky Go
Der häufigste Anwendungsfall für OpenVPN oder VPN Verbindungen allgemein ist die Umgehung von Sperren bestimmter Inhalte. So kann man z.B. das Angebot des BBC iPlayer nur mit einer britischen IP Adresse, TV Sender von Zatto nur mit einer Schweizer und Sky Go entsprechend nur mit einer deutschen IP Adresse beziehen. Das ist insofern lästig, da man bei jedem unterschiedlichen Dienst auch wieder eine neue VPN Verbindung aufbauen muss. Hat man wie ich seinen Router direkt an den VPN Server angeschlossen, so wird es umso mühsamer. In diesem Artikel möchte ich deshalb darauf eingehen, wie man mehrere Verbindungen gleichzeitig aufbaut und je nach Dienst über unterschiedliche VPN Verbindungen verteilt.

Konfiguration des Netzwerks

Bevor ich ins Detail gehe und gleich Verwirrung stifte, erläutere ich erst einmal die grundlegenden Details. Ich habe einen VPN Router, der sich außerhalb Europas befindet. Dieser baut eine VPN Verbindung zu meinem OpenVPN-Server in Zürich auf. Dieser wiederum besitzt eine VPN Verbindung nach Frankfurt und eine nach London. Je nach Ziel-IP-Adresse oder -Adressen werden die Datenpakete wahlweise direkt in Zürich terminiert oder über Frankfurt bzw. London weiter geleitet. Sinn und Zweck ist, dass sich die Clients einfach nur in das WLAN einloggen und der Router sich mit dem OpenVPN Server verbindet. Dieser regelt dann den Netzwerkverkehr. Hierbei kommt relativ häufig NAT (Network Address Translation) zum Einsatz.

Topologie des OpenVPN Netzwerks

Routen-Tabelle und DNS-Server

Eigenentlich benötigt man für das Routing nur die Routingtabelle und die IP-Adressen für die jeweiligen Adapter. Da mittlerweile aber alle Streamingdienste über Akamai und somit über verteilte Netze streamen gibt es hier Überschneidungen bei den IP Adressen und die IP Adressen zu den entsprechenden Domains der Streaming-Server sind je nach Standort des abgefragten DNS Servers unterschiedlich. Aus diesem Grunde muss also zusätzlich auch noch ein DNS Server eingesetzt werden, damit die entsprechenden IP Adressen für die jeweiligen Domains der Streamingserver auch über den richtigen Adapter geroutet werden. Nachfolgend ein Beispiel meiner Routentabelle mit zwei aktiven VPN Verbindungen.

Konfiguration auf einzelnem System

Wer nicht wie ich mehrere Systeme über den gleichen Router mit parallelen Verbindungen betreiben möchte, sondern die Konfiguration lediglich für ein einzelnes System benötigt, der kann dies selbstverständlich sowohl unter Linux als auch unter Windows oder Mac OSX tun. Im speziellen gehe ich in diesem Artikel zwar auf die Konfiguration eines OpenVPN Netzwerkrouters und Servers ein, werde aber auch aufzeigen, wie man das auf einem einzelnen System konfigurieren kann.

OpenVPN Konfiguration mit mehreren Adaptern

Ich verwende das VPN von hide.me, man kann jedoch auch jeden anderen VPN Anbieter nutzen. Zusätzlich verfüge ich ebenfalls, wie eingangs erwähnt, über einen eigenen OpenVPN-Server. Egal ob eigener Server, Router oder einfach der eigene PC: möchte man mehrere VPN Verbindungen gleichzeitig betreiben, muss man auch mehrere virtuelle Netzwerkadapter verwenden. Nachfolgend meine beiden parallelen OpenVPN Konfigurationen.

OpenVPN Adapter TUN1 für Frankfurt

Auf den ersten Blick sieht die Konfiguration aus wie die Standardkonfiguration, die man von hide.me erhält. Schaut man genauer hin, finden sich jedoch ein paar besondere Befehlszeilen die ich unten einzeln erläutere.

 
Zu den Besonderheiten gehört zuerst einmal "dev tun1", welcher angibt dass der Adaptername für den zu erstellenden virtuellen Adapter der VPN Verbindung "tun1" heißt. Normalerweise wird hier einfach "tun" verwendet. Das ginge auch, aber alle nachfolgenden Verbindungen müssen jeweils einen eigenen eindeutigen Adapternamen besitzen. Der Befehl "route-nopull" weist an, dass alle Routen die vom Server zugewiesen werden zu ignorieren sind. Andernfalls würde man einfach jeden Traffic über die zuletzt gesetzte VPN Verbindung routen, da der Server in diesem Fall immer anweist jedweden Traffic über die VPN Verbindung zu schicken. Die Zeile "auth-user-pass" verweist einfach nur auf die Datei in welcher Benutzername und Passwort gespeichert sind, da ich diese nicht immer erneut eingeben möchte. Die Datei dazu ist sehr einfach: erste Zeile Benutzername, zweite Zeile das Passwort. Ganz am Ende der Datei stehen dann sämtliche IP Adressen, die über diese VPN Verbindung geroutet werden sollen. Alle Datenpakete, die nicht an diese IP Adressen gerichtet sind, gehen nicht über den VPN Adapter sondern über die Standardroute.

OpenVPN Adapter TUN2 für London

Die Konfiguration für den Zugriff auf den Server in London sieht ziemlich genauso aus, wie der für Frankfurt. Einziger Unterschied hier ist natürlich ein anderer Benutzername, da man bei hide.me mehrere Benutzernamen anlegen muss (geht im gleichen Konto), um mehrere gleichzeitige Verbindung aufzubauen. Zusätzlich sind natürlich die Routen über den Adapter in London auch anders.

Wir sehen auch hier wieder den Befehl "route-nopull" sowie entsprechend die IP Adressen, die über diesen VPN Adapter geroutet werden sollen. Das sind hier bei mir BBC, Channel4 und ein paar weitere Dienste, die über London geroutet werden sollen.

Konfiguration des DNS Servers

Wie anfangs erwähnt benötigen wir noch einen DNS Server, der die IP Adressen für die jeweiligen Hostnamen definiert, damit es keine Überschneidungen gibt. Wer unterschiedliche Dienste routen möchte, sollte vorher alle Hostnamen und ihre IP Adressen in einer Liste erfassen. Anschließend kann man sehen, ob es Überschneidungen gibt oder nicht. Es kann auch sein, dass je nach DNS auch unterschiedliche IP Adressen zu den gleichen Hostnamen erscheinen. Grundsätzlich empfehle ich immer einen DNS Server mit festen IP Adressen zu den Zielhostnamen zu setzen. Werfen wir zuerst einen Blick in die Adressen, die ich in meinem Dnsmasq DNS Server unter "/etc/dnsmasq.conf" definiert habe.

Wir sehen in diesem Ausschnitt der DNS Serverkonfiguration jetzt die Hostnamen zu den einzelnen Diensten, die über VPN geroutet werden. Ich habe dort auch Dienste definiert, deren IP Adressen sich teilweise mit Diensten überschneiden, die über VPN geroutet werden sollen. Damit verhindere ich, dass Dienste die nicht über einen der zwei VPN Adapter geroutet werden sollen auch nicht darüber routen.

Server und Client-Verbindungen gleichzeitig

In meinem Anwendungsfall loggen sich Clients nur in einen OpenVPN Server ein und werden von dort aus entweder direkt terminiert auf eth0 oder gehen in die OpenVPN Tunneladapter tun1 oder tun2. Wie mein OpenVPN Server funktioniert, kann man im Artikel OpenVPN-Server auf Ubuntu-Server lesen. Das funktioniert genauso einwandfrei wie die beiden anderen Clientverbindungen, die ich hier beschrieben habe. Einzig benötigt entsprechend der Server-Adapter auch einen eindeutigen und eigenständigen Namen. Bei mir ist das einfach nur "tun". Ich habe also den TUN-Adapter für den OpenVPN Server, tun1 für die Verbindung nach Frankfurt und tun2 für die Verbindung nach London. Damit das ganze auf dem Server funktioniert, müssen auch mit IPTables entsprechende Firewallregeln für die Paketweiterleitung und das NAT gesetzt werden.

Man sollte die Routen immer mit "traceroute" überprüfen und auch die korrekte DNS Auflösung mit Dnsmasq. Es gibt bestimmte Netze in bestimmten Ländern, die zudem DNS-Hijacking durchführen. Es empfiehlt sich hier entweder DNSSec einzusetzen oder so wie ich manuell die DNS Einträge auf die jeweiligen Clients bzw. den Router vor den Clients zu übertragen.

Probleme bei gleichzeitigen VPN Verbindungen

Mit der oben genannten Konfiguration kommt man schon sehr weit und wenn sie einmal eingerichtet ist und man die Dienste ausgiebig getestet hat, funktioniert es auch sehr lange und störungsfrei. Das Hauptproblem ist zum Einen, dass man erst einmal für diverse Dienste die genutzten Domains und IP Adressen erfassen und definieren muss und zum Anderen dass man bei Änderungen der Dienste durch die Anbieter wieder anfängt zu konfigurieren. Insbesondere bei Streaming durch Chromecast-Geräte ist die Analyse durch Paketsniffing recht mühselig, wie ich in meinem Artikel "WLAN-Daten abhören" beschrieben habe. Des Weiteren muss der VPN-Anbieter seine Zugangspunkte mit unterschiedlichen IP Adressen konfiguriert haben und mehrere Verbindung unterstützen.

Sonderfall Netflix-Streaming

Ein weiteres Problemfeld ist für mich derzeit noch Netflix. Denn Netflix hat zwar über meinen Zugangspunkt Zürich vieles im Angebot, das U.S. Angebot kann jedoch nur mit U.S. IP-Adresse abgerufen werden. Man kann die Netflix IP-Adressen noch auf einen Adapter mit U.S. Endpunkt routen, dann kann man aber auch über dieses Netzwerk nicht mehr auf das schweizer Angebot zugreifen, da die Domains von Netflix immer gleich sind. Man muss sich also entscheiden oder das Routing je nach Endgerät ändern, was auch mit einigen Nachteilen mit sich kommt.

Fazit zu mehreren gleichzeitgen VPN-Verbindungen

Alles in allem bin ich mit der Lösung zufrieden. Man muss nicht immer irgendwie um den Router herum eine neue VPN Verbindung aufbauen oder noch schlimmer eine VPN Verbindung durch eine VPN Verbindung aufbauen. Der zentrale Server steuert alle Pakete. Möchte man also den Chromecast sowohl mit Zattoo, als auch mit BBC oder Channel4 benutzen, dann klappt das ohne Eingriffe in die VPN Verbindung. Problematisch wird es die einzelnen Domains und IP Adressen der Dienste zu identifizieren. Einfach ist das nicht. Die Lösung mit mehreren gleichzeitigen VPN Verbindung ist eher etwas für erfahrene Nutzer. Die VPN Verbindung mit dem Router kann man jedoch vorbehaltlos jedem empfehlen.

Bücher zum Thema „OpenVPN“

Die nachfolgenden Bücher behandeln das Thema "OpenVPN" und werden von Amazon empfohlen. Viele dieser Bücher habe ich selbst gelesen und teilweise auch zur Recherche für diesen Artikel genutzt.
Jetzt bestellen »
OpenVPN: Das Praxisbuch (Galileo Computing)
Dirk Becker, Galileo Computing
23,99 €
Jetzt bestellen »
OpenVPN: Das Praxisbuch (Galileo Computing)
Dirk Becker, Galileo Computing
21,16 €
Jetzt bestellen »
OpenVPN: Das Praxisbuch (Galileo Computing)
Dirk Becker, Galileo Computing
9,90 €
Jetzt bestellen »
OpenVPN - kurz & gut (O'Reillys Taschenbibliothek)
Sven Riedel, O'Reilly Verlag GmbH & Co. KG

Diese Artikel könnten Dich auch interessieren

Besucher, die diesen Beitrag gelesen haben, haben sich auch die unten aufgeführten Beiträge angesehen. Schau' doch einfach mal in die Artikel rein.
14 Besucher haben auch das gelesen
11 Besucher haben auch das gelesen
10 Besucher haben auch das gelesen
8 Besucher haben auch das gelesen
6 Besucher haben auch das gelesen
5 Besucher haben auch das gelesen

Kommentare zum Thema „Mehrere gleichzeitige Verbindungen mit OpenVPN“

Wenn Du möchtest, kannst Du hier Kommentare zum Thema hinterlassen und Dich mit anderen Nutzern austauschen. Damit Du kommentieren kannst, musst Du Dich nur anmelden und schon kann es losgehen.
Jetzt zum Kommentieren anmelden