Eine englische Version dieses Artikels wurde für Daemonnews geschrieben und in der Ausgabe vom September 2004 veröffentlicht.
Updates gibt's in meiner englischen Fassung!


Non-Proprietärer VPN-Zugang für NetBSD und Linux
zum VPN der Uni Regensburg
Hubert Feyrer, November 2003

1. Hintergrund

Die auf dem Cisco 3000 VPN Concentrator basierende VPN-Lösung der Uni Regensburg ist bisher nur für diverse Binärplatformen wie u.a. Windows und Linux verfügbar, jedoch nicht im Quellcode. Die vorliegende Lösung basiert auf dem von Geoffrey Keating und Maurice Massar entwickelten Programm "vpnc" das komplett im Source verfügbar ist, und bisher auf Linux (Intel und PowerPC) sowie unter NetBSD erfolgreich eingesetzt wurde. Die folgenden Beispiele beschreiben die Konfiguration mit NetBSD, da diese Platform bisher von der Dokumentation des Rechenzentrums der Uni Regensburg nicht abgedeckt wird. Für Linux werden entsprechende Hinweise gegeben da der Cisco Client nicht mit dem Kernel ab Version 2.6 zusammenspielt.

2. Software

An Software ist das Programm "vpnc" zu installieren. Dieses ist unter der Adresse http://www.unix-ag.uni-kl.de/~massar/vpnc/ erhältlich. Für NetBSD ist das Package dazu in pkgsrc/security/vpnc bzw. hier zu finden.

3. Konfiguration

3.1 Vorbereitungen

Die Universität Regensburg unterscheidet zwischen drei verschiedenen Zugängen zu ihrem Netz via VPN, je nachdem ob man bereits im internen Netz ist, von "aussen", über einen beliebigen Provider wie etwa T-Online von zuhause aus kommt oder sich im WaveLAN Netz befindet.

An Betriebsystem-Voraussetzungen ist unter NetBSD darauf zu achten, dass das "tun" Pseudo-Device im Kernel ist (Default im GENERIC Kernel), ausserdem ist sicherzustellen dass der Kernel sowohl IPsec als auch das Encapsulating Security Payload (ESP) Protokoll versteht. Folgende Zeilen sind also in der Kernel Config-Datei nötig:

	options        IPSEC           # IP security
	options        IPSEC_ESP       # IP security (encryption part; define w/IPSEC)
	pseudo-device  tun        2    # network tunneling over tty
Unter Linux ist unter "Network Device Support" der "Universal tun/tap Device Driver" einzucompilieren.

Desweiteren muß unter Linux darauf geachtet werden, dass /dev/net/tun existiert - bei NetBSD ist dies in der Standardkonfiguration enthalten. Der "Interface name" ist auf beiden Systemen "tun0".

In beiden Konfigurationen ist anstatt "abc12345.5.stud" die jeweils eigene NDS-Kennung anzugeben, relativ zum Kontext "uni-regensburg.de" bzw. "fh-regensburg.de". Anstatt "GEHEIM" ist das jeweils eigene NDS-Passwort einzutragen, das "IPSec secret" ist per Telefon (+49 941 943 4848) von Karl Wuerfl vom Uni-RZ zu erfahren, oder alternativ von der Online-Doku des Uni-Rechenzentrums unter https://www-soft.uni-regensburg.de/dist/cisco/vpn/client/, letzteres allerdings nur mit Login und Passwort für das NDS-System der Uni!

3.2 Via Internet

Für den Betrieb via Internet, z.B. um zuhause mit T-Online/T-DSL Anbindung aus ins VPN der Uni zu gelangen ist folgendes in der Datei /usr/pkg/etc/vpnc.conf abzulegen:
	Interface name tun0
	IKE DH Group dh2
	Perfect Forward Secrecy nopfs
	IPSec gateway vpngate-internet.uni-regensburg.de
	IPSec ID internet
	IPSec secret PhoneKarlWuerflAt4848
	Xauth username abc12345.5.stud
	Xauth password GEHEIM

3.3 Im WLAN-Netz der Uni Regensburg

Für einen Betrieb via WaveLAN am Campus ist folgender Inhalt in /usr/pkg/etc/vpnc.conf nötig:
	Interface name tun0
	IKE DH Group dh2
	Perfect Forward Secrecy nopfs
	IPSec gateway vpngate-wlan.uni-regensburg.de
	IPSec ID wlan
	IPSec secret PhoneKarlWuerflAt4848
	Xauth username abc12345.5.stud
	Xauth password GEHEIM

4. Starten

Wenn die Software erfolgreich installiert wurde und die passende Konfigurationsdatei abgelegt wurde kann das Programm als root gestartet werden:
	# vpnc
	VPNC started in background (pid: 16196)...
Mit dem folgenden Befehl kann anschliessend die IP-Nummer ermittelt werden, mit der man im VPN der Uni Regensburg zugange ist:
	# ifconfig tun0
	tun0: flags=51 mtu 1412
		inet 132.199.212.1 -> 132.199.212.1 netmask 0xffffffff
Die IP-Nummer ist dabei 132.199.212.1 - diese Nummer kann sich für jeden neuen Verbindungsaufbau zum VPN ändern!

5. Routing aufsetzen

5.1 Via Internet - Von zuhause an die Uni

Sollen Rechner der Uni Regensburg über das VPN erreicht werden, so ist das Routing entsprechend aufzusetzen. Für NetBSD:
	route add -net 132.199.0.0 -interface 132.199.212.1
bzw. unter Linux:
	route add -net 132.199.0.0 dev tun0
Damit können alle Rechner der Uni Regensburg auf "kurzem" Weg über das VPN erreicht werden. 132.199.0.0 ist dabei das Netz der Uni Regensburg, 132.199.212.1 die dem tun0 Interface von vpnc zugewiesene IP-Adresse innerhalb des VPN.

5.2 Source-basiertes Routing - Von der Uni nach Hause

Soll auf Dienste des eigenen Rechners zugegriffen werden, so muss dazu sichergestellt sein, dass die Antworten auf eingehende Pakete ebenfalls über das VPN gesandt werden. Erreicht wird dies unter NetBSD hiermit:
	route delete -net 132.199.0.0
	echo "pass out on ppp0 to tun0 from 132.199.212.1 to any" | ipf -f
132.199.212.1 ist dabei die vom vpnc zugewiesene IP-Adresse des tun0 Interfaces, und ppp0 ist das ausgehende Interface (wahlweise auch wi0 für Wavelan).

5.3 Im WLAN-Netz der Uni Regensburg

Ähnlich wie beim VPN-Zugang von zuhause aus muß auch hier dafür gesorgt werden, daß Pakete nicht direkt sondern über das VPN gesandt werden. Errreicht wird dies unter NetBSD mit folgendem Befehl:
	route add -net default -interface 132.199.212.1
bzw. unter Linux:
	route add -net default dev tun0
Wie gehabt ist 132.199.212.1 die dem tun0 zugewiesene IP-Nummer, die ggf. anzupassen ist.

6. Links

7. Autoren

Diese Anleitung wurde von Hubert Feyrer <hubertf@netbsd.org> mit kräftiger Unterstützung von Harold Gutch <logix@foobar.franken.de> erstellt.
This page has been accessed 47763 times.
Copyright (c) 2003-2006 Hubert Feyrer
$Id: netbsd-vpn-howto.html,v 1.16 2003/12/17 13:12:53 feyrer Exp $