openVPN einrichten
- Installation
- Konfiguration
- Die benötigten Zertifikate
- Troubleshooting:
udev
- Tunnelblick.app für die Mac-User
Installation
Fangen wir mal ganz vorne an; ich gehe hier von einer XEN-3.0.4 dom-U
aus, die unter einem normalen Debian 2.6.16.33-xen läuft. Sollte aber keinen Unterschied zu einem normalen Host-System machen. Die Software selbst installiert sich mittels apt-get install openvpn
und bringt einiges an Beispieldateien und Scripten mit, die wir noch benötigen werden. Daher kopieren wir die an die richtige Stelle:
$ cd /etc/openvpn
$ cp -r /usr/share/doc/openvpn/examples/\* .
Konfiguration
Im Ordner easy-rsa
ist so einiges drin, was uns bei der Einrichtung bedeutend helfen wird; zuerst einmal müssen wir diese Vorlagen jedoch an unsere Belange anpassen:
## file: "/etc/openvpn/easy-rsa/vars"
export KEY_DIR=$D/keys ; diese Variable ist wichtig, der Ordner muss existieren
export KEY_SIZE=2048
export KEY_DIR=/etc/openvpn/certs
export KEY_COUNTRY=DE
export KEY_PROVINCE=Saarland
export KEY_CITY=Saarlouis
export KEY_ORG="mein-hoechsteigenes-VPN"
export KEY_EMAIL="ich@meine-domain.tld"
Die benötigten Zertifikate
Jetzt erzeugen wir die benötigten Zertifikate. Als erstes führen wir vars
aus, um die Variablen zu setzen. Achtet auf den Punkt vor dem Punkt (gegebenenfalls vorher mit chmod +x vars
ausführbar machen)!
$ . ./vars
$ ./clean-all
$ ./build-ca
Das Server-Zertifikat
Jetzt wird das Zertifikat für den Server erstellt; das geht ganz einfach:
$ ./build-key-server vpn.meine-domain.tld
Dieses wird in /etc/openvpn/certs
folgendes erstellen:
vpn.meine-domain.tld.crt
vpn.meine-domain.tld.csr
vpn.meine-domain.tld.key
Der Schlüssel wird mit dem zuvor erstellten Zertifikat signiert; dazu sind die letzten beiden Abfragen mit y
zu beantworten; als Common name ist vpn.meine-domain.tld
anzugeben.
Die Client-Zertifikate
Nun sollen Kai und Stefan Zugriff auf mein VPN erhalten; hierzu muss ich auch für sie Schlüssel bauen:
$ ./build-key stefan
$ ./build-key kai
Der Common name muss genau dem Namen entsprechen, den wir angegeben haben (also in diesem Fall ‘stefan’ bzw. ‘kai’). Dieser Vorgang wird uns in /etc/openvpn/certs
folgende Dateien anlegen:
kai.crt
kai.csr
kai.key
stefan.crt
stefan.csr
stefan.key
DH-Parameter
Nachfolgend werden die Diffie-Hellman-Parameter erstellt; dies dauert auch auf einer ansatzweise modernen Maschine eine ganze Weile (in meinem Fall fast eine Viertelstunde), also: gedulden!
$ ./build-dh
Server-Konfiguration
Hernach ist die Konfiguration fällig; in /etc/openvpn/sample-config-files
finden wir ein server.conf.gz
, das wir benutzen können:
$ cd /etc/openvpn/sample-config-files
$ gunzip server.conf.gz
$ cp server.conf ../
## file: "/etc/openvpn/server.conf"
port 1194
proto udp
dev tun
ca /etc/openvpn/certs/ca.crt
cert /etc/openvpn/certs/vpn.meine-domain.tld.crt
key /etc/openvpn/certs/vpn.meine-domain.tld.key
dh /etc/openvpn/certs/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
verb 3
Und das war’s im Großen und Ganzen auch schon – zumindest auf Seite des Servers. Die Bedeutung der einzelnen Parameter in der Konfiguration bitte den entsprechenden READMEs entnehmen. Man kann nun versuchen, die Sache zu starten:
$ /etc/init.d/openvpn start
Im Log, respektive syslog
, sollte als (vorerst) letzte Meldung etwas in der Art von Initialization Sequence Completed
auftauchen; wenn nicht, geht das Debugging los.
Troubleshooting: udev
Wichtig ist hier, dass mein Debian mit udev
arbeitet, /dev/net
jedoch nicht existierte. Man kann sich da behelfen mit
$ mkdir /dev/net
$ mknod /dev/net/tun c 10 200
$ chmod 0700 /dev/net/tun
$ modprobe tun
Funktioniert zwar, ist aber eine unsaubere Sache – besser ist es da, das entsprechende udev
-Paket nachzuinstallieren:
$ apt-get install udev
Tunnelblick.app für die Mac-User
Nun wollen wir aber natürlich auch einen unserer Clients connecten lassen; Stefan ist jedoch passionierter Mac-User und arbeitet mit Mac OS X. Daher muss er sich, da InternetConnect.app nicht mit OpenVPN harmoniert, die Software Tunnelblick.app herunterladen und sie installieren. Außerdem braucht er natürlich seine beiden Files stefan.crt und stefan.key – und darüber hinaus benötigt er ca.crt. Die packt er an eine Stelle, an der er sie wiederfindet – beispielsweise nach /Users/stefan/.keys
. Tunnelblick wird ihn auffordern, die Konfiguration anzupassen – hier muss er diese drei Files angeben.
Und das war’s; ein Klick auf ‘Connect’ verbindet nun brav. Die Logfiles, insbesondere das syslog
, geben Aufschluss bezüglich eventueller Fehler. Die Verbindung steht, und das Leben ist schön :-D
Hintergrundbild: 900x 600px, Bild genauer anschauen – © Marianne Spiller – Alle Rechte vorbehalten