Zurück zur Hauptseite
Hat dir diese Seite weitergeholfen?
Durchschnittliche Bewertung (vpnc):
2.86/3 (139 Stimmen)

eCampus mit GNU/Linux

...WLAN an der Uni-Duisburg mit vpnc

Das WLAN am Standort Duisburg der Universität Duisburg-Essen setzt die Installation eines VPN-Clients voraus. Cisco stellt diese Software für zahlreiche Betriebssysteme zur Verfügung, inklusive Windows, MacOS und Linux. Leider ist die Installation des Linux-Clients mit einigen Hindernissen behaftet, so dass eine Alternative besser erscheint.

Der Cisco-Client

Aufgrund dieser Dinge lässt sich der offizielle Cisco-VPNClient - wie er auch durch das HRZ empfohlen wird - nicht sehr gut in Debian GNU/Linux (bzw. Linux generell) integrieren.

Die Alternative

Das freie Softwarepaket vpnc bietet sich als Client für Cisco-VPN-Netze an. Zahlreiche Vorteile machen es wesentlich flexibler als den starren Cisco-Client; so kann der Server keine Einstellungen erzwingen (wie die Sperrung andere Netze oder die Nicht-Speicherung des Passworts), und anstelle eines eigenen proprietären Kernelmoduls greift vpnc auf das generische TUN/TAP-Interface des Kernels zurück. Neben Linux/x86 ist der Client auch auf PPC-Systemen sowie verschiedenen BSD-Varianten lauffähig, die Homepage der Software liefert dazu weitere Informationen.

Installation

Unter Debian ist vpnc schnell installiert: Es existiert bereits als Paket in Debian Sarge und wird so einfach mittels apt-get auf das System gebracht. Benutzer von Debian Woody (stable) können auf die Backports zurückgreifen; folgende Zeilen in der Datei /etc/apt/sources.list machen das Paket verfügbar:

# vpnc von backports.org
deb http://www.backports.org/debian stable vpnc
deb-src http://www.backports.org/debian stable vpnc

Der Befehl apt-get install vpnc installiert das Paket in beiden Fällen automatisch.

Die meisten größeren Distributionen haben ein vpnc-Paket im Repertoire; Unter Gentoo wird es mit "emerge vpnc", und SuSE mit Hilfe von YaST instaliert.

Konfiguration

Nun muss eine Konfigurationsdatei angelegt werden; Dazu kann man die .pcf-Datei des HRZ als Informationsquelle heranziehen. Die Konfiguration kann man z.B. in /etc/vpnc/ecampus.conf ablegen:

IPSec gateway 172.17.2.1
IPSec ID ecampus
IPSec secret ecampus
Xauth username XXXXXXXX
Xauth password YYYYYYYY

Anstatt XXXXXXXX und YYYYYYYY werden natürlich HRZ-Kennung und das dazugehörige Passwort benötigt.

Ein Wort zum Gruppenpasswort: Der Cisco-Client speichert das Passwort nur in einer verschleierten Form ab, so dass ein direktes Auslesen dieses Wertes nicht möglich ist. Mit Hilfe dieser Seite ist es möglich, das Passwort zu entschlüsseln.

Verbinden

Vpnc setzt auf die TUN/TAP-Interface des Kernels auf; daher ist es nötig, das Modul "tun" zu laden. Automatisch geschieht dies, wenn der Modulname in die Datei /etc/modules in einer neue Zeile eingetragen wird.

Das Skript /usr/sbin/vpnc-connect erleichtert die Verbindung zum VPN: Es legt automatisch Netzrouten an und stellt sicher, dass alle notwendigen Device-Dateien existieren. Um sich in das VPN einzubuchen, reicht der einfache Aufruf mit der Konfigurationsdatei als Argument:

vpnc-connect /etc/vpnc/ecampus.conf

Daraufhin wird die gesicherte Verbindung über das neue Netzwerkdevice "tun0" initialisiert:

nano:~# ifconfig tun0
tun0	Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    	inet addr:134.91.XX.YY  P-t-P:134.91.XX.YY  Mask:255.255.255.255
	UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1412  Metric:1
	RX packets:0 errors:0 dropped:0 overruns:0 frame:0
	TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
	collisions:0 txqueuelen:10
	RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Der Befehl vpnc-disconnect trennt die Verbindung wieder.

Debian-Komfort

Das VPN lässt sich zusätzliche Netzwerkverbindung in der Konfigurationsdatei /etc/network/interfaces definieren:

iface tun0 inet manual
    up vpnc-connect /etc/vpnc/ecampus.conf
    down vpnc-disconnect

Danach stellen die Kommandos ifup tun0 und ifdown tun0 den Zugang in das Uni-Netz her bzw. trennen diesen. Für noch mehr Komfort sorgt sorgt die Kopplung des VPNs mit dem WLAN-Interface:

