Ich habe das Skript zum automatischen Aufbau einer VPN-Verbindung zum VPN der Universität Karlsruhe mittels vpnc etwas überarbeitet. Das Skript arbeitet nun auch wunderbar mit dem WLAN zusammen. Sollte eine Verbindung zum WLAN mit der ESSID „VPN/WEB“ aufgebaut werden, so startet nun vpnc. Zusätzlich habe ich noch eine Debug-Funktion eingebaut, falls es mal doch nicht klappen sollte….
[UPDATE: Dieser Artikel ist veraltet! Sollten Sie über eine Internetsuche auf diesen Artikel gestoßen sein, so schauen Sie sich bitte besser den Artikel VPN der Uni-Karlsruhe mit vpnc (überarbeitet)… an. Dieser enthält die selben Informationen, ist jedoch auf einem aktuellen Stand! [/UPDATE]
#!/bin/bash
## 02uni-ka-vpnc 1.1 by Christoph Langner
## 2008 by Christoph Langner, published under the GPL v3
##
## Changelog
## 1.1: Ermöglicht nun auch den automatischen Aufbau des VPN über WLAN
## Sollte man eine andere ESSID als "VPN/WEB" nutzen, so passt man dazu
## die Variable $ESSID_VPN an.
## 1.0: Erstes Release. VPN Zugang nur via Kabel.
## INITIALISIERUNG
#Diese Werte werden vom NetworkManager an das Skript übergeben
INTERFACE=$1
ACTION=$2
## DEBUGGING
# Falls DBG_MODE=1 werden verschiedene Angaben nach $LOG ausgegeben
DBG_MODE=0
LOG=/tmp/dispatcher.log
## ESSID des Universitäts Netzwerkes
# In diesem Fall das VPN WLAN der Universität Karlsruhe
ESSID_VPN="VPN/WEB"
## NETWORKING
#IP des Rechners herausfinden
IP=$(ifconfig $INTERFACE | grep 'inet addr' | awk '{print $2}' | sed -e 's/.*://')
IP_START=$(echo $IP | awk -F. '{print $1}')
#ESSID des verbundenen Netzwerks bestimmen
ESSID=$(iwconfig $INTERFACE | grep ESSID | awk {'print $4'} | sed -e 's/ESSID://g' | sed -e 's/"//g')
## DEBUG Funktionen
log() {
if [ $DBG_MODE=1 ]; then
echo IP: $IP >> $LOG
echo IP_START: $IP_START >> $LOG
echo ESSID: $ESSID >> $LOG
fi
}
log_action() {
if [ $DBG_MODE=1 ]; then
echo ========= >> $LOG
echo $(date) >> $LOG
echo ACTION: $ACTION, Device: $INTERFACE >> $LOG
fi
}
#Funktionen durchführen, je nach Aktion eine andere
case "$2" in
up)
#vpnc starten, falls im Uni Netzwerk
log_action
log
if [ $IP_START=129 ]; then
vpnc
elif [ $ESSID=$ESSID_VPN ]; then
sleep 15
vpnc
fi
;;
down)
#vpnc stoppen
log_action
if [ "$(pidof vpnc)" ]; then
vpnc-disconnect
fi
;;
pre-up)
#einen vorher laufenden vpnc stoppen
log_action
if [ "$(pidof vpnc)" ]; then
vpnc-disconnect
killall vpnc
fi
;;
post-down)
#vpnc wirklich stoppen, falls abgestürzt
log_action
if [ "$(pidof vpnc)" ]; then
vpnc-disconnect
killall -9 vpnc
fi
;;
*)
echo $"Usage: $0 {up|down|pre-up|post-down}"
exit 1
esac
Das Skript habe ich auch zum Download hochgeladen. Via…
$ sudo wget -P /etc/NetworkManager/dispatcher.d/ http://www.linuxundich.de/static/2uni-ka-vpnc
$ sudo chmod +x /etc/NetworkManager/dispatcher.d/02uni-ka-vpnc
…kann man es herunterladen und ausführbar machen. Spätestens bei einem Neustart wird nun das Dispatcher-Skript ausgeführt. Achtung: vpnc muss neu kompiliert werden. Das bei Ubuntu aus den Paketquellen installierte vpnc kann sich nicht zu Cisco-VPN-Routern mit hybrider Verschlüsselung verbinden. Daher bitte diesen Artikel VPN der Universität Karlsruhe über vpnc beachten.





Schreibe einen Kommentar