VPN-Zugang zur UNI Karlsruhe unter Linux
von Roland Bernert

Problem:
Sie haben einen DSL-Zugang (T-Online, 1&1, Arcor usw.) und möchten weiterhin den Lehrer-Rechner der UNI-Karlsruhe so benutzen wie bisher.
Oder: Sie möchten über einen Internet-by-Call-Provider ins Intenet und weiterhin den Lehrer-Rechner- Zugang der UNI-Karlsruhe benutzen.

Dabei funktioniert <fast> alles; Sie können aber keine Mails versenden.

Das ist auch richtig so:
Um den Mailserver (smtp.rz.uni-karlsruhe.de) der UNI-Karlsruhe zu benutzen, muss man sich aus Sicherheitsgründen an der UNI-Karlsruhe einwählen (0721-38340).
Aber genau dieses möchten Sie aus irgendwelchen Gründen (DSL, zu teuer usw.) nicht.

Lösung: 
VPN (Zugang über Virtual Private Network)

Voraussetzungen:

  • Erforderlich sind nach wie vor Benutzername und Passwort für den PPP-Zugang der UNI-Benutzerverwaltung (zusätzlich zum Lehrer-Account).
  • Meine Konfigration:

  • SuSE 9.0 mit selbstcompiliertem Kernel Version: 2.4.23. 
    Die Kernel-Quellen und -Headers müssen installiert sein
  • Der Zugang zum Internt muss bereits funktionieren (beliebiger Internetprovider)
So gehts:

Auf ftp://www.lehrer.uni-karlsruhe.de/pub/Programme/VPN/ gibt es den VPNClient für Linux
Bei mir war es die Version:  vpnclient-linux-4.0.1.A-k9.tar.gz.
Das Tar-File lege ich im Verzeichnis /src ab.
Zusätzlich ist noch die Datei extern.pcf herunter zu laden.

Fehler beim Internet Explorer: Zum Download die Links mit der rechten Maustaste anklicken und dann "Ziel speichern unter..." wählen. In der dann erscheinenden Dateibox den Dateityp bitte auf "Alle Dateien" ändern, da ansonsten die Downloads die zusätzliche Endung .txt erhalten und nicht importiert werden können.

Installation

Man entpackt das TAR-File wie üblich in einem beliebigen Verzeichnis - bei mit /src

cd /src
tar -xzvf vpnclient-linux-4.0.1.A-k9.tar.gz
Danach exisitiert das Unterverzeichns : vpnclient
Zur Installation existiert ein fertiges Script (vpn_uninstall)
Dieses wird gestartet:
cd vpnclient/
./vpn_uninstall
Jetzt kommen einige Abfragen, die beantwortet werden müssen. 
Im Folgenden habe ich den Abauf einfach aufgezeichnet.
Cisco Systems VPN Client Version 4.0.1 (A) Linux Installer
Copyright (C) 1998-2001 Cisco Systems, Inc. All Rights Reserved.

By installing this product you agree that you have read the
license.txt file (The VPN Client license) and will comply with
its terms. 

Directory where binaries will be installed [/usr/local/bin

Automatically start the VPN service at boot time [yes] no

Bemerkung: Ich möchte den VPN-Client-Service nicht beim Booten automatisch starten:
In order to build the VPN kernel module, you must have the
kernel headers for the version of the kernel you are running.

For RedHat 6.x users these files are installed in /usr/src/linux by default
For RedHat 7.x users these files are installed in /usr/src/linux-2.4 by default
For Suse 7.3 users these files are installed in /usr/src/linux-2.4.10.SuSE by default

Directory containing linux kernel source code [/lib/modules/2.4.23/build

* Binaries will be installed in "/usr/local/bin".
* Modules will be installed in "/lib/modules/2.4.23/CiscoVPN".
* The VPN service will *NOT* be started automatically at boot time.
* Kernel source from "/lib/modules/2.4.23/build" will be used to build the module.

Is the above correct [y] y

Shutting down /usr/local/bin/vpnclient: module cisco_ipsec is not running.
Stopped: /etc/init.d/vpnclient_init (VPN init script)
Making module
Create module directory "/lib/modules/2.4.23/CiscoVPN".
Copying module to directory "/lib/modules/2.4.23/CiscoVPN".
Creating start/stop script "/etc/init.d/vpnclient_init".
insserv: script vpnclient_init is not executable, skipped!
vpnclient_init  0:off   1:off   2:off   3:off   4:off   5:off 6:off
insserv: script vpnclient_init is not executable, skipped!
vpnclient_init  0:off   1:off   2:off   3:off   4:off   5:off 6:off
Updating VPN configuration file "/etc/CiscoSystemsVPNClient/vpnclient.ini".

Installing license.txt (VPN Client license) in
"/etc/CiscoSystemsVPNClient/":

Installing bundled user profiles in "/etc/CiscoSystemsVPNClient/Profiles/":
* Replaced Profiles: sample 

Copying binaries to directory "/usr/local/bin".

Setting permissions.
/usr/local/bin/cvpnd (setuid root)
/etc/CiscoSystemsVPNClient (world writeable)
/etc/CiscoSystemsVPNClient/Profiles (world writeable)
/etc/CiscoSystemsVPNClient/Certificates (world writeable)
* You may wish to change these permissions to restrict access to root.

* You must run "/etc/init.d/vpnclient_init start" before using the client.
* You will need to run this script every time you reboot your computer.

Gut. Die Installation hat also geklappt :-))


