Montag Dez. 04, 2006

OPENVPN: Ein kleines HowTo - Teil 1

Letztens ist mir mein WLAN-Router über den Jordan gegangen. Der hing direkt am Server und damit im gleichen Subnet und ich konnte mich mit meinem Laptop direkt über eine geschützte WPA2 Verbinding verbinden, um z.B. auf einen Samba-Share zuzugreifen. Nun... Der Router war aber nun hinef. Blieb noch der WLAN-Router der auch als DSL-Modem und Router fungiert. Der Server hängt aber "hinter" dem Router in einem eigenen Subnet und zusätzlicher Firewall. Eine direkte Verbindung war also nicht mehr möglich und einen neuen WLAN-Accesspoint wollt ich nicht kaufen. Bisher hab ich ja immer alles per SSH getunnelt, aber das macht bei 15 Tunnels irgenwann nicht mehr soviel Sinn ;-) Also endlich mal OpenVPN ausgepackt und ausprobiert. Was soll ich sagen: Funkt echt gut :-) Hier also eine kleine Anleitung eine einfache Client-Server-Verbindung mit OpenVPN aufzubauen. Es sei aber angemerkt, das diese Konfiguraion nur für Testzwecke interessant ist und keinesfalls als sicher angesehen werden kann, denn hier wird mit Static Key's sog. pre-shared Key's gearbeitet. Wer diesen Key hat, kann sich verbinden. Das Public/Private Keyverfahren wäre wesentlich sicherer, läßt mehr Verbindungen zu, ist aber aufwendiger zu installieren. Bei dieser Client-Server Konfiguration hier, kann auch nur ein Client arbieten. Das Public-/Private-Keyverfahren erläutere ich später mal in Teil 2.

Auf dem Server läuft Debian 3.0. Die Software ist hier schnell installiert:

apt-get install openvpn

Soweit nicht vorhanden, legen wir ein Verzeichnis /etc/openvpn an. Dann erzeugen wir uns einen pre-shared Key und legen ihn in dieses Verzeichnis:

openvpn --genkey --secret static.key

Den Key gilt es zu schützen. Unter Unix sollte den Schlüssel nur root lesen dürfen. Als Nächstes legen wir in dieses Verzeichnis eine Konfigurationsdatei server.conf die z.B. wie folgt aussieht:

dev tun
ifconfig 10.1.0.1 10.1.0.2
secret static.key

Bei dev (device) hat man die Möglichkeit zwischen tun und tap. tun packt IPv4 Pakete ein und tunnelt sie. tap tunnelt Ethernet 802.3 sprich baut eine Bridge auf. Das kann u.U. nicht so arg toll sein, da dann der ganze Broadcast-Traffic auch mitläuft und sich im Subnet verteilt. Windows ist ja bekannt dafür, recht gesprächig zu sein ;-) ifconfig konfiguriert das Netzwerkdevice. Die erste IP ist die lokale IP-Adresse (auf dem Debian-Server) und die zweite IP ist die Remote-IP-Adresse also z.B. das Tunnelende auf dem Laptop z.B. Entscheidend ist, das beide IP's/Netze noch nicht im Einsatz sind auf den beiden Systemen. Das secret ist einfach der Dateiname des pre-shared Key's. Für einen ersten Test starten wir OpenVPN jetzt einfach mal per Hand und machen den Prozess zum Daemon mit der Option --daemon:

openvpn --daemon --config /etc/openvpn/server.conf

Auf meinem Laptop hab ich die OpenVPN-Client Software installiert. Obwohl eigentlich nicht notwendig, sollte man den Windows-Rechner trotzdem durchstarten, wenn man die Software installiert hat. Den auf dem Server erzeugten pre-shared Key benötigt man nun auch auf dem Client. Den kopiert man am Besten per SCP, Diskette, USB-Stick auf den Client - keinesfalls über eine unsichere Leitung! Bei mir liegen die Konfiguration und der Key unter C:\Programs\openvpn\config. Konfigurationsdateien sollte man die Endung .ovpn verpassen. Die openvpn-client.ovpn sieht z.B. wie folgt aus:

remote IP_oder_DNS_des_Remotesystems_hier_her
dev tun
ifconfig 10.1.0.2 10.1.0.1
secret static.key

Bei remote geben wir an, wohin wir uns verbinden wollen also den Server, auf dem der OpenVPN Endpunkt läuft. Das kann ein DNS-Eintrag sein oder eine IP. Wichtig ist, das dort der UDP Port 1194 in beide Richtungen an der Firewall freigeschaltet ist! Bei ifconfig dreht man einfach die beiden IP's, die wir in der server.conf hatten, um. secret ist wieder unser Key, den wir vom Server kopiert haben. Im Übrigen: Auf Unix-Systemen sollten die die Konfigurationsdateien mit .conf enden unter Windows mit .ovpn.

Nun sollte man den Tunnel eigentlich starten können. Der Windows-Client hat in der Quick-Launchbar (Schnellstartleiste) ein Icon für uns installiert. Wenn man dort mit der rechten Maustaste draufklickt, kann man dort Connect auswählen und der Verbindungsaufbau beginnt. Kurz darauf sollte der Tunnel stehen.

Mit diesem kleinen Tunnel haben wir erst an der Oberfläche der Möglichkeiten von OpenVPN gekratzt. Probiert's selber mal aus. Es macht Spaß damit zu arbeiten. Die Tatsache, das nur ein UDP Port (TCP ist auch möglich) benutzt wird für die Kommunikation, macht ein ewiges Gefummle an der Firewall überflüssig.

Mein Dank für dieses feine Stück Software geht an alle OpenVPN-Entwickler!

Building and Implementing Virtual Private Networks with OpenVPN

Technorati Tags: ,

Kommentare:

Senden Sie einen Kommentar:
  • HTML Syntax: Ausgeschaltet