OpenVPN Bridging

Nach längerer Zeit habe ich mal wieder Zeit gefunden ein wenig mit IT-Problemen zu kämpfen und stürze mich auf folgende Problemstellung: OpenVPN und Bridging in ein internes LAN. In meinem Fall möchte ich mit meinem Notebook von unterwegs uneingeschränkten Zugriff auf mein Heimnetz haben, um eventuell Fernwartungstätigkeiten oder einfach nur Backups meines Notebooks durchführen zu können. Natürlich möchte ich nicht nur auf einen einzigen Rechner zugreifen, sondern wenn möglich auch auf die restlichen Netzwerkteilnehmer wie Drucker, NAS und Arbeitsplatzrechner.

Folgende Anleitung sollte Schritt für Schritt die Einrichtung einer solchen Verbindung erklären.

Zunächst muss der OpenVPN-Client auf dem Rechner installiert werden, auf den verbunden werden soll, und natürlich auch auf jedem der einzelnen Clients, die eine Verbindung aufbauen möchten. In meinem Fall ist dies der Windows-Home-Server und mein Notebook.

  • In dieser Anleitung wird beschrieben, wie die Einrichtung dieser Konfiguration unter Windows funktioniert, als Tip: für MacOSX Clients wird der Client Tunnelblick empfohlen. (Downloadlink Windows Client)
  • Zu Beginn das Setupfile für OpenVPN downloaden und wie bereits erwähnt auf allen notwendigen Rechnern installieren.
  • In dieser Anleitung ist das Installationsverzeichnis folgendes: “C:\Program Files (x86)\OpenVPN\”
  • Widmen wir uns zuerst der Installation am Server: Startet jetzt die Eingabeaufforderung (Start => Ausführen => cmd => OK) und wechselt ins Verzeichnis C:\Program Files (x86)\OpenVPN\easy-rsa.
  • Als nächstes sind ein paar Befehle notwendig. Zum Initialisieren der Konfiguration muss der Befehl init-config ausgeführt werden.
  • Jetzt müssen wir ein paar Variablen setzen. Dazu einfach im selben Verzeichnis die Datei vars.bat mit dem Notepad öffnen.
  • In diesem File müssen die Zeilen mit den Variablennamen KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, und KEY_EMAIL gefunden und jeweils richtig gesetzt werden. Zusätzlich sollte auch die Variable KEY_DIR auf ein Verzeichnis gesetzt werden, welches sicher ist (Zugriff nur für Admin und den OpenVPN-Clienten) und auch gebackuped wird.
  • Um nun den Erstellungsprozess zu starten, nacheinander die Batchfiles vars.bat, clean-all.bat und build-ca.bat ausführen.
  • Beim letzten Aufruf werden nun ein paar Eingabewerte abgefragt, die meisten wurden bereits im File vars.bat gesetzt und können mit der Enter-Taste bestätigt werden. Der einzige Parameter der gesetzt werden muss, ist der “Common Name”. Hier einfach einen beliebigen Namen eingeben wie => “MY-Company”
  • Nun mit dem Aufruf build-key-server.bat server die Zertifikate für den Server erstellen. Hier können wiederum die meisten Parameter mit Enter bestätigt werden, mit Ausnahme des “Common Name” hier “server” eingeben.
  • Im Beispiel werden Zertifikate für 3 Clients erstellt. Dazu einfach die Befehle build-key.bat client1, build-key.bat client2 und build-key.bat client3 nacheinander ausführen. Dabei muss bei jedem Client ein eigener “Common Name” eingegeben werden. (Bsp: Client1)
  • Nun müssen noch die Diffie Hellman-Parameter generiert werden. Dazu einfach den Befehl build-dh.bat eingeben und das Skript arbeiten lassen.
  • Jetzt sollten die neu generierten Files im gesetzten Verzeichnis (vars.bat KEY_DIR) liegen. In meiner Konfiguration liegen die Files unter “C:\Program Files (x86)\OpenVPN\config”. Folgende Liste sollte Klarheit verschaffen, welche Files von wem gebraucht werden, um eine Verbindung aufbauen zu können:
    ca.crtServer + Alle Clients
    ca.keyServer
    dhxxxx.pemServer
    server.crtServer
    server.keyServer
    client1.crtClient 1
    client2.keyClient 2
    – usw…
  • Im letzten Schritt werden noch die Konfigurationsfiles für den Server und die Clients angepasst. Ein Beispielkonfigurationsfile liegt im Verzeichnis C:\Program Files (x86)\OpenVPN\sample-config. Hier einfach eines kopieren und ins Verzeichnis C:\Program Files (x86)\OpenVPN\config\ einfügen. Nun einfach alle Einträge löschen und durch folgende ersetzen. (ACHTUNG: Unbedingt die Pfade so anpassen, wie sie bei euch gesetzt sind.)
    Clients zuerst:
    konfig_client
  • Nun noch die Server-Konfiguration:

