diverse Software | Tobit DvISE | Virtualisierung | Emulatoren | SQL-Server | CMS | Groupware | DMS
OpenVPN einrichten
OpenVPN Parameter
Kommandozeilen Befehle
OpenVPN Bridge-Modus
OpenVPN TUN-Modus
Zertifkat sperren
Ablaufdatum eines Zertifikates prüfen
OpenVPN GUI
mögliche Fehler
Konfiguration Server und Client gleichzeitig
sonstiges
OpenVPN unter Linux
OpenVPN Wiki
OpenVPN Zertifikat Check
- nach der Installation ausführen
cd \Programme\OpenVPN\easy-rsa\ init-config edit vars.bat vars clean-all build-ca
- Serverzertifikat erstellen
build-key-server server
- Clientzertifikate erstellen
build-key client1 build-key client2 build-key client3
als "Common Name" muss immer ein anderer Name angegeben werden, da nicht zwei Zertifikate mit gleichen "Common Name" erstellt werden können.
- Diffie Hellmann parameter erstellen
build-dh
Filename Needed By Purpose Secret
ca.crt server + all clients Root CA certificate NO
ca.key key signing machine only Root CA key YES
dh{n}.pem server only Diffie Hellman parameters NO
server.crt server only Server Certificate NO
server.key server only Server Key YES
client1.crt client1 only Client1 Certificate NO
client1.key client1 only Client1 Key YES
client2.crt client2 only Client2 Certificate NO
client2.key client2 only Client2 Key YES
client3.crt client3 only Client3 Certificate NO
client3.key client3 only Client3 Key YES
- folgende Dateien ins config Verzeichnis auf dem Server kopieren
ca.crt dh1024.pem server.crt server.key
- folgende Dateien ins config Verzeichnis auf dem Client kopieren
ca.crt client.crt client.key
- Schlüsseldatei mit 2048 Bit SSL Key erstellen, diese wird dann im Parameter secret openvpn.sec angegeben. Für einen längerne Schlüssel z.B. die Option --keysize 4096 nutzen.
openvpn --genkey --secret openvpn.sec
openvpn --config server.ovpn
Device TUN überträgt IP-Pakete im OSI Layer 3, Broadcast werden z.B. nicht übertragen.
Device TAP (Bridge Modus) überträgt Ethernetframes im OSI Layer 2, Broadcast werden übertragen, ist als ob man local am Netz angeschlossen ist. Protokolle wie AppleTalk oder IPX können auch über den Tunnel genutzt werden.
| Parameter für Server und Client | Erläuterung |
|---|---|
| dev tun | welches Device verwendet werden soll tun oder tap |
| proto udp | Protokoll udp oder tcp |
| dev-node <TAP-Device> | Name der virtuellen Netzwerkkarte/Device, bei Verwendung von mehreren Device z.B. wenn der PC als Server und Client läuft. |
| comp-lzo | Komprimierung aktivieren |
| ifconfig ServerIP ClientIP | (Linux) Angabe der IP Adressen des Tunnelendes |
| ca ca.crt | Zertifikat des Zertifizierungsstelle (Öffentlich) |
| cert zertifikat.crt | Zertifikatsdatei (Öffentlich) |
| key zertifikat.key | Schlüsseldatei (Privat) |
| secret /etc/openvpn/openvpn.sec | Speicherort der gemeinsamen Keydatei (für Client und Server) |
| tun-mtu 1500 | (Maximum Tranfer Unit) MTU des TUN Device |
| mssfix | Fix für Microsoft Clients (MTU 1300 wird gesetzt) |
| mssfix 1357 | Fix für Microsoft Clients MTU auf 1357 setzen |
| fragment 1300 | ab welcher Größe die Pakete die durch den Tunnel gehen, geteilt (fragmentiert) werden. |
| verb 3 | LogLevel auf 3 gesetzt (Loglevel 0 - 9) |
| persist-key | Hält den privaten Schlüssel im Speicher |
| persist-tun | Hält das TUN/TAP Gerät bei einem Neustart offen |
| ip-win32 ipapi | DHCP-Server/Client über die Windows API |
| ip-win32 netsh | verwendet netsh und trägt die IP statisch ein |
| ip-win32 manual | statische IP |
| Server Parameter | |
| port 1194 | Portnummer auf der der Server auf Verbindung wartet |
| server 192.168.17.0 255.255.255.0 | TUN Servermodus, der Server ist unter der IP 192.168.17.1 erreichbar, der erste Client bekommt die 192.168.17.6 zugewiesen per DHCP |
| server-bridge 192.168.17.1 255.255.255.0 192.168.17.5 192.168.17.10 | TAP Servermodus, der Server ist unter der IP 192.168.17.1 erreichbar, die Clients bekommen die IPs 192.168.17.5 - 192.168.17.10 per DHCP zugewiesen |
| push "route 192.168.1.0 255.255.255.0 192.168.17.1" | die Route ins LAN automatisch zuweisen |
| push "dhcp-option DNS 192.168.1.1" | DNS Server automatisch zuweisen |
| client-to-client | ermöglicht die Kommunikation der VPN-Clients untereinander |
| keepalive 10 120 | alle 10 Sekunden wird versucht, die Gegenstelle zu erreichen, wenn diese nach 120 Sekunden nicht geantwortet hat wird versucht die Verbindung neu aufzubauen |
| status openvpn-status.log | Name der LOG Datei |
| tls-server | Server bei der Authentifizierungs |
| dh dh1024.pem | Dieffie-Hellman Zertifikat |
| ifconfig-pool-persist ipp.txt | in der Datei ipp.txt werden die IPs der Clients gespeichert. |
| Client Parameter | |
| client | im Clientmodus starten |
| nobind | keine Bindung an locale Ports |
| remote <Server-IP oder DNSName> Port | Adresse des Servers |
| tls-client | Client bei der Authentifizierungs |
| Befehl | Erläuterung |
|---|---|
| openvpn --show-adapters | TAP Adapter anzeigen |
| openvpn --show-digests | Verschlüsselungsalgorithmus zeigen |
[HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN] @="C:\\Programme\\OpenVPN" "config_dir"="C:\\Programme\\OpenVPN\\config" "config_ext"="ovpn" "exe_path"="C:\\Programme\\OpenVPN\\bin\\openvpn.exe" "log_dir"="C:\\Programme\\OpenVPN\\log" "priority"="NORMAL_PRIORITY_CLASS" "log_append"="0"
OpenVPN Client mit fester IP-Adresse
ein Verzeichnis erstellen z.B. "ccd" in diesem Verzeichnis wird dann eine Text Datei abgelegt mit folgendem Inhalt. Diese Textdatei enthält die Konfiguration und die IP Adressen des/der Clients.
client-config-dir ccd route 192.168.17.0 255.255.255.252 ifconfig-push 192.168.17.5 192.168.17.6
OpenVPN mit forwarding
Beispiel:
| IP Adresse | SubnetMask | |
|---|---|---|
| entferntes Netz | 10.0.100.0 | 255.255.255.0 |
| PC im entfernten Netz | 10.0.100.50 | 255.255.255.0 |
| LAN IP OpenVPN Server | 10.0.100.100 | 255.255.255.0 |
| TAP-Device IP OpenVPN Server | 192.168.17.1 | 255.255.255.252 |
| TAP-Device IP OpenVPN Client | 192.168.17.6 | 255.255.255.252 |
Route auf den OpenVPN Client
route add 10.0.100.0 mask 255.255.255.0 192.168.17.5
Route auf dem PC im entfernten Netz
route add 192.168.17.4 mask 255.255.255.252 10.0.100.100
auf den OpenVPN Server muss das Routing aktiviert werden, so das die Pakete vom VPN Client zum PC im Netz des VPN Servers und wieder zurück gelangen können.
Variante 1 OpenVPN TAP Device hat eine andere IP als das LAN Interface des Servers, wenn weitere Rechner im LAN mit dem VPN Client kommunizieren sollen, muss bei denen noch eine Route gesetzt werden.
# OpenVPN Windows Server Konfiguration # das OpenVPN TAP Device hat die IP 192.168.17.1/255.255.255.0 zugewiesen # das LAN Netzwerk hat die IP 192.168.5.0 # port 1194 proto udp dev tap ;dev-node ServerTAP mssfix 1357 ca ca.crt cert server.crt key server.key dh dh1024.pem ifconfig-pool-persist ipp.txt server-bridge 192.168.17.1 255.255.255.0 192.168.17.5 192.168.17.10 push "route 192.168.5.0 255.255.255.0 192.168.17.1" push "dhcp-option DNS 192.168.5.1" persist-key persist-tun auth SHA1 cipher AES-256-CBC keepalive 10 120 status openvpn-status.log verb 3
Variante 2 das OpenVPN TAP Device ist mit einer Netzwerkbrücke mit dem LAN Interface verbunden
Die OpenVPN Clients bekommen IP-Adressen von 192.168.5.5 - 192.168.5.10 zugewiesen.
# OpenVPN Windows Server Konfiguration # Netzwerkbrücke zwischen TAP und LAN Device # die Netzwerkbrücke hat die IP 192.168.5.1 # port 1194 proto udp dev tap ;dev-node ServerTAP mssfix 1357 ca ca.crt cert server.crt key server.key dh dh1024.pem ifconfig-pool-persist ipp.txt server-bridge 192.168.5.1 255.255.255.0 192.168.5.5 192.168.5.10 push "dhcp-option DNS 192.168.5.1" persist-key persist-tun auth SHA1 cipher AES-256-CBC keepalive 10 120 status openvpn-status.log verb 3
# OpenVPN Windows Client Konfiguration # das OpenVPN TAP Device steht auf DHCP # remote server.dyndns.org 1194 ca ca.crt cert client1.crt key client1.key client dev tap dhcp-release dhcp-renew ;dev-node TAP proto udp nobind resolv-retry infinite persist-key persist-tun auth SHA1 cipher AES-256-CBC verb 3
# OpenVPN Windows Server Konfiguration # das OpenVPN TAP Device steht auf DHCP # port 1194 proto udp dev tun ;dev-node ServerTUN mssfix 1357 ca ca.crt cert server.crt key server.key dh dh1024.pem server 192.168.17.0 255.255.255.0 ifconfig-pool-persist ipp.txt persist-key persist-tun auth SHA1 cipher AES-256-CBC keepalive 10 120 status openvpn-status.log verb 3
# OpenVPN Windows Client Konfiguration # das OpenVPN TAP Device steht auf DHCP # remote server.dyndns.org 1194 ca ca.crt cert client1.crt key client1.key client dev tun dhcp-release dhcp-renew ;dev-node Tap proto udp nobind resolv-retry infinite persist-key persist-tun auth SHA1 cipher AES-256-CBC verb 3
Variablen laden und das Zertifikate für den client3 sperren
vars revoke-full client3
in der letzen Zeile beim Zertifikat sperren, sollte dann folgendes stehn.
error 23 at 0 depth lookup:certificate revoked
in der Serverkonfig noch folgenden Parameter setzen, die Datei crl.pem vorher ins config Verzeichnis kopieren und dann denn Server neustarten.
crl-verify crl.pem
Wenn der Verbindungsaufbau mit dem Fehler TLS handshake failed abbricht, kann es sein das eines der Zertifikate abgelaufen ist. Dies kann man wie folgt am Beispiel des CA Zertifikates prüfen. Die Clientzertifikate müssen daraufhin auch auf Ablauf geprüft werden.
openssl x509 -noout -enddate -in ca.crt
Konfiguration anpassen anzeigen
"allow_edit"="1"
Passwort ändern anzeigen, das Passwort wird in der Datei gesetzt die unter den Parameter key client.key in der .ovpn Datei angegeben ist. (mind. 8 Stellen lang)
"allow_password"="1"
Proxy Einstellungen anzeigen
"allow_proxy"="1"
Balloon bei Verbindungsaufbau anzeigen
"show_balloon"="1"
Verbindungsfenster anzeigen
"silent_connection"="0"
Fehler
write UDPv4: Interrupted system call (WSAEINTR) (code=10004)
WSACancelBlockingCall
ein weiteres Tun/TAP Interface installieren, passend benennen. Das Device kann man dann nach Namen zuordnen z.B. Device wurde mit Server-TAP benannt.
# server.ovpn
... dev-node Server-TAP
...
Windows7 und Vista Erweiterung
in der Konfiguration des Servers
route-method exe route-delay 2
sonstige Parameter
# link-mtu 1400 mssfix fragment 1300
- selbstsignierten Zertifikat
WARNING: No server certificate verification method has been enabled.