OpenVPN Server auf DD-WRT Router betreiben

Um mit einem OpenVPN Client eine sichere Verbindung in ein Netzwerk aufzubauen, ist ein OpenVPN Server auf der Gegenseite Voraussetzung. Wer auf sein eigenes Netzwerk zugreifen möchte, benötigt einen eigenen Server. Ein solcher Server kann z.B. auf einem Raspberry Pi laufen. Auf dem heimischen Router ist dann lediglich eine Portweiterleitung auf den Rasperry Pi erforderlich. Wer die zusätzliche Hardware für einen Server scheut, kann den OpenVPN Server direkt auf seinem Router betreiben. Dazu ist eine OpenSource Router Firmware wie OpenWRT oder DD-WRT notwendig.


Auf meinem Router (TP-Link WDR4300) läuft aktuell DD-WRT, da ich mit OpenWRT massive WLAN Performance Probleme hatte. DD-WRT ist ein wenig unflexibler, da es nicht so modular wie OpenWRT aufgebaut ist, dafür ist es deutlich Anwenderfreundlicher, was gerade für weniger Erfahrene User ein großer Vorteil ist. Eine Übersicht, welche Router mit DD-WRT betrieben werden können findet sich hier: Klick Bei der Firmware ist unbedingt darauf zu achten, dass die openSSL Version 1.0.1g enthalten ist, um nicht mehr vom Heartbleed Bug betroffen zu sein! Um den OpenVPN Server erfolgreich zu betreiben sind eigene Zertifikate erforderlich. Wie diese erzeugt werden können, habe ich hier beschrieben: Klick Auf der DD-WRT Weboberfläche wird der OpenVPN Server unter „Services\VPN“ aktiviert. Im Folgenden werden alle abweichenden relevanten Änderungen beschrieben.

DD-WRT OpenVPN Server

Network: VPN Netz, über welches später der Tunnel laufen wird. Hier ist es wichtig, eine möglichst ungewöhnliche Range einzutragen, um keine Adresskonflikte mit oft verwendeten Ranges aus Public Hotspots (192.168.1.x) zu bekommen.
Netmask: Hier habe ich nur ein /29 Netz eingetragen, da ich maximal 6 VPN IPs benötigen werde. Die Subnetmask kann je nach Bedarf angepasst werden.
Encryption Cipher: Hier wird der Algorithmus gewählt mit dem der Traffic innerhalb des Tunnels verschlüsselt wird.
Hash Algorithm: Hier sollte SHA1 auf jeden Fall durch einen aktuelleren Cipher ersetzt werden.
TLS Cipher: Wird für den TLS Handshake benötigt. Unter iOS funktioniert aktuell kein aktuellerer/besserer Cipher als der gewählte
Redirect Gateway: Soll sämtlicher Netzwerkverkehr über den Tunnel geroutet werden, muss diese Option aktiviert werden
Allow Client to Client: Nur notwendig, wenn die Clients untereinander kommunizieren sollen
Allow duplicate CN: Sollte ein Client Zertifikat auf mehreren Clients die gleichzeitig verbundenen sind verwendet werden, muss diese Option aktiviert werden.

Die Grundeinstellungen des Servers sind somit abgeschlossen. Im nächsten Schritt müssen die erstellten Zertifikate hinzugefügt werden. Die Zertifikate können mit Notepad geöffnet werden, um den Inhalt zu kopieren.

DD-WRT OpenVPN Server

Public Server Cert: Inhalt von server.crt
CA Cert: Inhalt von ca.crt
Private Server Key: Inhalt von server.key
DH PEM: Inhalt von dh2048.pem

Im Feld „Additional Config“ können optionale Client Konfigurationen mitgegeben werden.
push route: Netzsegment des privaten Netzwerks (muss an eigene Gegebenheiten angepasst werden)
push dhcp-option DNS: Hier wird der DNS Server des eigenen Netzwerks sowie als optionale Alternative der OpenDNS DNS Server mitgegeben.
max-clients: Maximale Anzahl gleichzeitig verbundener Clients

Um auch bei OpenVPN „Perfect Forward Secrey“ zu nutzen, kann optional ein TLS Authentifizierungs Key angegeben werden. Dieser wird über die Kommandozeile auf einem OpenVPN Client mit folgendem Befehl erzeugt:

  • openvpn –genkey –secret ta.key

Die Revokation List muss erst gepflegt werden, wenn tatsächlich ein ausgestelltes Clientzertifikat zurückgezogen werden soll, weil es nicht mehr vertrauenswürdig ist.
Über Save + Apply werden die Änderungen gespeichert und der Server ist somit aktiv. Sollen die verbundenen Clients auch ins Internet, ist auf der DD-WRT Firewall ein Eintrag hinzuzufügen. Die Firewall wird über das Menü „Administration\Commands“ konfiguriert.

Bei Commands wird folgender Befehl eingetragen:

  • iptables -t nat -A POSTROUTING -a 10.21.173.0/29 -j MASQUERADE

Die IP Range sowie das Netzsegment müssen natürlich an die eigenen Gegebenheiten angepasst werden. Über einen Klick auf „Save Firewall“ wird die Änderung aktiviert.

DD-WRT OpenVPN Server

Die erfolgte Anpassung ist dann auch nachträglich ersichtlich

DD-WRT OpenVPN Server

Ab jetzt können sich die Clients per VPN mit dem Heimnetzwerk verbinden und gesichert kommunizieren. Wie ein Client konfiguriert wird, zeige ich im kommenden Beitrag anhand eines iOS Geräts.