Linux und Ich

Blog über Ubuntu, Linux, Android und IT

Lizenziert unter CC by-sa von James & Vilija auf Flickr

VPN der Uni Karlsruhe: 02uni-ka-vpnc überarbeitet

| 3 Kommentare

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.christoph-langner.de/static/2uni-ka-vpnc
$ sudo chmod +x /etc/NetworkManager/dispatcher.d/02uni-ka-vpnc

kann man es herunterladen und ausführbar machen. Spätenstens 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.

Autor: Christoph Langner

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, Google+ oder 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.

  3. Ich habe eine Ewigkeit versucht, den NetworkManager mit dbus zu erreichen, aber nicht hinbekommen :(

    http://forum.ubuntuusers.de/topic/networkmanager-dbus/

Hinterlasse eine Antwort

Auf Linux und Ich darf anonym kommentiert werden. Die Felder für Name und E-Mail-Adresse dürfen beim Eintragen eures Kommentars leer bleiben. Ich freue mich aber über jeden Kommentar, zu dem der Autor mit seinem Namen steht.