wall < "openVPN einrichten"

Broadcast message from spillerm@unixe.de (pts/1) (Di Aug 14 22:30:47 2007):
4
Diesen Beitrag schrieb ich vor 11 Jahren. Behalte das beim Lesen bitte im Hinterkopf.

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/* .

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:

$ cd /etc/openvpn/easy-rsa
$ vim 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"

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!

$ . ./vars ; ggf. mit chmod +x vars ausführbar machen
$ ./clean-all
$ ./build-ca

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. 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

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

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 ../
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 Grossen 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. 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

Et voilá. 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. Ausserdem 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 bzgl. eventueller Fehler. Die Verbindung steht, und das Leben ist schön :-D

4
  1. Hast Du Details dazu, *warum* InternetConnect.app nicht mit Tunnelblick funktioniert?

Keine weitere Reaktionen mehr möglich.