Windows: OpenVPN mit (win)tun nutzen

Bislang musste man sich unter Windows im Zusammenhang mit OpenVPN mit der TAP-Schnittstelle als virtuelle Netzwerkkarte zufrieden geben.

Das Ganze funktioniert und ist seit Jahren stabil. Schneller in Sachen Verbindungsaufbau und Durchsatz ist allerdings das TUN-Interface, lange Zeit war dieses allerdings nicht für Windows im Allgemeinen und OpenVPN im Speziellen verfügbar. Geändert hat sich dies mit Version 2.5.0 von OpenVPN in der Community-Ausgabe:

Die nun für Windows zur Verfügung stehende Implementierung von TUN stammt von Wireguard und kann nun (endlich) auch mit OpenVPN genutzt werden. Die Änderungen in der Konfiguration sind dabei marginal, muss doch lediglich

windows-driver wintun

in die Konfigurationsdatei hinzugefügt werden. Erfolgreich getestet wurde bereits mit Gegenstellen auf pfSense, OPNsense und Securepoint UTM-Basis, auf diesen wiederum musste nichts verändert werden.

Wie bei jeder Neuerung kann es allerdings noch zu Schwierigkeiten kommen, ein Haken dabei kann die Nutzung von DNS sein.

Im Laufe der vergangenen Wochen und Monate seit der Testphase habe ich selbst das eine oder andere Mal die Situation erlebt, das die DNS-Einstellungen nicht griffen. In der Regel klappte es nachdem die Verbindung nochmals ab- und erneut aufgebaut wurde. Schlimmstenfalls musste der OpenVPN-Dienst mal neu gestartet werden.

Quellen:

OpenVPN Support Forum – DNS Suffix on Wintun

OpenVPN – Community and Wiki Tracker – full and consistent support of dhcp-option DOMAIN and DOMAIN-SEARCH

