OpenVPN-Anwendung: Per Brücke ins Heimnetzwerk
Diese Beschreibung zeigt, wie man einen OpenVPN-Server mit Netzwerkbrücke zur Anbindung sogenannter Road-Warrior einrichtet. Ich nutze diese Konfiguration, um von außen auf das Netzwerk zuzugreifen und leite meinen vollen Internetverkehr über diese Verbindung.
1. Vorbereitungen
Das erstellen der notwendigen Zertifikate und die Installation von OpenVPN ist im Kapitel OpenVPN: Routing beschrieben. Diese beiden Schritte sind für das weitere Einrichten notwendig.
2. Serverkonfiguration
Hier folgt zuerst die Konfiguration für den Server. Diese für sich alleine reicht z.B. auch schon aus, wenn man ein kleine Gaming-Netzwerk aufzubauen, bei dem keine Brücke ins "echte" Netzwerk nötig ist.
; TLS-Konfiguration ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/server.crt key /etc/openvpn/keys/server.key dh /etc/openvpn/keys/dh2048.pem tls-auth /etc/openvpn/keys/static.key 0 ; Netzwerkkonfiguration port 443 proto tcp-server dev tap0 ; Servermode-Konfiguration server-bridge 192.168.123.245 255.255.255.0 192.168.123.200 192.168.123.224 ; Tunnelkonfiguration comp-lzo keepalive 10 120
Die meisten verwendeten Konfigurationsparameter in dieser Konfiguration sind vom Routing her schon bekannt. Allerdings gibt es auch ein paar neu hinzugekommene Parameter.
Netzwerkkonfiguration
Ich habe OpenVPN als TCP-Server eingerichtet, der auf Port 443 lauscht. Da OpenVPN SSL/TLS zur Verschlüsselung verwendet, kann man so die Verbindung auch über einen Proxy aufbauen, der die Verbindung dank TCP, Port 443 und SSL-Paketen für eine Verbindung zu einem Webserver über HTTPS hält.
Servermode-Konfiguration
Diese Option ist zusammen mit der Definition von tap0 als Schnittstelle ausschlaggebend für den Brückenbau. Hier wird die Adresse des Servers, die Subnetmask des Netzwerkes und der IP-Adressbereich, aus dem die Clients ihre Adressen erhalten sollen, definiert.
3. Brücken bauen
Zur Vebindung des VPN mit dem "echten" Netzwerk sind unter Linux die bridge-utils notwendig. Diese installiert man über die Paketverwaltung der Distribution. Sind sie installiert richtet man die Brücke ein.
Ich habe dazu nicht den üblichen Weg gewählt, die Brücke per Skript beim Verbindungsaufbau zu erstellen, sonder erstelle die Brücke direkt beim Systemstart über die Netzwerkkonfigurationsdatei /etc/network/interfaces. Dazu ist folgende Konfiguration nötig:
# The loopback network interface auto lo iface lo inet loopback auto etho iface eth0 inet manual auto br0 iface br0 inet static address 192.168.123.245 netmask 255.255.255.0 broadcast 192.168.123.255 bridge_ports eth0
In der "Autostart"-Datei /etc/rc.local erledige ich die restlichen Aufgaben des Brückenbaus. Zuerst wird die TAP-Schnittstelle erstellt und der Brücke hinzugefügt. Dann werden tap0 und eth0 in den Promisc-Mode geschalten, sodass sie alle Pakete verarbeiten, nicht nur die ihnen zugeordneten. Danach wird direkt OpenVPN gestartet:
#!/bin/sh -e # Make tap-Interface, brdige and start openvpn openvpn --mktun --dev tap0 brctl addif br0 tap0 ifconfig tap0 0.0.0.0 promisc up ifconfig eth0 0.0.0.0 promisc up openvpn --config /etc/openvpn/bridging --daemon exit 0
4. Clientkonfiguration
Auch die Konfiguration des Clients ähnelt der des Routing-Clients. Daher ist hier nicht viel Erklärung nötig. Als Kommentar habe ich die für einen Proxy notwendige Option eingefügt. Je nach Proxy muss die IP und die Authentifizierungsmethode angepasst werden.
; TLS-Konfiguration ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/client.crt key /etc/openvpn/keys/client.key tls-auth /etc/openvpn/keys/static.key 1 tls-client ; Netzwerkkonfiguration dev tap0 port 443 proto tcp-client remote mein-openvpn-server.dyndns.org nobind ;http-proxy 1.2.3.4 8080 stdin basic ; Client-Konfiguration pull ; Tunnelkonfiguration keepalive 10 120 comp-lzo
5. Test der Verbindung
Je nach System und Netzwerkaufbau ist vor dem Verbindungsaufbau das Einrichten einer Portfreigabe (Port-Forwarding) notwendig. Startet man den Server nach benden der Konfiguration einmal neu, läuft der OpenVPN Server.
Auf dem Client startet man OpenVPN wieder mit: openvpn --config /pfad/zur/konfigurationsdatei
Meldet OpenVPN die erfolgreiche Verbindung, kann man den Tunnel verwenden und arbeiten, als sitze man direkt am Switch im Netzwerk.
6. Internet-Gateway über OpenVPN
Zur Nutzung des OpenVPN-Servers als Gateway ins Internet sind nur zwei Konfigurationsoptionen in der Client-Konfiguration notwendig:
route-gateway 192.168.213.245; Gateway-Adresse einsetzen
redirect-gateway
"route-gateway" kümmert sich darum, dass das Ziel-Gateway über die TAP-Verbindung geroutet wird, "redirect-gateway" modifiziert daraufhin die Routing-Tabelle des Betriebssystems.
7. Zweite Brücke
Es ist auch möglich, auf dem Client eine weitere Brücke einzurichten, um weitere Rechner in das Netzwerk einzubinden. Ist man z.B. per Internetverbindung über W-LAN an das Heimnetzwerk angebunden, kann man per bridge-utils eine Brücke zwischen der LAN-Schnittstelle und der TAP-Schnittstelle erstellen und an der Netzwerkkarte beispielsweise einen weitere W-LAN-Accespoint anschliessen.
Ich habe diese Konfiguration bei der Präsentation meines VPN-Referates gezeigt und mich mit meinem iPod über meine Fritz!Box am LAN meines Laptops in das Heimnetzwerk verbunden. So konnte ich die ansonsten im Schulnetzwerk gesperrten Dienste wie IMAPs oder auch Youtube und ähnliches nutzen.