iface wlan0 inet dhcp
    wireless yes
    wireless_mode managed
    wireless_enc off
    wireless_essid ecampus
    up ifup tun0 &
    down ifdown tun0 &

Diese Konfiguration startet automatisch das VPN, sobald der Laptop im WLAN angemeldet ist; wird die Verbindung vom WLAN getrennt, so wird auch das VPN abgekoppelt. Wichtig hierbei sind die & hinter den ifup/ifdown-Kommandos: Werden sie ausgelassen, so blockieren sich die beiden simultan ausgeführten ifup/ifdown-Prozesse.

Mehr Informationen über /etc/network/interfaces, sowie die automatische Auswahl verschiedener Konfigurationsprofile finden sich hier.

Kontrolle mit MRTG

Wer sein Traffic-Kontingent im Auge behalten möchte, kann das Programm MRTG benutzen, um die angefallenen Datenmengen darzustellen. Dazu benötigt man lediglich ein Perl-Skript, das die Informationen vom HRZ-Server abfragt, und einen Eintrag in der Datei mrtg.conf:

Title[uni-wlan]: Volumen Uni-WLAN (eCampus)
PageTop[uni-wlan]: <H1>Volumen Uni-WLAN (eCampus)</H1>
Target[uni-wlan]: `/usr/local/sbin/ecampustraffic.pl; uptime; uname -n`
MaxBytes[uni-wlan]: 2000
YLegend[uni-wlan]: MB
ShortLegend[uni-wlan]: MB
Options[uni-wlan]: gauge,nopercent,nolegend

In das Perl-Skript werden dabei HRZ-Kennung als auch Passwort eingetragen.

iPAQ

Auch ein mit Familiar Linux ausgestatteter PDA der iPAQ-Reihe kann am VPN teilnehmen, sofern er über entsprechende WLAN-Hardware verfügt - neuere Modelle wie der H5450 haben diese bereits integriert. Die Familiar-Distribution hat vpnc bereits in ihrem Paketystem integriert, so dass er ganz einfach zu installieren ist:

ipkg install vpnc

Ist der Client installiert, so kann die gleiche Konfiurationsdatei, wie sie auch für das Notebook genutzt wird (siehe oben), in das (noch zu erzeugende) Verzeichnis /etc/vpnc/ kopiert werden. Da jedoch das ifupdown-System der Busybox-Suite nicht mit "manual"-Einträgen umgehen kann, und auch vpnc-connect dem Paket nicht beiliegt, wird ein Skript benötigt:

#!/bin/sh
#
# ecampus.sh
#
# Cisco VPN for iPAQ devices
# Stefan Tomanek (stefan@pico.ruhr.de)


CONF=ecampus
WLAN=wlan0

PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin:

case "$1" in
	start)
		echo $$ > /var/run/ecampus
		logger "starting vpnc"
		insmod tun
		while ( ! ifconfig $WLAN | grep -q addr:172 ); do
			logger "ECAMPUS dhcp not ready yet, sleeping 1 second"
			sleep 1
		done
		vpnc --debug 1 /etc/vpnc/$CONF.conf || exit 1
		ip route del default
		ip route add default dev tun0

	;;
	stop)
		logger "stopping vpnc"
		kill $(cat /var/run/ecampus)
		killall vpnc
	;;
esac
exit 0

Da oftmals der DHCP-Server nicht schnell genug reagiert, wartet das Skript, bis das Netzwerk-Gerät wlan0 eine interne Universitätsadresse erhalten hat.

Aufgerufen als /sbin/ecampus.sh start initialisiert es das VPN anhand der Konfigurationsdatei /etc/vpnc/ecampus.conf; Um diesen Vorgang zu automatisieren, wird die /etc/network/interfaces folgendermaßen angepasst:

iface wlan0 inet dhcp
    wireless_essid ecampusd
    wireless_enc off
    wireless_mode managed
    up /sbin/ecampus.sh start 
    down /sbin/ecampus.sh stop
    up echo "nameserver 134.91.4.150" > /etc/resolv.conf

Im Idealfall startet der Befehl ifup wlan0 nun sowohl das WLAN als auch das VPN. Leider scheint die interne WLAN-Karte des H5450 etwas träge zu sein, so dass oft der iPAQ die Antwort des DHCP-Servers nicht abwarten kann: Eine Lösung samt dazugehörigen Skripts findet sich hier und hier.

Wer Mappings einsetzt, um zwischen verschiedenen WLAN-Profilen zu wechseln, den verweise ich zusätzlich auf einige Bugfixes für ifupdown.

Ein letzter Hinweis: Es ist nicht möglich, sich mit den gleichen HRZ-Daten mehrmals am VPN anzumelden, also simultan via Notebook und PDA.