12 Kommentare

  1. Jan

    der Verbindungsaufbau scheint bei mir auch wirklich gefühlt einen Tick schneller zu gehen. Genauso wie bei der TAP-Schnittstelle, muss man auch bei TUN diese mehrfach anlegen, wenn man gleichzeitig sich zu mehreren VPN’s verbinden möchte. Auch hier gilt, es sind so viele Verbindungen möglich wie TUN-Interfaces angelegt wurden.
    Entweder über “c:Program FilesOpenVPNbin>tapctl.exe create –hwid wintun” oder in Windows 10 einfach wintun eingeben und auf “Add a new Wintun virtual network adapter” klicken. Scheint mit OPENvpn auf Unifi USG 3P, USG-PRO-4 sowie VeeamPN ebenfalls zu funktionieren ohne Änderungen am Server.

  2. Jan

    ich muss meinen Kommentar wohl etwas verbessern, “Add a new Wintun virtual network adapter” wird in der Windows Suche nicht auf jedem PC gefunden. Man kann es aber auch manuell in folgendem Ordner finden: “C:ProgramDataMicrosoftWindowsStart MenuProgramsOpenVPNUtilitiesAdd a new Wintun virtual network adapter”.
    Interessanter weise hat Firefox bei der Verwendung von TUN bei mir folgenden Bug:
    Wenn Firefox bereits offen ist, dann eine VPN Verbindung aufgebaut wird, kann ich keine neuen Seiten mehr in Firefox laden, er kann anscheinend den Namen nicht auflösen. Erst wenn ich Firefox schließe und wieder öffne, funktioniert dieser richtig.
    Die VPN Verbindung ist eine Splitt Verbindung, sollte also nur der Traffic rüber gehen der für das andere Netz gedacht ist. Das scheint auch nach wie vor zu funktionieren. Irgendwo hapert es im DNS Bereich.
    Vlt. hilft diese Info dem ein oder anderem der nun auch von TAP auf TUN umstellen möchte.

  3. Andy

    Hallo Jan,

    vielen Dank für die Info.
    DNS ist in der Tat je nach Konfig. noch etwas “seltsam”, da gabs auch schon Meldungen im Tracker.
    Was ich noch als Kuriosität habe ist das eines meiner Netze, das absolut nichts mit irgendeinem Kunden- oder VPN-Netz zu tun, nicht (mehr) erreichbar ist, wenn ich per OpenVPN irgendwohin verbunden bin.

  4. Frank

    Hallo Andy,

    vielen Dank für Deine Info. Bei mir läuft der Wintun Adapter prima. Allerding habe ich meine OVPN-Verbindung über die Windowsaufgabenplanung realisiert, sodass nach jedem PC-Neustart die VPN-Verbindung auch ohne Benutzeranmeldung gestartet wird. Ist nun in der Config der Wintun Adapter enthalten, wird keine automatische Verbindung aufgebaut und ich erhalte folgende Fehlermeldung:

    “Wintun requires SYSTEM privileges and therefore should be used with interactive service. If you want to use openvpn from command line, you need to do SYSTEM elevation yourself (for example with psexec).”

    Hast Du hierfür einen Lösungsansatz, damit ich weiterhin die Verbindung automatisch über die Aufgabenplanung laufen lassen kann?

    Viele Grüße
    Frank

  5. Andy

    Hallo Frank,

    habe ich so noch nicht getestet. Die Meldung sagt ja eindeutig aus, das das SYSTEM-Rechte fehlen, von daher zunächst die Frage als welcher Benutzer die Aufgabe ausgeführt wird?
    Alternativ kann man die *.ovpn-Konfigurationsdatei unter “C:Program FilesOpenVPNconfig” ablegen.
    Von dort saus wird sie automatisch vom Dienst aus verwendet und die Verbindung aufgebaut, dann muss man keinen Umweg über eine Aufgabe nehmen.
    Zugangsdaten können wie folgt mitgegeben werden:

    – Die *.ovpn-Datei editieren.
    – An der Zeile “auth-user-pass” “pass.txt” anhängen.
    – Im gleichen Ordner eine Datei “pass.txt” erstellen.
    – In der ersten Zeile den Benutzernamen einfügen.
    – In der zweiten Zeile das Kennwort einfügen.

    Beim nächsten Start des Dienstes “OpenVPNServiceInteractive” wird die Konfigurations automatisch eingelesen und eine Verbindung aufgebaut.
    Ggf. noch den Starttyp des Dienste auf “Automatisch” oder “Automatisch (verzögert)” ändern.

    Ob das mit wintun funktioniert habe ich noch nicht getestet, SYSTEM-Rechte sollten aber dann eigentlich da sein.

  6. Frank

    Hallo Andy,

    vielen Dank für Deine schnelle Antwort. Die Aufgabe führe ich als Admin aus. Mit dem herkömmlichen Tapv9-Adapter klappt es, nur mit dem Wintun nicht …

    Ich finde Deinen Ansatz OVPN über den Dienst laufen zu lassen sehr interesant. Allerdings benutze ich eine zertifikatsbasierende Authentifizierung mit Passwortabfrage OHNE Benuternamensabfrage. Mein OVPN läuft über einen Raspberry. Könntest Du mir einen Tipp geben, wie ich in diesem Fall die Cliebt-Config anpassen muss?
    Ich habe es mal mit der Zeile „auth-pass“ „pass.txt“ getestet, ging aber leider nicht …

  7. Frank

    Zur Ergänzung: In Linux habe ich das Problem mit dem “askpass” Befehl gelöst …

  8. Andy

    Halo Frank,

    > zertifikatsbasierende Authentifizierung mit Passwortabfrage

    Passwort-Abfrage vom Zertifikat?

    da muss ich jetzt leider passen. Unter Linux hat man mit OpenVPN mehr CLI-Optionen zur Verfügung, die es teils unter Windows nicht gibt.
    Ein Beispiel wäre das Pipen von Eingaben, geht unter Windows nicht, daher der “Umweg” mit der “pass.txt” (die kann übrigens auch anders benannt werden).

    Eine Idee die ich noch hätte, aber so nie gemacht habe, wäre die Aufgabe im SYSTEM-Kontext ausführen zu lassen, sprich: Als Benutzer SYSTEM auswählen oder händisch “NT-AUTORITÄTSYSTEM” eingeben.

  9. Frank

    Hallo Andy,

    ich habe es jetzt mit dem befehl “askpass” lösen können, nun läuft es perfekt und der neue Wintun-Treiber wird automatisch gestartet. Top!

    Eine letzte Frage habe ich noch: Ich habe als Domain-Admin mehrere OVPN-Configs. Wie kann ich es steuern, dass der OVPN-Service beim Systemstart nur die gewünschte Config lädt?

  10. Andy

    Wenn nur eine bestimmte Config verarbeitet werden soll, dann nur diese eine bestimmte config im Programme-Ordner ablegen, andernfalls versucht der Dienst alle Verbindungen aufzubauen.
    Anders habe ich es bislang nicht gemacht, ein anderer Weg ist mir soweit auch nicht bekannt und konnte dazu auf die Schnelle auch nichts finden.

  11. Jan

    Mein Problem mit den langsamen DNS Abfragen konnte ich mittlerweile lösen, wenn man die Metriken der Netzerkadapter selbst festlegt, statt automatisch, funktioniert auch der Wintun Adapter ohne Einschränkungen. Dabei muss dann der Wintun Adapter eine höhere Metrik haben: https://www.complingua.de/2020/04/29/reihenfolge-der-netzwerkverbindungen-festlegen-windows-10/

  12. Andy

    Klingt sinnvoll, ich nutze das sozusagen in umgekehrter Richtung:

    Windows: VPN mit DNS und die Namensauflösung lokaler Ressourcen

Schreibe einen Kommentar

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

© 2024 Andy's Blog

Theme von Anders NorénHoch ↑