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