29.07.2016
Kategorie: Linux

Routing mit openconnect-VPN


Unter Linux gibt es openconnect, mit dem z. B. zu einem Cisco AnyConnect-VPN verbunden werden kann. Das Problem ist, dass die gesamte Routingtable verändert wird, und man nur mehr in das VPN kommt. Ein Zugriff auf das "normale" Internet ist nicht mehr möglich.

Abhilfe schafft ein kleines Script, das für die VPN-Verbindung einen eigenen Networknamespace generiert:

#!/bin/bash

IP=`hostname -I | cut -d' ' -f1`

ip netns add myvpn
ip link add veth0 type veth peer name veth1
ip link set veth1 netns myvpn
ip netns exec myvpn ifconfig veth1 192.168.99.1/24 up
ifconfig veth0 192.168.99.2/24 up
ip netns exec myvpn route add default gw 192.168.99.2
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.99.0/24 -j SNAT --to-source $IP
ip netns exec myvpn openconnect -b --no-cert-check -u myvpnuser --passwd-on-stdin https://123.123.123.123 < pw.txt
ip netns exec myvpn sudo -u myunixuser /bin/bash

killall openconnect
iptables -t nat -D POSTROUTING -o eth0 -s 192.168.99.0/24 -j SNAT --to-source $IP
ifconfig veth0 down
ip netns exec myvpn ifconfig veth1 down
ip link delete veth0
ip netns delete myvpn

123.123.123.123 ist dabei die Adresse des VPN-Servers
myvpnuser der Username für das VPN
myunixuser der Username im lokalen Linux-System, mit dem gearbeitet werden soll
Das Skript muss als root aufgerufen werden.

In der Datei pw.txt muss das VPN-Passwort stehen. Alternativ kann man es jedesmal eingeben, wenn man --passwd-on-stdin weglässt.

Nach Aufruf des Skriptes startet eine bash-Shell, in der das VPN aktiv ist. Außerhalb dieser Shell ist das VPN nicht erreichbar, dafür ist das Routing dort unverändert. Es kann also ganz normal auf das Internet zugegriffen werden. Braucht man eine zweite VPN-Shell, ruft man diese Zeile einfach in einer weiteren Shell auf:

ip netns exec myvpn /bin/bash

Jede dieser VPN-Shells kann mit exit beendet werden. Die erste Shell (die vom Skript geöffnet wurde) sollte als letztes beendet werden.


 
Telefon:
E-Mail:
Fax:
Web:

+43 2682 24080
office(at)epb.at
+43 2682 205 7700 9963
zum Kontaktformular