OpenVPN unter Windows – Anleitung

Installation von OpenVPN in Windows Server oder Client (Basierend auf Server 2003 oder XP). Das HOWTO beschreibt das Setup des Servers, die Erstellung von Keys und die Integration von Clients.

Die Überarbeitete Version mit Windows 2012 R2, sowie Windows 10 finden Sie hier.

Download & Installation

Download unter openvpn.net – Windows Installer.

openvpn-install01

Unter Choose Components wählen Sie sämtliche Komponenten aus. Danach kann OpenVPN installiert werden.

Vorbereitungen

Wir wechseln ins Verzeichnis easy-rsa (Meistens unter C:\Programme\OpenVPN\easy-rsa) und benennen folgende Files um:

vars.bat.sample in vars.bat
openssl.cnf.sample
in openssl.cnf

Danach editieren wir vars.bat und passen folgende Zeilen unseren Bedürfnissen an:

set KEY_COUNTRY=CH
set KEY_PROVINCE=Zuerich
set KEY_CITY=Effretikon
set KEY_ORG=MeineFirma AG
set KEY_EMAIL=support@meinefirmag.ch
set KEY_CN=MeinServerHostname
set KEY_NAME=MeinServername
set KEY_OU=IT
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

Umgebung setzen

openvpn01

Nun setzen wir die Umgebungsvariablen mittels Ausführen des vars.bat

 

openvpn02

Danach werden alle Files resetted und die Zertifikationsinstallation vorbereitet mittels clean-all.bat

Zertifikate erstellen

Nun beginnen wir mit der Erstellung der einzelnen Keys. Folgende Keys werden nun erstellt:

CA (build-ca.bat)
DH (build-dh.bat)
Server-Zertifikat (build-key-server.bat)

Client-Zertifikat(e) (build-key.bat)

Vorbereitend empfehlen wir den Pfad zur openssl.cnf in der geöffneten Konsole bekannt zu geben. Andernfalls könnten sie folgende Warnmeldung erhalten:

WARNING: can't open config file: /etc/ssl/openssl.cnf

Hierzu passen sie ihren Pfad zu ihrer openssl.cnf an und führen vorgängig den Befehl aus:

set OPENSSL_CONF=C:\Programme\OpenVPN\easy-rsa\openssl-1.0.0.cfg

CA & DH

Erstellen von CA und DH Keys via Konsole (einmalig).

openvpn03

Vor der Erstellung eines Keys sollte immer vars.bat angewendet werden. Das Feld „Organizational Unit Name“ kann leer gelassen werden, wohingegen wir beim „Common Name“ den Servernamen angeben. Nun bilden wir den CA Key mittels build-ca.bat

 

openvpn04

Als nächstes erstellen wir den DH Key mittels build-dh.bat

Server-Zertifikat

Nun bilden wir den Private Server Key mittels build-key-server.bat. Das Feld „Organizational Unit Name“ kann leer gelassen werden, hingegen wird beim „Common Name“ der Servername angeben. Wir bestätigen zweimal mit Yes, damit das Zertifikat signiert und erstellt wird. Das Passwort wird leer gelassen. Mittels folgendem Command wird der Server-Key erstellt:

build-key-server.bat <Servername>

In Unserem Beispiel lautet die Erstellung: build-key-server.bat Server01

openvpn05

Zusammengefasst die komplette Erstellung des Server Keys.

Client-Zertifikat(e)

Nun bilden wir den Client Key mittels build-key.bat. Das Feld „Organizational Unit Name“ kann leer gelassen werden, hingegen wird beim „Common Name“ der Clientname angeben. Wir bestätigen zweimal mit Yes, damit das Zertifikat signiert und erstellt wird. Das Passwort kann optional erstellt werden. Somit fragt der OpenVPN Client beim Connecten zum Server nach dem angegebenen Passwort. Somit können wir sicherstellen, dass unser Zertifikat nicht missbraucht werden kann. Mittels folgendem Command wird der Client-Key erstellt:

build-key.bat <Clientname>

In Unserem Beispiel lautet die Erstellung: build-key.bat Client01

openvpn06

Zusammengefasst die komplette Erstellung des Client Keys.

Zusammenfassung Zertifikate

Nun sind die nötigen Keys erstellt. Bei einer Clientinstallation sind immer folgende Keys nötig:

ca.crt
client.crt
client.key

Die restlichen Keys sind privat und werden den Clients nicht mitgegeben.

Konfiguration Server

Wir erstellen folgende Verzeichnisse:

C:\Programme\OpenVPN\server-keys
C:\Programme\OpenVPN\log
C:\Programme\OpenVPN\ccd

