Mehrere VPN Verbindungen gleichzeitig unter Ubuntu nutzen

Verschiedene Plugins für den Netzwerk-Manager von Gnome ermöglichen unkompliziert eine VPN Verbindung mit OpenVPN, PPTP (Windows) oder VPNC von Cisco einzurichten und zu verwalten. Beim Thema mehrere VPN gleichzeitig kommt der Netzwerkmanager nicht mehr mit. Es kann immer nur eine Verbindung gestartet werden. Die Community wünscht sich bereits diese Funktion für die Zukunft.

In meinem Fall muss ich allerdings 2 VPN Verbindungen gleichzeitig aufbauen. Zuerst einen Tunnel via OpenVPN um in die DMZ des Unternehmens zu gelangen. Darin befindet sich ein PPTP-VPN-Gateway um in die Windows Domäne zu gelangen. Das bedeutet also ich muss quasi einen VPN Tunnel durch einen bereits bestehenden Tunnel erzeugen. (Siehe Schema)

Da der Netzwerk-Manager kann aber nur einen Tunnel aufbauen. Also habe ich ein wenig im Netz – insbesondere auf dem Forum von ubuntuusers.de – recherchiert und eine Lösung gefunden.

Der erste Tunnel (OpenVPN) kann via Netzwerk-Manager eingerichtet und gestartet werden. Nun folgt der 2. Tunnel. Da dieser ja nicht gleichzeitig mit dem Netzwerk-Manager aufgebaut werden kann, brauchen wir eine Konsole. Da es eine VPN Verbindung in ein Windows Netz ist, wird das Paket pptp-linux benötigt

$ sudo apt-get install pptp-linux

Um eine Verbindung aufzubauen, muss zunächst sichergestellt werden, dass die IP des Gateway (Im Beispiel: 10.1.0.1) auch auf das korrekte Interface geroutet wird (Im Beispiel: tun0). Sprich – Die Anfragen an die Windows Domäne mussen natürlich auch durch den Tunnel geroutet werden. Auskunft hierüber erteilt das Programm route.

$ route -n

Wie im Beispiel sollte das Netz der DMZ auf das Interface des OpenVPN Tunnels verweisen.

10.1.0.0     10.0.1.21      255.255.255.0   UG    0      0        0 tun0

Ist das der Fall kann man nun den 2. Tunnel einrichten. (Ich bin beim Einrichten nach dem HOWTO auf Sourceforge vorgegangen.)

Als erstes muss das allgemeingültige Template für Wählverbindungen bearbeitet werden.

$ sudo nano /etc/ppp/options.pptp

Die folgenden Optionen müssen einkommentieren werden. Es darf nur die Authentifizierung zugelassen werden die benötigt wird. In meinem Fall MSCHAP-V2. Alle anderen müssen abgelehnt werden (refuse-*).

lock
noauth
nobsdcomp
nodeflate
refuse-pap
refuse-eap
refuse-chap
refuse-mschap

Als nächstes gehts an die Zugangsdaten.

$ sudo nano /etc/ppp/chap-secrets

Hier die folgende Zeile hinzufügen.

DOMAIN\\USERNAME PPTP DOMAIN_PASSWORD *

Am Ende muss noch der Tunnel angelegt werden.

$ sudo nano /etc/ppp/peers/TUNNEL-NAME

Die Kursivgeschriebenen Werte müssen natürlich mit den entsprechenden originalen Werten ersetzt werden.

pty "pptp 10.1.0.1 --nolaunchpppd"
name DOMAIN\\USERNAME
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam TUNNEL-NAME

Ist das alles geschafft kann man die Verbindung mit dem Befehl pon testen.

$ sudo pon TUNNEL-NAME debug dump logfd 2 nodetach

Hinweis: Diese Zeile ist zum Testen der Verbindung! Die Konsole wird erst nach dem Trennen der Verbindung wieder freigegeben.

Funktioniert die Verbindung reicht der folgende Befehl.

$ sudo pon TUNNEL-NAME

Jetzt haben wir zwar eine Verbindung in das Netz, damit aber unsere Anfragen richtig geleitet werden brauchen wir noch eine Route durch den Tunnel ins verbundene Netz. (Beispiel: Die Windows Domäne hat das Netz 10.10.0.0/16 und der Tunnel ist ppp0)

$ sudo route add -net 10.10.0.0 netmask 255.255.0.0 dev ppp0

Am Ende wird die Verbindung mit dem folgenden Befehl getrennt.

$ sudo poff TUNNEL-NAME

Dieses Beispiel zeigt eine exemplarische Vorgehensweise und kann auf beliebige Szenarien angewendet werden.

Weitere Informationen zum Thema:
http://forum.ubuntuusers.de
http://brainstorm.ubuntu.com/idea/12951/
http://pptpclient.sourceforge.net/howto-ubuntu.phtml#configure_by_hand

OpenVPN unter Mac OS X

Um eine OpenVPN Verbindung unter MacOS X herzustellen verwende ich das Programm Tunnelblick. Unter http://code.google.com/p/tunnelblick/ kann die aktuelle Version bezogen werden.
Die Installation ist »für einen Mac typisch« sehr einfach.

Die Konfiguration ist simpel, wenn eine *.p12 und *.ovpn Datei vorhanden ist. Diese Dateien müssen nur in das Verzeichnis ~/Libary/openvpn/ kopiert werden. Fertig! Alternative Konfigurationen sind hier beschrieben.

Nach dem Programmstart, befindet sich ein Eintrag Verbinden ‚XXXX‘ (Wobei XXXX der Name der *.ovpn Datei ist). Beim Verbinden ist nur noch das Zertifikatspasswort nötig und schon steht die Verbindung.

OpenVPN unter Ubuntu

Netzwerkmanager-VPNUm in Ubuntu (bei mir 9.10) eine OpenVPN Verbindung mit dem Netzwerkmanager von Gnome herstellen zu können wird das Paket network-manager-openvpn benötigt.

Mit folgendem Befehl lässt es sich einfach installieren. (Evtl. fehlende Pakete werden automatisch mit installiert.)

sudo apt-get install network-manager-openvpn

OpenVPN-hinzufuegenNach der Installation kann über den Netzwerkmanager eine VPN-Verbindung vom Typ OpenVPN hinzugefügt werden.

In meinem Fall habe ich vom OpenVPN Server nur eine *.ovpn und eine *.p12 vorliegen. Mit diesen beiden Dateien allerdings ist eine Einrichtung so ohne weiteres nicht möglich.

In das Feld Gateway wird die IP aus der *.ovpn (Zeile beginnt mit: remote ohne den Port) eingetragen. Anschließend werden die Zertifikate benötigt, die sich mit den folgenden Befehlen aus der *.p12 extrahieren lassen.

Zertifikat der Zertifizierungsstelle:

openssl pkcs12 -in client.p12 -out client.pem

Zertifikat des Benutzers:

openssl pkcs12 -in client.p12 -out client.crt -clcerts -nokeys

Privater Schlüssel:

openssl pkcs12 -in client.p12 -out client.key -nocerts

OpenVPN-bearbeitenNach dem Anwenden der Einstellungen ist im Panel unter VPN-Verbindungen die soeben erstellte OpenVPN Verbindung verfügbar und kann gestartet werden.