7
Bearbeitungen
Zeile 1: | Zeile 1: | ||
==Software== | |||
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:// | 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. Zudem verweist die | |||
[http://www.infradead.org/openconnect/index.html Website von openconnect] auf mehrere Sicherheits-Vorteile. | |||
Unter Ubuntu oder Debian verwendet man zur Installation den grafischen | |||
Paketmanager oder gibt Folgendes an der Kommandozeile ein: | |||
<code>$ sudo aptitude install vpnc</code> | |||
{{ | bzw. | ||
<code>$ sudo aptitude install openconnect</code> | |||
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: | |||
<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 die | |||
VPN-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-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 | |||
<code>$ man vpnc</code> | |||
===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>. | |||
<pre> | |||
$ whatis pcf2vpnc | |||
pcf2vpnc (1) - converts VPN-config files from pcf to vpnc-format | |||
</pre> | |||
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: | |||
<pre> | |||
$ 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 | |||
</pre> | |||
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: | |||
<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 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: | |||
<pre> | |||
$ sudo vpnc fernuni | |||
Enter 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 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 | |||
<pre> | |||
$ sudo vpnc-disconnect | |||
Terminating vpnc daemon (pid: 17370) | |||
</pre> | |||
Wer möchte, kann sich auch die routing-Tabelle des Kernels | |||
ansehen. Sie sollte ungefähr so aussehen: | |||
<pre> | |||
$ 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 | |||
</pre> | |||
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)]]. Die | |||
dort beschriebene Konfiguration ist aber nicht sinnvoll, weil die | |||
Konfigurationsdatei für das grafische Frontend für die Konfiguration | |||
des Backends verwendet wird. | |||
==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: | |||
<pre> | |||
$ 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-VPN|FeU-Hagen-SSL-VPN-Split|FeU-Hagen-SSL-VPNLLA|FeU-Personal|HomeIPPhone|IPPhone|Reserviert]:FeU-Hagen-SSL-VPN | |||
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 | |||
</pre> | |||
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: | |||
<pre> | |||
$ sudo kill -SIGINT 20999 | |||
Send BYE packet: Client received SIGINT | |||
</pre> | |||
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: | |||
<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 intact | |||
search homelinux.org fernuni-hagen.de | |||
nameserver 132.176.129.201 | |||
nameserver 132.176.129.203 | |||
</pre> | |||
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: | |||
<pre> | |||
$ cat /etc/resolv.conf | |||
search homelinux.org | |||
nameserver 192.168.0.1 | |||
</pre> | |||
(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}{Linux}]] | |||
[[Kategorie:VPN]] | [[Kategorie:VPN]] | ||
[[Kategorie:Zugang_FUNet_Internet-Dienste]] | [[Kategorie:Zugang_FUNet_Internet-Dienste]] |
Bearbeitungen