Momentan läuft es, ich kann mich innerhalb des LAN zum Testen via IPv4, als auch von extern via Handy durch den IPv6/IPv4-Tunnel verbinden, und dies sowohl von Android als auch von Windows 10, so dass der gesamte Netzwerk- und Internetverkehr über den VPN-Server ins LAN bzw Internet geleitet wird. Aus Sicherheitsgründen wollte ich Zertifikate + Benutzername/Passwort benutzen, der Rest der Konfiguration ist jedoch noch nicht auf Sicherheit optimiert, hier gibt es noch einige Tipps und HowTos via Google.
Zum Inhalt:
OpenVPN Server unter Windows 10
Windows 10 Einstellungen
FritzBox Einstellungen
Feste-IP.net Einstellungen
Windows-Client
Android-Client
OpenVPN Server:
Installation: Download Ich hab die aktuellste 2.4.7 genutzt. Bei der Installation bitte die easy-rsa Sachen mitinstallieren, diese werden für die Zertifikatserzeugung später benötigt.Beispiel Serverconfig:(C:\Programme\OpenVPN\config\server.ovpn)
port 11934proto tcp
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.178.0 255.255.255.0"
#push "dhcp-option DNS 192.168.178.1"
push "dhcp-option DNS 8.8.8.8"
push "redirect-gateway def1"
keepalive 10 120
cipher AES-128-CBC
persist-key
persist-tun
status "C:\\Program Files\\OpenVPN\\log\\openvpn-status.log"
verb 3
script-security 4
auth-user-pass-verify "C:\\Program Files\\OpenVPN\\config\\auth.bat" via-env
redirect-gateway ist sinnvoll mit def1, dies sichert die bisherige Defaultroute.
script-security muss größer 2 sein, damit ans auth-script via 'via-env' auch das Passwort übergeben wird.
10.0.0.0 ist das Netz für die Clients.
Der Rest ist ziemlich Standard bis auf den Port und das Protokoll, bei UDP hatte ich Probleme mit der Erreichbarkeit vom Portmapper aus, aber vielleicht funktioniert es ja bei euch.
Auth-Skript angepasst: (die meisten im Internet hatten Probleme mit dem Dateinamen und Pfaden, C:\Programme\OpenVPN\config\auth.bat)
@echo offset n_user=%username%-%password%#;
echo %n_user% >c:\tmp\txt.txt
set n_user=%username% %password%
find /n "%n_user%" "C:\Programme\OpenVPN\config\users.txt" > "C:\Programme\OpenVPN\config\result.txt"
for /f "skip=1" %%a in ("C:\Programme\OpenVPN\config\result.txt") do set n=%%a
if "%n%"=="----------" exit 1
exit 0
find ist eine Zeile, erst bei for fängt die nächste an.
Zum Debuggen wird der Username und das Passwort in c:\tmp\txt.txt geloggt, falls ihr c:\tmp habt.
Wichtig ist vollständige Pfade in der for-Schleife zu nutzen mit Anführungszeichen, da es bei nur dem Dateinamen zu Fehlern kommen kann.
Users File: (C:\Programme\OpenVPN\config\users.txt)
david Musterpasswort(ein Leerzeichen)
Zertifikate erzeugen:
(Common Name muss rein und für jedes Cert (alle Clients und Server) verschieden sein, sonst sagt er es gibt schon ein Cert und generiert nur csr und key, aber kein crt!)Ne cmd mit Adminrechten starten und ab ins Verzeichnis easy-rsa im OpenVPN Programmverzeichnis, dann folgende Befehle:
init-config.bat
dann die vars.bat editieren, hier ein Beispiel:
@echo off
rem Edit this variable to point to
rem the openssl.cnf file included
rem with easy-rsa.
rem Automatically set PATH to openssl.exe
FOR /F "tokens=2*" %%a IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN"') DO set "PATH=%PATH%;%%b\bin"
rem Alternatively define the PATH to openssl.exe manually
rem set "PATH=%PATH%;C:\Program Files\OpenVPN\bin"
set OPENSSL_CONF=C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
set KEY_CONFIG=openssl-1.0.0.cnf
rem Edit this variable to point to
rem your soon-to-be-created key
rem directory.
rem
rem WARNING: clean-all will do
rem a rm -rf on this directory
rem so make sure you define
rem it correctly!
set KEY_DIR=keys
rem Increase this if you
rem are paranoid. This will slow
rem down TLS negotiation performance
rem as well as the one-time DH parms
rem generation process.
set DH_KEY_SIZE=2048
rem Private key size
set KEY_SIZE=4096
rem These are the default values for fields
rem which will be placed in the certificate.
rem Change these to reflect your site.
rem Don't leave any of these parms blank.
set KEY_COUNTRY=DE
set KEY_PROVINCE=RLP
set KEY_CITY=Kaiserslautern
set KEY_ORG=KulschIT
set KEY_EMAIL=the1andonlydave@gmail.com
set KEY_CN=xxx.feste-ip.net
set KEY_NAME=xxx
set KEY_OU=Wohnzimmer
set PKCS11_MODULE_PATH=Modulepfaedchen
set PKCS11_PIN=9876
Hier beugt set OPENSSL_CONF=C:\Program Files\OpenVPN\easy-rsa\openssl-1.0.0.cnf
weiteren Problemen vor, ansonsten sollten noch der untere Block angepasst werden, nichts sollte leer sein.
nun:
weiteren Problemen vor, ansonsten sollten noch der untere Block angepasst werden, nichts sollte leer sein.
nun:
vars
clean-all (löscht den keys ordner, falls ihr schonmal Zertifikate erzeugt habt!)
vars
build-ca
vars
build-dh (dauert auf nem aktuellen Rechner ca 2 Minuten)
vars
build-key-server server
dann beliebig oft:
vars
build-key BENUTZERNAME
Danach noch den Dienst OpenVPNService starten und in den Autostart:
Windows 10 Routingeinstellungen:
Hier muss einmal der Dienst Routing und RAS gestartet werden und der Starttyp auf automatisch gestellt werden:Dann muss in der Registry mit regedit.exe folgende Änderung gemacht werden: (benötigt nen Reboot)
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters IPEnableRouter=1
Und zuletzt muss die Freigabe der Internetverbindung am Adapter eingestellt werden:
Ausserdem muss geprüft werden ob der Adapter auch per IPv6 verbunden ist und Internet hat:
Und in der Firewall muss auch nochmal für TCP oder UDP eine Regel erstellt werden, je nachdem was ihr in eurer Config stehen habt. Ich nutze hier die Windows Standardfirewall:
FritzBox Einstellungen:
Prüfen ob ihr einen Internetzugang mit DS-Lite-Tunnel habt:MyFritz Konto anlegen:
IPv6 Einstellungen bei mir: (alles Standard)
Bei lokalem DNSv6-Server ist der Standard eingestellt.
Freigaben:
Die erste Freigabe als MyFritz Freigabe anlegen wegen dem DNS-Namen. Diese MyFRITZ!-Adresse ohne den Prefix/Port müsst ihr dann bei feste-ip.net eintragen.
Weitere Freigaben gehen ganz normal, den DNS-Namen habt ihr ja nun.
PING6 reicht, die Firewall müsst ihr nicht weiter öffnen. Die Freigabe mit der LAN-IPv4 könnt ihr ignorieren.
Fertig:
MyFritz Weblogin zum Testen:
Feste-IP.net Einstellungen:
(Hier kann auch ein anderer Anbieter genutzt werden, aber feste-ip.net funktionierte in meinen Tests immer, hat ein Supportforum und liegt mit knapp unter 5€ (pro Jahr!) und der Möglichkeit es bis zu 50 Tage gratis zu testen, auch preislich sicher im Rahmen)Übersicht:
Hier muss bei DNS-Name der Name im Format meinPC.meinefritzid.myfritz.net eingegeben werden, siehe obigen Screenshot vom MyFritz-Freigabe anlegen und bei Alias eine Wunschdomain, bei Port nur der VPN-Port.
Windows Client Config:
Hier kann der beim OpenVPN Installer enthaltene GUI-Client verwendet werden, ins Verzeichnis C:\Users\BENUTZERNAME\OpenVPN\config sollten:ca.crt
BENUTZERNAME.crt
BENUTZERNAME.key
client.ovpn:
client
dev tun
proto tcp
remote 192.168.178.27 11934
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert peter.crt
key peter.key
remote-cert-tls server
cipher AES-128-CBC
verb 3
auth-user-pass
Hier könnte man nun mit TLS-Keys und anderem Fortfahren, um das VPN weiter abzusichern. Auch könnte man bei den Benutzerzertifikaten Challengepasswörter benutzen, die beim Verbindungsaufbau benötigt werden, da wir jedoch Zertifikate+Benutzerpasswort benutzen, würde ich davon abraten. So kann man nämlich ein Zertifikat pro Laptop erzeugen und jeder Benutzer kann sich mit jedem Laptop und seinen Logindaten einwählen theoretisch.
Android Client Config:
Config folgt, App gibt im Google PlayBeachtet, wenn Android und Laptop das gleiche Benutzerzertifikat nutzen und auf Auto-Reconnect stehen werfen sie sich dauernd gegenseitig aus der VPN.
Keine Kommentare:
Kommentar veröffentlichen