Schlüsseldienst
Verschlüsselte Tunnel mit OpenVPN einrichten
Von draußen rein
Eine beliebte Anwendung von OpenVPN ist, sich von unterwegs mit dem heimischen Netz zu verbinden. Da ein per DSL oder ISDN angebundener Rechner jedoch keine feste IP-Adresse besitzt, müssen Sie zum Beispiel bei DynDNS [4] eine dynamische IP-Adresse registrieren, die der Desktop-Computer bei jeder Einwahl aktualisiert. Da der Desktop die spätere offizielle Adresse des Notebook-Computers nicht kennt, fehlt beim Aufruf der Parameter --remote – damit wartet OpenVPN darauf, dass sich das Notebook meldet:
openvpn --daemon --dev tun0 --ifconfig 192.168.8.254 192.168.8.96 --secret /etc/openvpn/geheimer.key
Der OpenVPN-Aufruf beim Notebook unterscheidet sich nur geringfügig von der Variante für das eigene WLAN – die Remote-IP des Desktop-Rechners ersetzen Sie einfach nur durch die dynamische Adresse:
openvpn --daemon --dev tun0 --remote desktop.dyndns.org --ifconfig 192.168.8.96 192.168.8.254 --redirect-gateway --secret /etc/openvpn/geheimer.key
Durch die Firewall
OpenVPN verwendet normalerweise das verbindungslose Protokoll UDP für den verschlüsselten Tunnel, was bei vielen Firmen-Firewalls oder auch in Internet-Cafes ein Problem darstellt. Viele Firewalls erlauben nur den normalen Surf-Betrieb, die UDP-Pakete von OpenVPN kommen also nicht durch. Die Lösung sind die Parameter --proto tcp-server auf dem Desktop-Rechner und --proto tcp-client auf dem Notebook: Das Notebook baut eine TCP-Verbindung, ähnlich der eines Browsers, zum Desktop-Rechner auf; der Desktop wartet wie bisher auf die eingehende Verbindung. Auf diese Weise lassen sich nahezu alle Firewalls problemlos untertunneln – was allerdings ein Sicherheitsproblem darstellt, schließlich könnte ein Angreifer nun vom Desktop-Rechner aus das Firmen-Netzwerk angreifen, mit dem das Notebook gerade verbunden ist.
Neuerungen in OpenVPN 2.0
Die wichtigsten Neuerungen in OpenVPN 2.0 betreffen den Einsatz als VPN-Server für mehrere Rechner oder gar Firmen-Netzwerke. Aber auch für den privaten Einsatz bei einem oder zwei VPN-Clients gibt es ein paar interessante neue Optionen – die meisten betreffen das Routing.
War ein Tunnel eingerichtet, musste sich der Benutzer bisher selbst um das Routing kümmern, es also von Hand einrichten oder ein Skript dafür benutzen. Die Schwierigkeit bestand darin, festzustellen, ab wann ein Tunnel tatsächlich etabliert war – so fragen die OpenVPN-Skripte von [5] per ifconfig den Status des Netzwerkgeräts ab und versuchen dann, die Routen einzurichten. Dies kann durchaus auch fehlschlagen. Damit die Skripte nicht in einer Endlosschleife hängen bleiben, unternehmen sie maximal zehn Versuche, das Routing einzurichten.
In der Version 2.0 kennt OpenVPN die Parameter --route, --route-gateway sowie --redirect-gateway: Ist der Tunnel aufgebaut und in Betrieb, richtet OpenVPN gleich die angegebenen Routen ein, ändert das Standard-Gateway oder leitet gar den gesamten Datentransfer über den Tunnel um. Bricht die VPN-Verbindung zusammen, setzt OpenVPN automatisch das Routing wieder auf die Anfangswerte zurück. Über die Parameter --up und --down lassen sich nun sogar externe Skripte aufrufen, die zum Beispiel zusätzliche Dienste starten oder beenden, sobald der Tunnel auf- oder abgebaut ist.
Glossar
VPN
Virtual Private Network. Ein virtuelles Netz, bei dem ein öffentliches Netzwerk zum Austausch privater Daten genutzt wird.
Tunnel
Zum Transport der privaten Daten verpackt das VPN diese in verschlüsselter Form in Pakete des genutzten öffentlichen Netzwerks. So baut es quasi einen Tunnel zwischen Sender und Empfänger durch das öffentliche Netz auf.
Infos
[1] OpenVPN: http://openvpn.net
[2] Windows-Frontend für OpenVPN: http://openvpn.se
[3] Peter Guntmann, "Schutz (be)dürftig": Linux-Magazin 01/2004, S. 84
[4] DynDNS, Dynamische Adressen: http://www.dyndns.org
[5] Server- und Client-Skript für OpenVPN 1.x: http://www.mirko-doelle.de/linux/openvpn-server.sh, http://.../openvpn-client.sh