konfig_server

  • Um eine funktionierende Verbindung zustande zu bringen, muss der Port 1194 beim Router auf den zu verbindenden Rechner (in meinem Fall der Server) weitergeleitet werden.
  • Wenn ihr nun den OpenVPN-Client auf dem Server und auf den Clients startet und es liegt jeweils nur ein *.ovpn File im config Ordner, sollte mittels Rechter-Maustaste -Klick auf Connect (zuerst am Server bis die Verbindung steht – grünes Symbol) und anschließend am Client eine Verbindung aufgebaut werden. Ob die Verbindung steht, kann mittels einfachem Ping auf 10.1.1.1 überprüft werden.

Um über diese Verbindung auch ins interne LAN zu kommen, also die Verbindung zu bridgen, sind ein paar kleine Anpassungen notwendig. Mit der Installation des OpenVPN- Clients wurde am Server ein TAP-Device erstellt. Dieses Device ist wie eine virtuelle Netzwerkkarte und wird benötigt, um diesen Tunnel zwischen VPN-Klienten aufzubauen.

netzwerkadapter

Um eine Bridge in das interne LAN einzurichten, muss dieses TAP-Device am Server mit der normalen Netzwerkkarte gebridget werden.

  • Zuerst benennen wir das TAP-Device (sollte als Lokaler Netzwerkadapter X in den Netzwerkeigenschaften stehen) um in tap-bridge.
  • Anschließend markieren wir die Netzwerkkarte für das lokale LAN und die tap-bridge, klicken mit der rechten Maustaste darauf und wählen “Verbindung überbrücken”.
  • ACHTUNG – Solltet ihr auf euerem Server keinen Monitor angeschlossen haben und nur per Fernwartung darauf verbunden sein, kann es passieren, dass nun die Verbindung gekappt wird, da das neue Device noch keine Netzwerkeinstellungen hat.
  • Es wird nun ein neuer Adapter erstellt, welcher wie ein Switch die beiden Welten des Tunnels und des lokalen Netzwerks zusammenschließt. Dieser Adapter muss nun dieselben Netzwerkeinstellungen bekommen wie jener, der für das lokale LAN zuständig war. Bei mir hatte der Server die IP Adresse 192.168.2.254, Subnetz 255.255.255.0 Gateway 192.168.2.1 und als DNS sich selbst.tap-bridge-settings
  • In der Serverkonfiguration müssen nun nur noch ein paar Zeilen angepasst werden:

konfig_server_bridged

Dann sollte nach einem Neustart des OpenVPN-Clients und einem erneuten Connect auch die LAN-internen Geräte erreichbar sein, zu überprüfen abermals mit einem Ping auf die einzelnen IP-Adressen.

Ich hoffe, ich konnte mit dieser Anleitung ein paar Anregungen für euere Versuche mit OpenVPN geben und falls es Probleme gibt: einfach kommentieren.

Falls ihr eine Übersicht aller Befehle zu OpenVPN benötigt, einfach unter folgendem Link nachlesen.

Quellen:

Download