Wie man einen OpenVPN Server auf einem EdgeMax Router mit mehreren WANs aufsetzt

Einen OpenVPN Server mit mehreren WANs aufzusetzen kann frustrierend sein, vor allem weil es wenig Informationen dazu gibt. Wir haben’s geschafft und zeigen euch wie’s geht.

Diese Anleitung richtet sich an Personen mit Grundkenntnissen der Netzwerkadministration, sowie an Nutzer des Linux Betriebssystems im Allgemeinen und EdgeOS im Besonderen. Unter Annahme eines multi-WAN Setup wie von UBNT beschrieben, wenden wir die von LasLabs beschriebenen Schritte mit für multi-WAN zusätzlich benötigten Einstellungen an.  Der OpenVPN Server wird von einem ausgewählten WAN aus erreichbar sein.

EdgeMax ist das von Ubiquiti verwendete Betriebssystem. Ubiquiti EdgeRouter sind leistungsstarke, relativ kostengünstige Geräte, die dazu noch reich an verschiedenen Funktionen sind. Zwei Funktionen die wir im Folgenden nutzen werden sind Load Balancing über mehrere WANs und ein über den Router ausgeführter OpenVPN Server.

Aufsetzen des Load Balancing

Der erste Schritt besteht darin, das Load Balancing wie im Ubiquiti Support Center Eintrag [1] beschrieben aufzusetzen. Damit sind die IP Pakete durch die Firewall mit mark 1 für ISP-1 und mark 2 für ISP-2 gekennzeichnet. Die statische Routing-Tabelle stimmt mit dem connection mark überein und wählt das WAN entsprechend aus. Im modify Ruleset können zusätzlich beliebige Regeln, wie z.B. übereinstimmende Port Nummern oder Quell- und Zieladressen, festgelegt werden. Manche Webseiten müssen beispielsweise über ein fixes WAN aufgerufen werden, da man sonst sofort ausgeloggt wird, wenn sich das WAN, und damit die externe IP Adresse, ändert.

Der Einfachheit halber arbeiten wir hier mit dem Konfigurationsbeispiel aus [1] und der folgenden Einstellung:

  • ISP-1 mit 192.0.2.1 am ISP Modem und 192.0.2.2 am Edge Router
  • ISP-2 mit 203.0.113.1 am ISP Modem und 203.0.113.2 am Edge Router
  • 172.16.0.0/24 Subnetz für das LAN

Natürlich müssen diese IP Adressen jeweils durch die eigenen ersetzt werden.

Networkdiagram Load Balancing Edgemax Router OpenVPN Server

 

Einen Hostnamen für die VPN Verbindung erstellen

Die VPN Verbindung soll über ISP-1 laufen. Wir brauchen also einen Hostnamen der auf eine an den Port des Edge Router gerichtete IP Adresse verweist. Wenn ein verwendeter ISP Router die Netzwerkadresse des Edge Routers per NAT umwandelt, muss der Hostname natürlich auf die externe Adresse verweisen. In diesem Fall muss ein Port Forwarding von UDP Port 1194 zum Edge Router eingestellt werden. In dieser Anleitung nutzen wir in der Folge die Domain myvpn.codefluegel.com mit der IP 192.0.2.2 als Beispiel.

Erstellen der X.509 Zertifikate

Jetzt müssen die Files angelegt und die Zertifikate für die CA, den OpenVPN Server und die Clients, wie unter [2] im Punkt „EdgeRouter Lite Server“ (Schritte 1 bis 8) beschrieben, erstellt werden. In unserem Beispiel nutzen wir myvpn.codefluegel.com als Namen für das host.pem Zertifikat. Dabei speichern wir die folgenden Dateien in /config/auth:

  • das CA Zertifikat „cacert.pem“
  • die Datei des Server Zertifikats „host.pem“
  • die Server Schlüsseldatei „host.key“
  • die Diffie-Helman Datei „dhp.pem“

Den Router konfigurieren

Anschließend muss das virtuelle Device vtun0 aufgesetzt werden. Analog zu [2] nutzen wir dafür ein 192.168.70.0\24 Subnetz. Grundsätzlich sollte man als Root Benutzer nie etwas ausführen, das keine Root Rechte erfordert. Daher sollte auch dieses Setup unbedingt als normaler User (z.B. ubnt) ausgeführt werden. Die folgenden Befehle wurden ebenfalls aus [2] im Bereich „Server Setup“ (Schritte 9 bis 11) übernommen und für unser IP Setting angepasst.

configur
e
edit interfaces openvpn vtun0

set mode server

set server subnet 192.168.70.0/24

set tls ca-cert-file /config/auth/cacert.pem

set tls cert-file /config/auth/host.pem

set tls key-file /config/auth/host.key

set tls dh-file /config/auth/dhp.pem

set server push-route 172.16.0.0/24

set server client stefan_vpn.codefluegel.com ip 192.168.70.20


Der letzte Befehl muss für alle Client-Zertifikate wiederholt werden. Der Hostname muss mit dem Namen des Zertifikats übereinstimmen, die IP ist die einem Client zugewiesene statische IP Adresse. 

Jetzt ist noch eine wichtige Ergänzung notwendig, damit OpenVPN mit unserem multi-WAN Setup funktioniert. Die vtun0 verlassenden response packets müssen über ISP-1 abgewickelt werden. Dies wird erreicht, indem das connection mark auf 1 gesetzt wird.

set openvpn-option "--mark 1"

 


Die Firewall anpassen

Da die Firewall Konfiguration stark von jedem individuellen Setup abhängt, gehen wir an dieser Stelle nicht näher ins Detail. Folgendes muss jedenfalls sichergestellt werden:

  • der UDP Port 1194 ist offen
  • 
der Zugang von vtun0 zum Netzwerk ist offen wenn auf das Netzwerk zugegriffen werden soll

Bei einer Zonen-basierten Firewall Einstellung, kann vtun0 beispielsweise innerhalb derselben Zone wie das lokale Netzwerk Device platziert werden, um VPN Zugang auf das gesamte LAN zu erlauben.

Die Einstellungen speichern

commit
save

Nach dem commit, wird nach dem Passwort für das Server Zertifikat gefragt. Wenn das OpenVPN im „Config Tree“ über das Web Frontend des Routers aufgesetzt werden soll, funktioniert das nur, wenn das Passwort aus der Schlüsseldatei entfernt wird. Daher empfiehlt es sich, zumindest den SSL Teil des virtuellen Devices mit dem Configure Tool zu konfigurieren.

Damit ist der OpenVPN Server für mehrere WANs aufgesetzt. Gratuliere! Solltest du Hilfe brauchen oder Fragen haben, kannst du uns gerne kontaktieren.

 

Verweise:
[1] EdgeMAX – Policy-based routing with WAN load-balancing
[2] Configure OpenVPN with X.509 – Ubiquiti EdgeRouter Lite