OpenVPN-Verbindungen aufbauen: Teil 1 - Heimischen Router mit Android verbinden
Tutorial-Serie über das Konfigurieren von OpenVPN. Teil 1 erklärt das Einrichten von OpenVPN auf einem Router mit Tomato-Firmware und einem Android-Telefon.
Im Artikel “Mit Tomato (shibby-Mod) eine VPN-Verbindung mit Android herstellen” hatte ich schon über den Aufbau einer sicheren Verbindung, mittels PPTP-Protokoll geschrieben. Da dieser VPN-Server nicht auf jedem Router installiert ist und das PPTP-Protokoll in Zeiten von NSA und Co nicht ganz sicher ist, stelle ich euch den Verbindungsaufbau mittels OpenVPN vor. OpenVPN ist in den meisten Routern (FRTITZ!Box, DD-WRT, Tomato by Shibby) schon vorhanden, oder lässt sich nachträglich installieren.
Im ersten Teil der Tutorialserie wird die Einrichtung des Servers auf einem Router mit Tomato by Shibby – Firmware gezeigt und wie man sich mit einem Android Smartphone darauf verbindet.
OpenVPN-Server einrichten
Für eine VPN-Verbindung benötigen wir Zertifikate und Schlüssel für den Server (Router) und einem Client (Android-Smartphone). Mit dem Paket “easy-rsa”, kann man sich alle benötigten Dateien bequem erstellen.
Benötigte Software herunterladen
Da “easy-rsa” nicht mehr im OpenVPN-Paket enthalten ist, müssen wir dieses unter GitHub downloaden. Wir entscheiden uns für den release/2.x – Branch, da dieses am einfachsten zu benutzen ist.
Damit wir Zertifikate und Co. erstellen können, benötigen wir OpenSSL. Auch unter einem 64-Bit Windows benötigen wir nur das kleine Paket: Win32 OpenSSL v1.0.1f Light.
OpenSSL installieren und einrichten
Bei der Installation von OpenSSL Light gibt es nichts weiter zu beachten. Spenden könnt Ihr natürlich am Ende gerne, die Entwickler werden sich freuen . Damit die OpenSSL-Befehle ausgeführt werden können, muss das bin-Verzeichnis noch zu den Umgebungsvariablen hinzugefügt werden. Drückt dazu *Win » Pause *und paar Klicks auf Erweiterte Systemeinstellungen » Umgebungsvariablen. Bei Systemvariablen die Variable Path bearbeiten und am Ende, getrennt mit einem Semikolon, dass bin-Verzeichnis (“C:\OpenSSL-Win32\bin”) von OpenSSL angeben.
easy-rsa entpacken und benutzen
Als nächstes entpacken wir das heruntergeladene easy-rsa - Paket. Im Anschluss erstellen wir unter C: die Ordnerstruktur “C:\temp\easy-rsa” und kopieren den Inhalt vom easy-rsa – Windowsverzeichnis (“easy-rsa-release-2.x\easy-rsa\Windows”) nach “C:\temp\easy-rsa”. Anschließend muss die Konfigurationsdatei “openssl-1.0.0.cnf”, welche sich im easy-rsa 2.0-Verzeichnis (“easy-rsa-release-2.x\easy-rsa\2.0”) befindet, nach “C:\temp\easy-rsa” kopiert werden. Das Verzeichnis sollte somit folgende Dateien enthalten:
Wir starten als nächstes die Windowskonsole und navigieren zu C:\temp\easy-rsa:
cd C:\temp\easy-rsa
Als erstes wird die Datei “init-config.bat” gestartet. Wir sehen das unsere “vars.bat.sample” als Kopie mit dem Namen “vars.bat” abgespeichert wird.
Die “vars.bat” bearbeiten wir mit einem ordentlichen Texteditor, wie beispielsweise Notepad++. Als erstes setzen wir die Variable HOME. Dieses ist unser Hauptverzeichnis von easy-rsa, also “C:\temp\easy-rsa\”.
Im nächsten Schrittbearbeiten wir die Variablen am Ende der Datei, welche für die Zertifikatserstellung von Bedeutung sind:
Wichtig ist hierbei, dass ihr bei KEY_CN die Adresse angibt, unter welcher der VPN-Server später erreichbar sein wird. Das kann hierbei ein Standard-DDNS-Provider (DynDNS, FreeDNS, oder was auch immer euer Router unterstützt) sein oder in meinem Fall eine Subdomain, welche auf die IP des VPN-Servers zeigt. Wie man eine Subdomain als DDNS benutzt, könnt ihr hier nachlesen. Wir begeben uns wieder in die Windowskonsole und starten die Datei “vars.bat”. Somit werden unsere Variablen gesetzt.
Im nächsten Schritt starten wir die Datei “clean-all.bat”. Mit dieser Batch-Datei wird der Ordner “keys” angelegt und die Dateien “index.txt” und” “serial” angelegt. Die Fehlermeldungen braucht einen nicht zu verunsichern, da die Datei, welche gelöscht werden soll, noch nicht existiert.
Mit “build-ca.bat” erstellen wir unsere eigene Zertifizierungsstelle. Sollte jetzt die Fehlermeldung:
WARNING: can't open config file: /usr/local/ssl/openssl.cnf
…erscheinen, muss der Konfigurationspfad von OpenSSL noch in den Umgebungsvariablen eingefügt werden. Das kann man einfach über die Konsole mit folgenden Befehl erledigen:
set OPENSSL_CONF=C:\OpenSSL-Win32\bin\openssl.cfg
Danach wieder die “vars.bat” und “clean-all.bat” ausführen. Jetzt sollte auch die “build-ca.bat” ohne Fehler starten. Jetzt werden wir zu den Zertifikatsangaben gefragt. Da wir diese schon in der “vars.bat” festgelegt haben, können wir alle Angaben mit Enter bestätigen.
Da wir jetzt eine Zertifizierungsstelle haben, können wir im nächsten Schritt unser Zertifikat und den Schlüssel für den Server erstellen. Dazu geben wir “build-key-server.bat server”. Wieder bestätigen wir alle Angaben mit Enter und geben zweimal “y” ein, damit unser Zertifikat-Schlüssel-Paket erstellt wird.
Jetzt ist unser Zertifikat für das Telefon an der Reihe. Dieses erstellen wir mit “build-key.bat android”. Beim Signieren des Zertifikats kann es wieder zu einem Fehler kommen:
TXT_DB error number 2
Diesen können wir einfach beheben in dem wir in der Datei “index.txt.attr” unique_subject auf no setzen. Der Inhalt der Datei sollte nun so aussehen:
unique_subject = no
Jetzt dürfte die Zertifizierungserstellung reibungslos funktionieren.
Im letzten Zertifizierungsschritt wird die Diffie Hellman-Datei mit “build-dh.bat” erzeugt. Das dauert mitunter eine Weile.
OpenVPN-Server auf dem Router einrichten
War die Zertifikatserstellung erfolgreich, kann den OpenVPN-Server eingerichtet werden. In meinem Beispiel konfiguriere ich meinen Router, welcher mit Tomato by Shibby läuft. Dazu loggt ihr euch auf den Router ein und navigiert zu VPN Tunneling » OpenVPN Server. Die Einstellungen bei Basic …
…und bei Advanced können wie abgebildet übernommen werden. Für das Surfen über VPN, ist der Haken bei “Direct clients to redirect Internet traffic” essentiell!
Im Tab “Keys” fügt ihr eure Zertifikate und Schlüssel ein. Die Dateien befinden sich im Ordner “C:\temp\easy-rsa\keys. Mit Notepad++ werden die Dateien geöffnet und der Inhalt kopiert. Für “Certificate Authority” brauchen wir den Inhalt aus der Datei: “ca.crt”. Bei “Server Certificate” ist es die Datei “server.crt” (Den Text vor -----BEGIN CERTIFICATE----- braucht ihr nicht kopieren). “Server Key benötigt“ die Datei “server.key” und die Diffie Hellman Parameter (Diffie Hellman parameters) benötigt den Inhalt aus “dh2048.pem”
Mit einem Klick auf “Start Now” können wir unseren OpenVPN-Server starten. Wenn alles geklappt hat wechselt der Button zu “Stop Now”. Wir wechseln auf Status und klicken auf “Refresh Status” und warten auf unsere Clients :).
OpenVPN auf Android einrichten
Als erstes benötigen wir eine App. Ich kann die App OpenVPN für Android von Arne Schwabe empfehlen. OpenVPN Connect kann man jedoch auch benutzen. Hat jedoch keine bequeme Startbildschirmsverknüpfung. Vorteil von beiden Apps, diese benötigen keinen root-Zugriff.
Wir entscheiden uns für OpenVPN für Android, welches wir über Googles Playstore auf das Telefon installieren. Um uns zum OpenVPN-Server zu verbinden, benötigen wir die zuvor erstellten Android-Zertifikate. Auf dem internen Speicher des Smartphones erstellen wir einen Ordner “openvpn”. In dieses Verzeichnis kopieren wir die Dateien: “android.crt”, “android.key” und “ca.crt”. Im Anschluss erstellen wir eine Datei namens config.ovpn mit folgenden Inhalt:
client
dev tun
proto udp
remote subdomain.xuad.net 1194
resolv-retry infinite
nobind
persist-key
persist-tun
script-security 2
redirect-gateway def1
ca ca.crt
cert android.crt
key android.key
comp-lzo
verb 4
Relevant ist die Zeile “remote subdomain.xuad.net 1194”, hier gebt ihr eure Adresse und den Port des OpenVPN-Servers an. Jetzt startet ihr “OpenVPN für Android” und klickt auf das Ordner-Symbol.
Wir navigieren zum erstellen openvpn-Ordner und wählen die “config.ovpn” Datei aus.
Mit dem Klick auf das Symbol für Speichern wird unsere Konfiguration angelegt.
Unter Grundeinstellungen kann die Konfiguration optional umbenannt werden.
Das war’s! Wenn ihr euch noch im heimischen WLAN befindet, schaltet dieses auf dem Handy aus und aktiviert das mobile Datennetz. Jetzt brauchen wir nur noch auf die Verbindung klicken und die VPN-Verbindung wird aufgebaut. Zuvor muss der Anwendung noch vertraut werden, sonst geht nix!
Das Log füllt sich und es sollte am Ende oben “Verbunden:SUCCESS” stehen. Zur Kontrolle öffnen wir noch einen Browser unser Wahl und surfen wieistmeineip.de an:
Es sollte schließlich eure WAN-IP-Adresse eures heimischen Internet-Anschlusses zu sehen sein. Ihr surft nun sicher über euren Router, auch wenn ihr euch im mobilen Datennetz befindet.