Unser server.ovpn für eine Roadwarrior-Konfiguration sieht in etwa folgendermassen aus (ein Backslash muss jeweils mit einem weiterem Backslash escaped werden)

#################################################
#
# OpenVPN (MvA-Networks Conf)
#
# VPN Server Configuration
#
# Copyright 2006-2007 (20.12.06) www.mva.ch
# MvA Internet Services GmbH
#
#################################################

local 192.168.1.100
port 1194
proto udp
dev tun

# ----------------------------------------------
# Zertifikate
# ----------------------------------------------

dh C:\\Programme\\OpenVPN\\server-keys\\dh1024.pem
ca C:\\Programme\\OpenVPN\\server-keys\\ca.crt
cert C:\\Programme\\OpenVPN\\server-keys\\server.crt
key C:\\Programme\\OpenVPN\\server-keys\\server.key 

# ----------------------------------------------
# Server-Setup
# ----------------------------------------------

server 10.18.14.0 255.255.255.0
ifconfig-pool-persist C:\\Programme\\OpenVPN\\ipp.txt
client-to-client

# ----------------------------------------------
# Client-Settings (inkl Special Dir)
# ----------------------------------------------

# (if needed) client-config-dir ccd

push "route 192.168.1.0 255.255.255.0"
#push "redirect-gateway"
push "dhcp-option DNS 192.168.1.10"
#push "dhcp-option WINS 172.20.0.100"

# ----------------------------------------------
# Defaults
# ----------------------------------------------

keepalive 10 120
comp-lzo
persist-key
persist-tun

# ----------------------------------------------
# Logging
# ----------------------------------------------

status C:\\Programme\\OpenVPN\\log\\openvpn-status.log
log C:\\Programme\\OpenVPN\\log\\openvpn.log
log-append C:\\Programme\\OpenVPN\\log\\openvpn.log
verb 3

Im obigen Fall gehen wir davon aus, dass der Server in einem internen Lan: 192.168.1.0/24 steht und der Client auf alle Hosts in dem Lanzugriff haben wird. Der Server selbst hat die interne IP-Adresse 192.168.1.100. Zudem weisen wir dem Client den internen DNS Server 192.168.1.10 zu.

Zusammenfassung:
Netzwerk: 192.168.1.0
Server-IP: 192.168.1.100
DNS-Server: 192.168.1.10

Nach der erfolgreichen Erstellung der Verzeichnisse und Implementation der Konfiguration kann OpenVPN via Services in der Windows-Systemumgebung gestartet werden. Dazu geben wir in der Konsole folgendes ein:

net start OpenVPN

Somit sollte (sofern auf der Firewall auch die richtigen Ports geöffnet sind, in unserem Falle UDP Port 1194) ein Client eine VPN Verbindung zum Server aufnehmen können.

Konfiguration Clients

Client-GUI Download auf openvpn.se – Letzte Version. Für Installationen unter Windows Vista (32 und 64 bit) ist jeweils die letzte Beta-Version (aktuell 2.1_rc3a, 19.02.08) unter openvpn.net zu empfehlen.

 

openvpn-install02

Das GUI ist Vista kompatibel, nur der aktuelle Treiber, welcher in der 2.0 Version des GUI von openvpn.se vorhanden ist, nicht. Wählen Sie die Standardinstallation. Die Auswahl der Komponenten muss nicht angepasst werden.

Keys verteilen

Nach erfolgreicher Installation kopieren wir die oben vorbereiteten Client Keys:

ca.crt
client.crt
client.key

ins dafür vorgesehene Verzeichnis, beispielsweise C:\Programme\OpenVPN\config (Oder unter Vista 64: C:\Program Files (x86)\OpenVPN\config). Danach erstellen wir eine Config in demselben Verzeichnis (bsp. client.ovpn), wobei x.x.x.x der externen IP (des Routers, wenn Portforwarding vorhanden) des VPN Servers entspricht. Das Verbose tag (verb) kann nach erfolgreichen Tests auf 1 oder 0 gesetzt werden, damit nicht sämtliche Informationen den Benutzer verwirren, wenn das VPN startet.

##############################################
# MvA-Networks Connect. OpenVPN ClientScript #
##############################################

client
dev tun

proto udp
remote x.x.x.x 1194
resolv-retry infinite
nobind
persist-key
persist-tun

ca "C:\\Program Files (x86)\\OpenVPN\\config\\ca.crt"
cert "C:\\Program Files (x86)\\OpenVPN\\config\\client1.crt"
key "C:\\Program Files (x86)\\OpenVPN\\config\\client1.key"

