Meist werden OpenVPN-Server unter Linux oder BSD betrieben, eine Installation unter Windows, um dieses z.B. als Einwahlserver für Roadwarrior verwenden zu können ist ebenfalls möglich.
Dieser Beitrag basiert auf ein Kundenszenario mit Windows Server 2012 Standard und OpenVPN 2.3.6 (Community). Die Roadwarrior verwenden sowohl Zertifikate und Benutzername samt Kennwort zur Anmeldung.
OpenVPN-Server installieren und konfigurieren
Den OpenVPN-Installer herunterladen und installieren. Eine Basis-Konfiguration samt Benutzerauthentifizierung kann wie folgt aussehen:
port 1194
proto udp
dev tun
ca "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\server.crt"
key "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\server.key"
dh "C:\\Program Files\\OpenVPN\\easy-rsa\\keys\\dh2048.pem"
server 10.0.0.0 255.255.255.0
ifconfig-pool-persist "C:\\Program Files\\OpenVPN\\log\\ipp.txt"
push "route 192.168.0.0 255.255.255.0"
keepalive 10 120
cipher AES-128-CBC
persist-key
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\openvpn-status.log"
verb 3
auth-user-pass-verify "C:\\Program Files\\OpenVPN\\config\\auth.bat" via-env
script-security 3
Diese Konfiguration als “C:\Program Files\OpenVPN\config\server.ovpn” abspeichern. Der Inhalt der Datei “auth.bat” sieht so aus:
@echo off
set n_user=%username% %password%;
find /n "%n_user%" C:\Program Files\OpenVPN\config\users.txt >result.txt
for /f "skip=1" %%a in (result.txt) do set n=%%a
if "%n%"=="----------" exit 1
exit 0
Die Benutzer samt Kennwörter an sich werden wiederum in der Datei “users.txt” verwaltet:
username1 password1;
username2 password2;
...
easy-rsa vorbereiten
Sowohl der OpenVPN-Server als auch dessen Clients benötigen Zertifikate, damit sich die Gegenstellen gegenseitig ausweisen können. Zu diesem Zweck wird mittels easy-rsa eine Zertifizierungsstelle angelegt.
Um Fehler beim Erzeugen der Schlüssel zu vermeiden, die Datei “vars.bat” editieren und folgende Zeile hinzufügen:
set OPENSSL_CONF=C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf
In der gleichen Datei kann man folgende Werte anpassen. Dadurch kann man Eingaben beim Erstellen der Zertifikate einsparen bzw. Vorgaben festlegen:
set KEY_COUNTRY=DE
set KEY_PROVINCE=Hessen
set KEY_CITY=Frankfurt
set KEY_ORG=Test Firma
set KEY_EMAIL=info@test-firma.de
set KEY_CN=changeme
set KEY_NAME=changeme
set KEY_OU=Buero
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234
Folgende Befehle einmalig ausführen:
vars
clean-all
CA erstellen
Folgende Befehle einmalig ausführen:
vars
build-ca
DH-Parameter erstellen
Folgende Befehle einmalig ausführen:
vars
build-dh
Server-Zertifikat erstellen
Folgende Befehle einmalig ausführen:
build-key-server
vars
Client-Zertifikat erstellen
Diese Befehle sollten in der Anzahl der Roadwarrior bzw. Clients ausgeführt werden. Jedem VPN-Benutzer sollte ein eigenes Zertifikat zugeordnet werden.
vars
build-key
Alle Befehle zu easy-rsa samt Erklärungen in englischer Sprache finden sich in der “README.txt” im “easy-rsa”-Ordner.
OpenVPN-Dienst starten
Nach der Installation ist der OpenVPN-Dienst auf manuellen Start konfiguriert. Möchte man das der Dienst nach einem Neustart des Computers automatisch ausgeführt wird, so muss dies in der Dienstesteuerung von Windows entsprechend geändert werden. Der Dienst wird nach der Installation im übrigen noch nicht ausgeführt. Sobald die Konfiguration durchgeführt wurde, muss der Dienst gestartet werden.
Firewall konfigurieren
Per Standard verwendet OpenVPN den Port 1194/udp. Dieser muss sowohl in der Windows-Firewall als auch, sofern der VPN-Server vom Internet aus erreichbar sein soll, im Router freigegeben bzw. per Portforwarding weitergeleitet werden.
Alternativ kann man in der Windows-Firewall statt des Ports die Datei “C:\Program Files\OpenVPN\bin\openvpn.exe” freigeben.
Das Routing muss stimmen
Das Routing muss nicht nur auf den Clients stimmig sein, damit diese den Weg zum Server und ggf. dem dahinter liegenden LAN finden. Für den Fall das Computer hinter dem Einwahlserver erreicht werden sollen, muss auf dem OpenVPN-Server an sich das Routing zwischen den Netzwerkverbindungen der LAN- und der OpenVPN-Schnittstelle aktiviert sein.
Bis einschließlich Windows XP und Server 2003 war dies nur generell für alle Netzwerkverbindungen über eine entsprechende Änderung in der Registrierung und einem Neustart möglich:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters
IPEnableRoute=1
Diese Option funktioniert bislang immer noch, einschließlich Windows Server 2012 R2. Mittlerweile lässt sich das Routing etwas differenzierter und vor allem ohne händische Änderung der Registrierung samt Neustart aktivieren:
netsh interface ipv4 set int "LAN-Verbindung" forwarding=enabled
netsh interface ipv4 set int "LAN-Verbindung 2" forwarding=enabled
Da der vorhandene Router beim Kunden kein Setzen einer Route gestattet, wurde auf allem vom VPN aus zu erreichenden Computern eine entsprechende Route gesetzt. Unter Windows sieht der Befehl wie folgt aus:
route add VPN-NETZWERK mask SUBNETZMASKE OPENVPNSERVER -p
Passend zu diesem Beitrag ein Beispiel:
route add 10.0.0.0 mask 255.255.255.0 192.168.0.2 -p
Das IP-Netz 10.0.0.0/24 entspricht dem VPN-Netzwerk, 192.168.0.2 ist die IP-Adresse des OpenVPN-Servers und die Option “-p” sorgt dafür, das die Route permanent gesetzt wird und damit auch nach einem Neustart des Computers zur Verfügung steht.
Windows-Clients
Unter Windows kann man neben dem Projekt-eigenen Client (Bestandteil des Installers) z.B. auch den Securepoint OpenVPN-Client verwenden. Letzterer ist in Sachen Optik weniger kryptisch als das Original. Ferner muss man dort keinen workaround einpflegen, damit es keine Probleme mit der Benutzerkontensteuerung (UAC) oder notwendigen Administrator-Berechtigungen für das Setzen der Route gibt.
Eine grundlegende Konfigurationsdatei kann wie folgt aussehen:
client
dev tun
proto udp
remote OPENVPNSERVER
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
cipher AES-128-CBC
verb 3
auth-user-pass
Diese Datei kann in die Clients zzgl. der Zertifikate “ca.crt”, “client.crt” und “client.key” importiert werden.
Quellen
OpenVPN – Easy Windows Guide
OpenVPN – Erster Tunnel
OpenVPN – Authentifizierung am Server
edoceo – Configuring auth-user-pass-verify
Microsoft – How To Enable TCP/IP Forwarding in Windows 2000
![flattr this!]()