Benutzung:

Jetzt wird der VPN-Service gestartet mit

/etc/init.d/vpnclient_init start
  Starting /usr/local/bin/vpnclient: Warning: loading
  /lib/modules/2.4.23/CiscoVPN/cisco_ipsec will taint the kernel: 
  non-GPL license - Proprietary
  See http://www.tux.org/lkml/#export-tainted for information about
  tainted modules
  Module cisco_ipsec loaded, with warnings
  Done
Die Warnhinweise stören nicht weiter.
Nun kann überprüft werden, ob das VPN-Modul geladen wurde:
lsmod
  Module                  Size  Used by    Tainted: P 
  cisco_ipsec           379072   0  (unused)
  .....
OK, das scheint also auch zu klappen.

Jetzt muss nur noch das entsprechende Profil für die UNI-Karlsruhe (extern.pcf) ins Verzeichnis
/etc/CiscoSystemsVPNClient/Profiles/ kopiert werden:

cd /etc/CiscoSystemsVPNClient/Profiles/
cp /src/extern.pcf .
Bei mir sah der Inhalt des Verzeichnisses danach so aus:
linux90:/etc/CiscoSystemsVPNClient/Profiles # l
total 20
drwxrwxrwx    2 root     root         4096 Jan 20 19:50 ./
drwxrwxrwx    4 root     root         4096 Jan 20 19:25 ../
-rwxr-xr-x    1 root     root          621 Jan 20 19:50 extern.pcf*
-rw-rw-rw-    1 root     root          349 Jan 20 19:25 sample.pcf
Als nächstes stellt man eine "normale" Internetverbindúng her (entweder per Script oder einfacher mit Hilfe des kppp unter der KDE-Oberfläche) und startet anschließend den VPN-Client.
linux90:~ # vpnclient connect extern
  Cisco Systems VPN Client Version 4.0.1 (A)
  Copyright (C) 1998-2003 Cisco Systems, Inc. All Rights Reserved.
  Client Type(s): Linux
  Running on: Linux 2.4.23 #3 Fri Dec 19 16:51:52 CET 2003 i686

  Initializing the VPN connection.
  Contacting the gateway at 129.13.72.1
  User Authentication for extern...

  Enter Username and Password.

  Username [za186]: 
  Password []: 
  Authenticating user.
  Negotiating security policies.
  Securing communication channel.
  Your VPN connection is secure.

  VPN tunnel information.
  Client address: 129.13.79.10
  Server address: 129.13.72.1
  Encryption: 168-bit 3-DES
  Authentication: HMAC-MD5
  IP Compression: LZS
  NAT passthrough is active on port UDP 10000
  Local LAN Access is disabled

Der VPN-Tunnel ist also hergestellt.


Beenden des VPN-Tunnels:
linux90:~ # vpnclient disconnect
  Cisco Systems VPN Client Version 4.0.1 (A)
  Copyright (C) 1998-2003 Cisco Systems, Inc. All Rights Reserved.
  Client Type(s): Linux
  Running on: Linux 2.4.23 #3 Fri Dec 19 16:51:52 CET 2003 i686

  Disconnecting the VPN connection.
  Your VPN connection has been terminated.

Sollte etwas nicht klappen, kann man sich in einer anderen Konsole mit
tail -f /var/log/messages
die Meldungen anschauen.


Beim den weiteren Verbindungen muss man nur noch den VPN-Client mittels
vpnclient connect extern
in einem Terminalfenster starten. 
Solange dieses Programm läuft,ist auch der Tunnel aktiv. Schließen Sie deshalb dieses Fenster nicht.
Sie können nun beliebige Internet-Programm verwenden. Ihre gesamte Internetkommunikation läugt nun verschlüsselt durch den VPN-Tunnel.
Auch in einem lokalen Netz können andere Rechner nur durch den Tunnel erreicht werden.

Den Status der VPN-Verbindung erhält man mit  # vpnclient stat.

Beendet wird der VPN-Tunnel einfach mit           # vpnclient disconnect
oder, indem man in dem Terminalfenster, in dem die VPN-Verbindung gestartet wurde, das Programm mit <CTRL-C> unterbricht..


Anhang:

Die Profil-Datei extern.pcf sieht so aus:

[main]
Description=
Host=rz-ipsec.rz.uni-karlsruhe.de
AuthType=1
GroupName=unika
GroupPwd=
enc_GroupPwd=B9B204EF593D........
ISPConnectType=0
ISPConnect=
ISPCommand=
Username=za186     <<< geändert
SaveUserPassword=0
UserPassword=
enc_UserPassword=
NTDomain=
EnableBackup=0
BackupServer=
EnableMSLogon=1
MSLogonType=0
EnableNat=1
TunnelingMode=0
TcpTunnelingPort=10000
CertStore=0
CertName=
CertPath=
CertSubjectName=
CertSerialHash=00000000000000000000000000000000
SendCertChain=0
DHGroup=2
ForceKeepAlives=0
PeerTimeout=120
EnableLocalLAN=1

Roland Bernert mit Unterstützung von Ulrich Betzler (RZ-UNI-Karlsruhe)