comp-lzo
verb 3

Starten / Verbinden

Nun kann in der Taskliste das VPN via Icon gestartet werden. Nach erfolgreicher Verbindung sollte der Clientcomputer ins Remotenetzwerk integriert worden sein.

7 Kommentare

    Wie ich es auch drehe und wende… ich stehe dabei

    C:ProgrammeOpenVPNeasy-rsa>build-ca.bat
    error on line 117 of openssl.cnf
    4996:error:0E065068:configuration file routines:STR_COPY:variable has no value:.
    cryptoconfconf_def.c:629:line 117

    Antworten

    Hallo,
    Danke für das gut strukturierte Howto. Funktioniert soweit gut. Ich kriege vom Client (Tunnelblick) die Verbindung hin -> Initialization Sequenze Completed. Allerdings fahre ich ich TCP und 443.

    Der Server hat eine lokale 192.168.1.x Adresse, virtuell gemäss Config 10.18.14.1. Der Client bekommt dann auf tap0 auch die virtuelle 10.18.14.6. Aber ich kann die gegenseitig nicht anpingen, und kann auch keinen der lokalen Hosts im 192.168.1.0 auf irgend eine Art ansprechen. Firewalls sind disabled oder entsprechend konfiguriert. Stimmt irgendwas mit der Route nicht? Bin via anderen Anleitungen darauf gestossen, aber ich verstehe das nicht so richtig.

    Ich habe obige Config adaptiert, unterscheidet sich nur in ein paar Pfaden, Proto und den lokalen IP’s, aber eben eine Verbindung kriege ich ja hin…

    Für einen Hinweis wäre ich natürlich dankbar ;-)
    Gruss

    Antworten

    kleine Korrektur, gegenseitiger Ping geht jetzt, musste auf dem Client anstatt auf tap auf tun umstellen.
    Aber auf das lokale 192.168.1.0 komme ich immer noch nicht.

    Antworten

    Hallo!
    Obige Anleitung ist etwas fehlerhaft! es fehlt zb der Hinweis, das die Konsole mit cmd, nicht mit command geöffnet werden sollte. Bei command erscheint schon bei clean-all zweimal ein syntaxerror.
    Weiter fehlt die Pfadangabe für openvpn.conf gespeichert werden soll.
    Dann fehlt n och die Datei ipp.txt vollständig.
    Das starten des Servers funktioniert nicht, es scheint noch etwas wichtiges in der Serverkonfiguation zu fehlen.
    Unter Linux war die Konfiguration komplizierter, aber es funktionierte sofort!

    Antworten

    Vielen Dank für die Inputs. Wir werden den Artikel so bald als möglich überarbeiten, damit die „Fehler“, welche aufgrund der sich geänderten OpenVPN-Version ergeben haben, verschwinden.

    Antworten

    hay;
    echt mal eine seite, auf der höchst unkompliziert eine installationsaleitung zur verfügung steht.

    jetzt hab ich abba noch zwie kleine probleme:

    ich hab mal versucht mit der OpenVPM_2_0_9 auf einem W2k-PC einen server einzurichten, da die 2.1.4 leider unter W2k nicht funzt (TAP-Installer bringt fehlermeldung von wegen ungültiger 32bit anwendung)
    angeschlossen soll ein XP-Pc werden, so als wäre er genauso im netzwerk wie lokal.
    -dev tap
    tut auch, aber nur 12-14h lang, dann meldet sich der W2k-server komplett aus dem lokalen netzwerk ab. fehlermeldung server hat nicht genug speicher um die serveranfrage zu bearbeiten.

    server-netzwerk hat die IP’s xxx.xxx.0.x 255.255.255.0
    – router xxx.xxx.0.1
    – server xxx.xxx.0.250
    – 4 arbeitsplätze xxx.xxx.0.101…104
    – 2 IP-Cams 191, 192

    heimnetzwerk xxx.xxx.1.x 255.255.255.0
    – router xxx.xxx.1.1
    -server xxx.xxx.1.220
    -2-3 arbeitsplätze xxx.xxx.1.120…123
    – IP-Camera xxx.xxx.1.193

    wie bekomme ich alle PC’s dazu sich auch untereinander zu sehen ?

    Antworten

    […] VPN-verbindung Firewall tunneln Hi. ich versuche gerade mittels DIESER ANLEITUNG eine VPN-Verbindung zu erstellen, um unsere Firmen Firewall zu umgehen. Bevor die ersten schreien: […]

    Antworten

Kommentar schreiben

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert