Sie sind hier:  /  Netzwerk  /  VPN  /  OpenVPN: Bridging

Deutsch  /  English

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.