Jemand schickt Ihnen ein Profil, Sie importieren es, und dreißig Sekunden später wählt ein Client ein Ziel an, das niemand geprüft hat. Lesen Sie die Datei zuerst in einem Texteditor, denn alles Wichtige steckt in einer Handvoll Direktiven: remote, proto, port, ca, cert, tls-crypt und verify-x509-name. Alles andere sind Voreinstellungen, und in den Voreinstellungen lauern die Überraschungen.

Alle Endpunkte auflisten, die die Datei verwenden kann

Beginnen Sie mit den Endpunkten, denn ein Profil kann mehrere enthalten. grep -nE '^[[:space:]]*(remote|proto|port|remote-random|connection)' profile.ovpn gibt jeden Kandidaten in Dateireihenfolge aus, einschließlich derer, die in eingebetteten <connection>-Blöcken verschachtelt sind.

Wenn eine Direktive einen Port auslässt, fällt der Client auf die Voreinstellung des Listeners zurück, sodass remote vpn.example.com allein Port 1194 bedeutet, mit welchem proto auch immer später in der Datei auftaucht. Mehrere einfache remote-Zeilen sind Alternativen: Der Client probiert sie der Reihe nach, sofern remote-random sie nicht durchmischt, und er ersetzt niemals stillschweigend den Host eines anderen Anbieters. Zwei remote-Zeilen auf nicht verwandten Domains sind der Punkt, an dem Sie innehalten und fragen, welche gemeint war.

Achten Sie auch auf die Schreibweise von proto. tcp wird als Synonym für das clientseitige tcp-client akzeptiert, aber tcp-server in einem Clientprofil ist ein Konfigurationsfehler, der eher hängt, als sauber zu scheitern.

Den Namen bestätigen, dann den Port

dig +short vpn.example.com sagt Ihnen, ob der Name existiert und welche Adressen er zurückgibt, und ein Multi-Homed- oder Proxy-Endpunkt darf legitimerweise mehrere zurückgeben. Die Auflösung ist eine Voraussetzung, kein Beweis für Eigentum; jeder kann einen Namen auf eine Adresse zeigen lassen, und eine Adresse kann für viele Namen antworten.

Prüfen Sie dann den Listener auf dem gefundenen Port, passend zum Transport. Über TCP gibt openssl s_client -connect vpn.example.com:1194 -servername vpn.example.com die Kette aus, die der Server vorzeigt. Über UDP brauchen Sie DTLS: openssl s_client -dtls1_2 -connect vpn.example.com:1194 führt denselben Handshake über Datagramme aus. Ein abgeschlossener Handshake beweist, dass etwas lauscht und ein Zertifikat hält, was mehr ist, als ein Ping zeigt, und weniger, als die eigenen Trust-Einstellungen des Profils verlangen.

Wenn der Handshake scheitert und der Host pingt, ist der Port wahrscheinlich falsch oder gefiltert. Betrachten Sie das als Grund, den richtigen Port anzufordern, nicht als Einladung, die benachbarten Ports abzusuchen. nc -vzu meldet auf manchen Stacks auch Erfolg, wenn nichts lauscht, sodass eine bloße UDP-Sonde ohne Handshake dahinter nichts bedeutet.

Die Trust-Pins getrennt von der Adresse lesen

Die Adresse entscheidet, wohin der Client geht; der Trust-Block entscheidet, wem er glaubt, sobald er ankommt. verify-x509-name "vpn.example.com" name pinnt den Common Name des Subjekts fest, und remote-cert-tls server verlangt die erweiterte Schlüsselverwendung für die Serverauthentifizierung. Ein Profil, das Ihnen ein Anbieter übergibt, sollte beides tragen.

Achten Sie auf ca, einen eingebetteten <ca>-Block und entweder tls-crypt oder tls-auth. Ein Profil, das tls-auth verwendet, braucht clientseitig key-direction 1, wenn die Serverseite Richtung 0 nutzt, und eine Abweichung lässt den Handshake mit einem TLS-Fehler scheitern, der wie ein Zertifikatsfehler klingt. Eine eingebettete CA, die nicht zu dem Anbieter gehört, dessen Namen Sie gerade aufgelöst haben, bedeutet, dass die Datei aus zwei Quellen zusammengesetzt wurde, und das ist der Fall, den es sich lohnt, rundheraus abzulehnen.

verify-x509-name kennt die Modi name, name-prefix oder subject, und der letzte erwartet einen vollständigen Distinguished Name in genau der Reihenfolge, in der der Server ihn ausgibt. Wählen Sie einen Modus, der zur Form des Werts passt, denn der Client weist jede Verbindung zurück, statt vor einem Beinahetreffer zu warnen. Für eine Datei, die Sie nicht selbst verfasst haben, ist name mit einem einfachen Hostnamen die am wenigsten überraschende Wahl.

Die Optionen prüfen, die still scheitern

OpenVPN 2.6 handelt Chiffren über data-ciphers aus, und ein Profil, das nur eine alte cipher AES-256-CBC-Zeile trägt, kann den Steuerkanal abschließen und dann bei den Daten hängen bleiben. Der Wert verrät Ihnen, ob die Datei älter ist als der Server, dem Sie beitreten; die 2.6-Manpage listet die Aushandlungsreihenfolge, falls Sie sie gegenüber dem Anbieter zitieren müssen.

auth-user-pass ohne Dateinamen bedeutet, dass der Client nachfragt, sodass ein scheinbar eigenständiges Profil trotzdem Zugangsdaten braucht. auth-user-pass credentials.txt bedeutet, dass es eine Datei erwartet, die Sie wahrscheinlich nicht bekommen haben. nobind und resolv-retry infinite sind gewöhnlich und harmlos, während explicit-exit-notify nur für UDP gilt und über TCP sinnlos ist.

Nichts davon ändert, wohin das Profil verbindet, aber jedes ändert, ob es überhaupt verbindet, und keines ist im Importdialog eines Clients sichtbar.

Entscheiden und dann festhalten, was Sie entschieden haben

Nach dieser Lektüre gibt es drei Ausgänge, und nur einer ist der Import. Wenn Endpunkt und Pins zu den Anweisungen passen, die Sie über einen separaten Kanal erhalten haben, importieren Sie es. Wenn der Endpunkt richtig aussieht, aber die Pins oder die CA nicht passen, fordern Sie eine korrigierte Datei an. Wenn die Datei Endpunkte oder CA-Material aus verschiedenen Quellen mischt, löschen Sie sie und verlangen Sie eine frische Kopie.

Halten Sie den geprüften Hash fest, damit die nächste Person erkennen kann, ob sich die Datei geändert hat: sha256sum profile.ovpn, neben dem Endpunkt in Ihren Notizen eingefügt. Ein Profil ist eine ganze Anordnung, keine Liste von Adressen, also setzen Sie niemals ein funktionierendes Remote in den Trust-Block eines anderen, während Sie dessen Zugangsdaten behalten.

Halten Sie private Schlüssel und Passwörter aus Screenshots und Chat-Threads heraus, während Sie Notizen vergleichen. Der Endpunkt und die nicht geheimen Optionen reichen aus, um eine präzise Frage zu stellen, und der Rest gehört in die Datei.

Wenn Sie es importieren und der erste Versuch scheitert, starten Sie den Client mit --verb 3 und lesen Sie die ersten zehn Zeilen: die aufgelöste Remote-Adresse, das ausgehandelte Proto und der TLS-Fehler erscheinen in dieser Reihenfolge, was Ihnen zeigt, welche der obigen Prüfungen Sie übersprungen haben.

Ähnliche Artikel