Änderungen

Wechseln zu: Navigation, Suche

Linux: VPN Client und Profildateien

10.219 Byte hinzugefügt, 03:41, 10. Jan. 2015
Die üblichen Profildateien *.pcf können unter Linux vor Ubuntu 9.04 '''nicht''' verwendet werden! ==Software==
Eine Beschreibung für In gängigen Linux und -Distributionen sind Cisco-kompatible VPN befindet sich im Wiki-Klientenvorhanden. 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 einfacheinen der passenden VPN-Klienten der Distribution mit Hilfe derPaketverwaltung (sei es RPM oder DEB) installieren. Man hat dabei dieWahl zwischen <tt>vpnc</tt> und <tt>openconnect</tt>.
Die Installation aus den Archiven der Distribution hat Vorteile: DerVPN-Klient ist dann gut in den grafischen NetworkManagerintegriert. Außerdem ist er für die vorhandene Architektur optimiertund nicht lediglich für i386 compiliert. Zudem verweist die[http://wikiwww.fernuni-hageninfradead.deorg/helpdeskopenconnect/index.php/Installation_des_VPNhtml Website von openconnect] auf mehrere Sicherheits-Clients_unter_Kubuntu_Linux_7Vorteile.04_(feisty)
Es muss unbedingt Kvpnrc installiert werden!Unter Ubuntu oder Debian verwendet man zur Installation den grafischenPaketmanager 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]] <code>$ sudo aptitude install vpnc</code>
bzw.  <code>$ sudo aptitude install openconnect</code> Dies sind die VPN-Klienten für die Kommandozeile. Wenn man eineIntegration in die grafische Oberfläche will, muss man entsprechendePlugins für den NetworkManager installieren:  <code>$ sudo aptitude install network-manager-vpnc</code> bzw.  <code>$ sudo aptitude install network-manager-openconnect</code>    ==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 dieVPN-Verbindung aufgebaut:  <code>$ sudo vpnc fernuni</code> Oder allgemeiner:  <code>$ sudo vpnc PROFILNAME</code> Die Dateien <tt>/etc/vpnc/default.conf</tt>bzw. <tt>/etc/vpnc.conf</tt> sind zur Definition eines default-Profilsvorgesehen. Der Verbindungsaufbau kann dann einfach mit <code>$ sudovpnc</code> vorgenommen werden. Weitere Informationen auch überalternative Orte für Konfigurationsdateien findet man auf der man-Pagevon vpnc. Sie wird an der Kommandozeile aufgerufen mit  <code>$ man vpnc</code> ===Inhalt der Profildatei=== Was aber muss denn drinstehen in so einer Konfigurationsdatei? Eskönnen nicht einfach die pcf-Dateien verwendet werden, die die Fernunizur 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 andereNamen als die des proprietären Cisco-VPN-Klienten. Es gibt aberglücklicherweise ein Programm, das Cisco's pcf-Dateien konvertierenkann, <tt>pcf2vpnc</tt>. <pre>$ whatis pcf2vpnc pcf2vpnc (1) - converts VPN-config files from pcf to vpnc-format</pre>  Dieser Konverter wird bei der Installationvon <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: <pre>$ pcf2vpnc fu_vpn_stud_nat.pcf ## generated by pcf2vpncIPSec ID FU-VPN-STUD-NATIPSec gateway 132.176.101.101IPSec secret FU-VPN-STUD-NAT Xauth username riessIKE Authmode psk</pre> Diese Ausgabe von <tt>pcf2vpnc</tt> ist jetzt in einerKonfigurationsdatei, z.B. in <tt>/etc/vpnc/fernuni.conf</tt> zuspeichern und dabei 'riess' durch den sprechenden Benutzernamen zuersetzen. Das geht mit dem Editor Ihrer Wahl oder einfach von derKommandozeile:  <code>$ sudo sh -c 'pcf2vpnc fu_vpn_stud_nat.pcf | sed s/riess/BENUTZERNAME/ > /etc/vpnc/fernuni.conf'</code> Man kann die Zeile <tt>Xauth username BENUTZERNAME</tt> übrigens auchfortlassen. Dann wird man bei Aufbau des VPN-Tunnels nach einemBenutzernamen 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 aufgebautwerden: <pre>$ sudo vpnc fernuniEnter password for BENUTZERNAME@132.176.101.101: VPNC started in background (pid: 17370)...</pre> Jetzt ist der Rechner Teil des Netzes der Fernuni. Wer sich imInternet auf entsprechenden Seiten seine [http://http://whatismyv6.com/ IP-Nummer anzeigen] lässt, wird eine IP aus dem Range derFernuni sehen: 132.176.0.0. Deaktiviert wird die Tunnelung über VPN durch  <pre>$ sudo vpnc-disconnectTerminating vpnc daemon (pid: 17370)</pre>  Wer möchte, kann sich auch die routing-Tabelle des Kernelsansehen. Sie sollte ungefähr so aussehen: <pre>$ sudo vpnc fernuniEnter password for BENUTZERNAME@132.176.101.101: VPNC started in background (pid: ...$ sudo routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifacedefault * 0.0.0.0 U 0 0 0 tun0vpn-public-r1.f 192.168.0.1 255.255.255.255 UGH 0 0 0 eth0132.176.134.0 * 255.255.255.0 U 0 0 0 tun0localnet * 255.255.255.0 U 0 0 0 eth0</pre> Das besagt Folgendes: Zeile 1: Jedes Paket mit Ziel Internet wird überden Tunnel tun0 geschickt. Zeile 2: Pakete mit Zielvpn-public-r1.f[...ernuni-hagen.de] (= 132.176.101.101), also mit ZielTunnel-Endpunkt gehen über die Netzwerkschnittstelle eth0 und denGateway 192.168.0.1 (einen Router im lokalen Netz); diese Route istein Gateway (G-Flag). Zeile 3: Pakete mit einem Ziel imFernuni-IP-Range 132.176.134.0 gehen auch über tun0. Zeile 4: Paketefü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 obenbeschrieben. Dieses Plugin für das NetworkManager-Framework stellteine komfortable grafische Schnittstelle zum oben beschriebenen<tt>vpnc</tt> zur Verfügung. <tt>vpnc</tt> wird bei der Installationdes Plugins durch die Paketverwaltung übrigens automatischmitinstalliert. Erfahrungsberichte über eine Verwendung des NetworkManagers findensich unter [[Ubuntu_und_VPN]].  ===Integration mittels kvpnc (KDE)===  Alternativ kann man auch das grafischeFrontend für <tt>vpnc</tt> von KDE nehmen. Eine Beschreibung findetsich unter[[Installation_des_VPN-Clients_unter_Kubuntu_Linux_7.04_(feisty)]]. Diedort beschriebene Konfiguration ist aber nicht sinnvoll, weil dieKonfigurationsdatei für das grafische Frontend für die Konfigurationdes Backends verwendet wird.  ==openconnect== Mit <tt>openconnect</tt> ist die Herstellung eines VPN-Tunnels sehreinfach. Nach Eingabe des Befehls wird man aufgefordert, ein Profilauszuwählen und Benutzernamen und Passwort anzugeben: <pre>$ sudo openconnect https://webvpn.fernuni-hagen.de -bAttempting to connect to 132.176.101.101:443SSL negotiation with webvpn.fernuni-hagen.deConnected to HTTPS on webvpn.fernuni-hagen.deGET https://webvpn.fernuni-hagen.de/Got HTTP response: HTTP/1.0 302 Object MovedSSL negotiation with webvpn.fernuni-hagen.deConnected to HTTPS on webvpn.fernuni-hagen.deGET https://webvpn.fernuni-hagen.de/+webvpn+/index.htmlPlease enter your username and password.GROUP: [FeU-Hagen-SSL-VPN|FeU-Hagen-SSL-VPN-Split|FeU-Hagen-SSL-VPNLLA|FeU-Personal|HomeIPPhone|IPPhone|Reserviert]:FeU-Hagen-SSL-VPNUsername:lueckPassword:POST https://webvpn.fernuni-hagen.de/+webvpn+/index.htmlGot CONNECT response: HTTP/1.1 200 OKCSTP connected. DPD 30, Keepalive 20Connected tun0 as 132.176.134.98, using SSLContinuing in background; pid 20999Established DTLS connection</pre> Mit der Option <tt>-b</tt> wird der Client als Hintergrundprozessgestartet. Wenn man den VPN-Tunnel wieder abschalten möchte, beendetman nicht einfach brachial den Prozess, sondern sendet ihm statt<tt>SIGTERM</tt> besser <tt>SIGINT</tt>. Das beendet den Prozesssauber und es werden die vorherigen Netzwerk-Einstellungenwiederhergestellt. Also: <pre>$ sudo kill -SIGINT 20999Send BYE packet: Client received SIGINT</pre> Wer die Handhabung der Prozess-IDs (hier 20999) scheut, der hatfolgende Möglichkeiten: Man kann <tt>openconnect</tt> ohne die Option<tt>-b</tt> aufrufen, um den Tunnel aufzubauen, und mit derTastenkombination 'Strg' + 'c' den Prozess und den VPN-Tunnelbeenden (sendet auch <tt>SIGINT</tt>). Oder man kann auf den konfortablenNetworkManager zurückgreifen. ===Integration in den grafischen NetworkManager=== Wer die Verwaltung des Netzwerks unter Gnome o.ä. vorzieht, derinstalliere 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 unangenehmenProblem kommen, dass beim Surfen im Netz keine URLs mehr gefunden(aufgelöst) werden. Das liegt unter Umständen daran, dass dieKonfiguration der Namensauflösung nicht wieder hergestellt worden ist,sondern noch wie beim Betrieb des VPN-Tunnel konfiguriert ist. In derDatei <tt>/etc/resolv.conf</tt> stehen dann noch die Nameserver derFernuni und nicht der/die Nameserver des Internet-Service-Providers(ISP) bzw. die Adresse des Routers im Heimnetz. Die Datei sieht dannungefähr so aus: <pre>$ 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 intactsearch homelinux.org fernuni-hagen.denameserver 132.176.129.201nameserver 132.176.129.203</pre> Eine intakte <tt>/etc/resolv.conf</tt> bei Betrieb des Rechners hintereinem wlan-Router mit lokalem Netzwerk, wobei dieser Router auch alsNameserver (Weiterleitung vom ISP) dient, sieht eher so aus: <pre>$ cat /etc/resolv.confsearch homelinux.orgnameserver 192.168.0.1</pre> (Anmerkung: homelinux.org ist bei mir die lokale Domain, das istbeliebig und nicht aussagekräftig.) <tt>vpnc</tt> erstellt glücklicherweise ein Backup der ursprünglichenDatei unter <tt>/var/run/vpnc/resolv.conf-backup</tt>. Mit Hilfedieses Backups muss <tt>/etc/resolv.conf</tt> dann manuell wiederhergestellt werden (kopieren). Ein Neustart des Systems hilft hingegennicht. Dieses Problem taucht bei Verwendung von <tt>vpnc</tt> schon einmalauf, wenn der Tunnel aufgrund von Störungen des ISP oder bei derFernuni zusammenbricht.  [[Kategorie: {{kontaktVPN}{Linux}]]
[[Kategorie:VPN]]
[[Kategorie:Zugang_FUNet_Internet-Dienste]]
7
Bearbeitungen