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 compiliert werden. Das bei Ubuntu aus den Paketquellen installierte vpnc kann sich nicht zu Cisco VPN Router mit hybrider Verschlüsselung verbinden. Daher bitte diesen Artikel VPN der Universität Karlsruhe über vpnc beachten.

Vorheriger ArtikelFirefox 3, The Next Generation
Nächster ArtikelBildschirm mit einem Klick ausschalten
Hallo, ich bin Christoph - Linux-User, Blogger und pragmatischer Fan freier Software. Wie ihr ohne Zweifel bemerkt haben solltet, schreibe ich hier über Linux im Allgemeinen, Ubuntu im Speziellen sowie Android und andere Internet-Themen. Wenn du Freude an meinen Artikel gefunden haben solltest, dann kannst du mir über Facebook, Twitter oder natürlich dem Blog folgen.

3 Kommentare

  1. Kann man das Script so optimieren, dass die NetworkManager-eigene VPN-Routine aufgerufen wird? So kann man eher nachvollziehen, ob die Verbindung getrennt wurde und nach meiner Erfahrung ist die Verbindung auch stabiler.

  2. Hallo bas89, mit ein bisschen dbus-Magie ließe sich das vermutlich machen. Ich bin aktuell aber selten an der Uni, so dass ich jetzt meist die Verbindung sowieso über den NetworkManager aufbaue.

Schreibe einen Kommentar zu Christoph Antwort abbrechen

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein