Linux: VPN Client und Profildateien: Unterschied zwischen den Versionen

Zur Navigation springen Zur Suche springen
keine Bearbeitungszusammenfassung
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Die üblichen Profildateien *.pcf können unter Linux vor Ubuntu 9.04 '''nicht''' verwendet werden!
==Software==


Eine Beschreibung für Linux und VPN befindet sich im Wiki:
In gängigen Linux-Distributionen sind Cisco-kompatible VPN-Klienten
vorhanden. Es ist also nicht nötig, einen der
[http://www.fernuni-hagen.de/zmi/produkte_service/vpn_client.shtml VPN-Klienten von Cisco] zu installieren, sondern man kann einfach
einen der passenden VPN-Klienten der Distribution mit Hilfe der
Paketverwaltung (sei es RPM oder DEB) installieren. Man hat dabei die
Wahl zwischen <tt>vpnc</tt> und <tt>openconnect</tt>.


http://wiki.fernuni-hagen.de/helpdesk/index.php/Installation_des_VPN-Clients_unter_Kubuntu_Linux_7.04_(feisty)
Die Installation aus den Archiven der Distribution hat Vorteile: Der
VPN-Klient ist dann gut in den grafischen NetworkManager
integriert. Außerdem ist er für die vorhandene Architektur optimiert
und nicht lediglich für i386 compiliert. Vor allem aber werden
Security- und Bug-Fixes beim Systemupdate eingespielt und man muss
sie nicht zusätzlich von Cisco holen. Zudem verweist die
[http://www.infradead.org/openconnect/index.html Website von openconnect]
auf mehrere Sicherheits-Vorteile.


Es muss unbedingt Kvpnrc installiert werden!
Unter Ubuntu oder Debian verwendet man zur Installation den grafischen
Paketmanager oder gibt Folgendes an der Kommandozeile ein:


Ab Ubuntu 9.04 geht es einfacher, dann kann man die Profildateien *.pcf '''doch''' verwenden, siehe [[Ubuntu_und_VPN]]
<source lang="bash">$ sudo aptitude install vpnc</source>


{{kontakt}}
bzw.
 
<source lang="bash">$ sudo aptitude install openconnect</source>
 
Dies sind die VPN-Klienten für die Kommandozeile. Wenn man eine
Integration in die grafische Oberfläche will, muss man entsprechende
Plugins für den NetworkManager installieren:
 
<source lang="bash">$ sudo aptitude install network-manager-vpnc</source>
 
bzw.
 
<source lang="bash">$ sudo aptitude install network-manager-openconnect</source>
 
 
 
 
==vpnc==
 
 
===Profil-Dateien und Aufruf von vpnc===
 
 
Für die VPN-Verbindung zur FernUni benötigt <tt>vpnc</tt> eine auf
<tt>.conf</tt> endende Profil- oder Konfigurationsdatei im Verzeichnis
<tt>/etc/vpnc/</tt>, also zum Beispiel
<tt>/etc/vpnc/fernuni.conf</tt>, oder allgemein
<tt>/etc/vpnc/PROFILNAME.conf</tt>.
 
Der Klient wird dann mit folgendem Kommando gestartet und die
VPN-Verbindung aufgebaut:
 
<source lang="bash">$ sudo vpnc fernuni</source>
 
Oder allgemeiner:
 
<source lang="bash">$ sudo vpnc PROFILNAME</source>
 
Die Dateien <tt>/etc/vpnc/default.conf</tt>
bzw. <tt>/etc/vpnc.conf</tt> sind zur Definition eines default-Profils
vorgesehen. Der Verbindungsaufbau kann dann einfach mit <code>$ sudo
vpnc</code> vorgenommen werden. Weitere Informationen auch über
alternative Orte für Konfigurationsdateien findet man auf der man-Page
von vpnc. Sie wird an der Kommandozeile aufgerufen mit
 
<source lang="bash">$ man vpnc</source>
 
===Inhalt der Profildatei===
 
Was aber muss denn drinstehen in so einer Konfigurationsdatei? Es
können nicht einfach die pcf-Dateien verwendet werden, die die Fernuni
zur Verfügung stellt,
z.B. [http://www.fernuni-hagen.de/imperia/md/content/zmi/produkte/fu_vpn_stud_nat.pcf].
Der Grund: Die Konfigurationsparameter von <tt>vpnc</tt> haben andere
Namen als die des proprietären Cisco-VPN-Klienten. Es gibt aber
glücklicherweise ein Programm, das Cisco's pcf-Dateien konvertieren
kann, <tt>pcf2vpnc</tt>.
 
<source lang="bash">
$ whatis pcf2vpnc
pcf2vpnc (1)        - converts VPN-config files from pcf to vpnc-format
</source>
 
Dieser Konverter wird bei der Installation
von <tt>vpnc</tt> gleich mitinstalliert. Zum Beispiel wird das
[http://www.fernuni-hagen.de/imperia/md/content/zmi/produkte/fu_vpn_stud_nat.pcf Zugangsprofil für Studierende und MitarbeiterInnen mit privatem Netzwerk ohne split-Tunneling] folgendermaßen konvertiert:
 
<source lang="bash">
$ pcf2vpnc fu_vpn_stud_nat.pcf
## generated by pcf2vpnc
IPSec ID FU-VPN-STUD-NAT
IPSec gateway 132.176.101.101
IPSec secret FU-VPN-STUD-NAT
 
Xauth username riess
IKE Authmode psk
</source>
 
Diese Ausgabe von <tt>pcf2vpnc</tt> ist jetzt in einer
Konfigurationsdatei, z.B. in <tt>/etc/vpnc/fernuni.conf</tt> zu
speichern und dabei 'riess' durch den sprechenden Benutzernamen zu
ersetzen. Das geht mit dem Editor Ihrer Wahl oder einfach von der
Kommandozeile:
 
<source lang="bash">
$ sudo sh -c 'pcf2vpnc fu_vpn_stud_nat.pcf | sed s/riess/BENUTZERNAME/ > /etc/vpnc/fernuni.conf'
</source>
 
Man kann die Zeile <tt>Xauth username BENUTZERNAME</tt> übrigens auch
fortlassen. Dann wird man bei Aufbau des VPN-Tunnels nach einem
Benutzernamen gefragt.
 
Für die anderen pcf-Dateien geht man entsprechend vor.
 
 
===Herstellen und Trennen der Verbindung von der Kommandozeile===
 
Nach der Konfiguration kann die Verbindung folgendermaßen aufgebaut
werden:
 
<source lang="bash">
$ sudo vpnc fernuni
Enter password for BENUTZERNAME@132.176.101.101:
VPNC started in background (pid: 17370)...
</source>
 
Jetzt ist der Rechner Teil des Netzes der Fernuni. Wer sich im
Internet auf entsprechenden Seiten seine [http://http://whatismyv6.com/ IP-Nummer anzeigen] lässt, wird eine IP aus dem Range der
Fernuni sehen: 132.176.0.0.
 
Deaktiviert wird die Tunnelung über VPN durch
 
<source lang="bash">
$ sudo vpnc-disconnect
Terminating vpnc daemon (pid: 17370)
</source>
 
 
Wer möchte, kann sich auch die routing-Tabelle des Kernels
ansehen. Sie sollte ungefähr so aussehen:
 
<source lang="bash">
$ sudo vpnc fernuni
Enter password for BENUTZERNAME@132.176.101.101:
VPNC started in background (pid: ...
$ sudo route
Kernel IP routing table
Destination    Gateway        Genmask        Flags Metric Ref    Use Iface
default        *              0.0.0.0        U    0      0        0 tun0
vpn-public-r1.f 192.168.0.1    255.255.255.255 UGH  0      0        0 eth0
132.176.134.0  *              255.255.255.0  U    0      0        0 tun0
localnet        *              255.255.255.0  U    0      0        0 eth0
</source>
 
Das besagt Folgendes: Zeile 1: Jedes Paket mit Ziel Internet wird über
den Tunnel tun0 geschickt. Zeile 2: Pakete mit Ziel
vpn-public-r1.f[...ernuni-hagen.de] (= 132.176.101.101), also mit Ziel
Tunnel-Endpunkt gehen über die Netzwerkschnittstelle eth0 und den
Gateway 192.168.0.1 (einen Router im lokalen Netz); diese Route ist
ein Gateway (G-Flag). Zeile 3: Pakete mit einem Ziel im
Fernuni-IP-Range 132.176.134.0 gehen auch über tun0. Zeile 4: Pakete
für das lokale Netzwerk gehen über die Netzwerkschnittstelle eth0. -
Wer mehr davon verstehen will, lese unter
[http://linux-ip.net/html/basic-reading.html] nach.
 
 
===Integration in den NetworkManager (Gnome)===
 
Wer eine Integration in den grafischen NetworkManager bevorzugt,
installiere das Paket <tt>network-manager-vpnc</tt> wie oben
beschrieben. Dieses Plugin für das NetworkManager-Framework stellt
eine komfortable grafische Schnittstelle zum oben beschriebenen
<tt>vpnc</tt> zur Verfügung. <tt>vpnc</tt> wird bei der Installation
des Plugins durch die Paketverwaltung übrigens automatisch
mitinstalliert. Erfahrungsberichte über eine Verwendung des NetworkManagers finden
sich unter [[Ubuntu_und_VPN]].
 
===Integration mittels kvpnc (KDE)===
 
Alternativ kann man auch das grafische
Frontend für <tt>vpnc</tt> von KDE nehmen.
Eine Beschreibung findet
sich unter
[[Installation_des_VPN-Clients_unter_Kubuntu_Linux_7.04_(feisty)]].
 
==openconnect==
 
Mit <tt>openconnect</tt> ist die Herstellung eines VPN-Tunnels sehr
einfach. Nach Eingabe des Befehls wird man aufgefordert, ein Profil
auszuwählen und Benutzernamen und Passwort anzugeben:
 
<source lang="bash">
$ sudo openconnect https://webvpn.fernuni-hagen.de -b
Attempting to connect to 132.176.101.101:443
SSL negotiation with webvpn.fernuni-hagen.de
Connected to HTTPS on webvpn.fernuni-hagen.de
GET https://webvpn.fernuni-hagen.de/
Got HTTP response: HTTP/1.0 302 Object Moved
SSL negotiation with webvpn.fernuni-hagen.de
Connected to HTTPS on webvpn.fernuni-hagen.de
GET https://webvpn.fernuni-hagen.de/+webvpn+/index.html
Please enter your username and password.
GROUP: [FeU-Hagen-SSL|FeU-Hagen-SSL-VPN-Split|FeU-Hagen-SSL-VPNLLA|FeU-Personal|HomeIPPhone|IPPhone|Reserviert]:FeU-Hagen-SSL
Username:lueck
Password:
POST https://webvpn.fernuni-hagen.de/+webvpn+/index.html
Got CONNECT response: HTTP/1.1 200 OK
CSTP connected. DPD 30, Keepalive 20
Connected tun0 as 132.176.134.98, using SSL
Continuing in background; pid 20999
Established DTLS connection
</source>
 
Mit der Option <tt>-b</tt> wird der Client als Hintergrundprozess
gestartet. Wenn man den VPN-Tunnel wieder abschalten möchte, beendet
man nicht einfach brachial den Prozess, sondern sendet ihm statt
<tt>SIGTERM</tt> besser <tt>SIGINT</tt>. Das beendet den Prozess
sauber und es werden die vorherigen Netzwerk-Einstellungen
wiederhergestellt. Also:
 
<source lang="bash">
$ sudo kill -SIGINT 20999
Send BYE packet: Client received SIGINT
</source>
 
Wer die Handhabung der Prozess-IDs (hier 20999) scheut, der hat
folgende Möglichkeiten: Man kann <tt>openconnect</tt> ohne die Option
<tt>-b</tt> aufrufen, um den Tunnel aufzubauen, und mit der
Tastenkombination 'Strg' + 'c' den Prozess und den VPN-Tunnel
beenden (sendet auch <tt>SIGINT</tt>). Oder man kann auf den konfortablen
NetworkManager zurückgreifen.
 
===Integration in den grafischen NetworkManager===
 
Wer die Verwaltung des Netzwerks unter Gnome o.ä. vorzieht, der
installiere das openconnect-Plugin für den NetworkManager:
<tt>network-manager-openconnect</tt>.
 
==Fehlerbehebung==
 
===Internet wie tot - keine Namensauflösung===
 
Wird ein VPN-Tunnel unsauber beendet wird, kann es zu dem unangenehmen
Problem kommen, dass beim Surfen im Netz keine URLs mehr gefunden
(aufgelöst) werden. Das liegt unter Umständen daran, dass die
Konfiguration der Namensauflösung nicht wieder hergestellt worden ist,
sondern noch wie beim Betrieb des VPN-Tunnel konfiguriert ist. In der
Datei <tt>/etc/resolv.conf</tt> stehen dann noch die Nameserver der
Fernuni und nicht der/die Nameserver des Internet-Service-Providers
(ISP) bzw. die Adresse des Routers im Heimnetz. Die Datei sieht dann
ungefähr so aus:
 
<source lang="bash">
$ cat /etc/resolv.conf
#@VPNC_GENERATED@ -- this file is generated by vpnc
# and will be overwritten by vpnc
# as long as the above mark is intact
search homelinux.org fernuni-hagen.de
nameserver 132.176.129.201
nameserver 132.176.129.203
</source>
 
Eine intakte <tt>/etc/resolv.conf</tt> bei Betrieb des Rechners hinter
einem wlan-Router mit lokalem Netzwerk, wobei dieser Router auch als
Nameserver (Weiterleitung vom ISP) dient, sieht eher so aus:
 
<source lang="bash">
$ cat /etc/resolv.conf
search homelinux.org
nameserver 192.168.0.1
</source>
 
(Anmerkung: homelinux.org ist bei mir die lokale Domain, das ist
beliebig und nicht aussagekräftig.)
 
<tt>vpnc</tt> erstellt glücklicherweise ein Backup der ursprünglichen
Datei unter <tt>/var/run/vpnc/resolv.conf-backup</tt>. Mit Hilfe
dieses Backups muss <tt>/etc/resolv.conf</tt> dann manuell wieder
hergestellt werden (kopieren). Ein Neustart des Systems hilft hingegen
nicht.
 
Dieses Problem taucht bei Verwendung von <tt>vpnc</tt> schon einmal
auf, wenn der Tunnel aufgrund von Störungen des ISP oder bei der
Fernuni zusammenbricht.


[[Kategorie:VPN]]
[[Kategorie:VPN]]
[[Kategorie:Zugang_FUNet_Internet-Dienste]]
[[Kategorie:Zugang_FUNet_Internet-Dienste]]
1

Eine Bearbeitung

Navigationsmenü