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

 

Windows Server und der Event Viewer

Der Event Viewer ist unter Windows das mitunter wichtigste Tool um Probleme zu erkennen und auch zu beheben. Aus gegebenen Anlass möchte ich euch kurz beschreiben wie ich mich dadurch vor einem Datenkollaps retten konnte.

Eines Abends wollte ich meinen Subversion Server, welcher unter einem Windows 2003 Server läuft updaten. Vermutlich hatte ich ein schlechtes Gefühl, also schaute ich mal kurz die Logs im Event Viewer durch. Ein Schauder lief mir über den Rücken, als ich bemerkte, dass hier reihenweise Einträge mit der Quelle disk vorhanden waren. Diese Einträge verheißen normalerweise nichts gutes. Der Eintrag The device, \Device\Harddisk1, has a bad block gab mir anschließend den Rest.

Mein nächster Blick galt dem Disk Manager unter welchem alle Festplatten aufgelistet sind. Hier erkannte ich, dass die im Event Viewer als problematisch gemeldete Festplatte, eine aus meinem Raid1 Array ist. Somit weiter nicht so schlimm, da es ja eine zweite Platte mit den selben Daten gibt, die mittlerweile den Job (Daten übers Netz bereitstellen) alleine übernimmt.

Das schockierende an der Sache war allerdings, dass eine der beiden gespiegelten Festplatten offensichtlich ein Problem hatte und ich NICHTS mit bekommen habe. Wenn ich nicht durch Zufall die Einträge im Event Viewer kontrolliert hätte, würde der Server heute noch mit nur einer Festplatte arbeiten. Um kurz den Aufbau meines Servers zu erklären: Das System befindet sich auf einer 640Gbyte großen Systemfestplatte und die Daten auf einem RAID1 Array mit zwei 2Tbyte Festplatten.

Die defekte Festplatte wurde am nächsten Morgen sofort getauscht, die Daten spiegelte der Server mit einem nächtlichen resync von selber wieder rüber, doch ganz beruhigt war ich immer noch nicht. Wie kann ich mir nun solche Fehler melden lassen, am besten ohne großen Aufwand und ohne auf den Server zu schauen.

Ich dachte mir es muss doch Tools geben die die Ereignisanzeige überwachen und mir bei Fehlermeldungen ein Mail schicken. Eine kurze googelsche Befragung ergab als Ergebnis EventSentry als mein Tool der Wahl.

Mit EventSentry könnt ihr euren Server überwachen und dieses Tool ist zudem auch noch Gratis verfügbar. Die Konfiguration ist denkbar einfach, man konfiguriert den SMTP Server seines Providers (damit EventSentry auch Mails absenden kann) und wartet bis der erste Fehler in die Ereignisanzeige eingetragen wird. Natürlich gibt es für die Konfiguration auch einen Test Button.

Ihr könnt euch EventSentry unter folgendem Link runterladen http://www.eventsentry.com/ Es gibt eine abgespeckte Light Version die für den normalen Homeuser bzw Kleinbetriebe ausreichen sollte.

Ein paar Eindrücke über die Oberfläche und Konfigurationsmöglichkeiten findet ihr bei den angehängten Bildern.

Windows 2003 Server EventID:1054 Einträge

Ich habe vor ein paar Wochen bei einem Kollegen einen Windows 2003 Server mit Active Directory u.v.m. installiert. Der Rechner war als Stromsparserver ausgelegt und somit mit einer AMD Stromspar CPU ausgerüstet. Genauer gesagt handelt es sich um die CPU “AMD Athlon Dual Core Processor 4850e”. Nach ein paar Tagen fehlerfreien Betrieb, kontrollierte ich die Einträge im Event Viewer und siehe da, es kommen ca. alle 5 Minuten Einträge mit der EventID: 1054. Die Meldung lautete “Windows cannot obtain the domain controller name for your computer network. (An unexpected network error occured. ). Group Policy processing aborted”

Nach einiger Zeit Google und Microsoft Knowledgebase probierte ich einen Workaround den ich öfters finden konnte (unter anderem auch in der Microsoft Knowledgebase). Anscheinend gibt es mit dieser Prozessorreihe Probleme mit den Time Stamp Countern. Laut Knowledgebase Artikel bei Microsoft wird diese EventID generiert wenn diese Timer (je einer pro Prozessorkern) nicht mehr synchron laufen.

Um dieses Problem zu behebn muss in der boot.ini, welche im Root (also z.b.: C:\) des Systemverzeichnisses liegt folgender Schalter hinzugefügt werden.

/usepmtimer

Ein anschließender Neustart sollte das Problem für immer beheben. Unter folgendem Link könnt ihr euch den Microsoft Knowledgebase Artikel selbst durchlesen.

 http://support.microsoft.com/kb/938448/de