OpenVPN Connect lehnt fragment ab: die Profilquelle reparieren
OpenVPN Connect kennt keine fragment-Unterstützung, ein Profil, das sich parsen lässt, kann trotzdem scheitern. Holen Sie sich eines für diesen Client oder ändern Sie die Serverseite bewusst.
Der Fehler kommt beim Import, vor jeder Aushandlung, und nennt eine Direktive, die der Client nicht akzeptiert. OpenVPN Connect führt Bibliothekscode von OpenVPN 3 aus, der die fragment-Option des Community-Clients überhaupt nicht implementiert. Damit ist das eine Kompatibilitätsfrage zwischen zwei Endpunkten und keine Tuningfrage zur Paketgröße.
Löscht man die Zeile, entsteht eine Datei, die der Client parst, und ein Server, der das beschriebene Format womöglich weiter erwartet. Gehen Sie das vom Importbildschirm nach außen durch, bevor Sie etwas bearbeiten.
Wo der Import abbricht
Der Importer parst Direktiven, bevor er den Server kontaktiert, eine Ablehnung dort ist also eine lokale Entscheidung über Syntax und kein Netzwerkergebnis, und OpenVPNs Liste der nicht unterstützten Direktiven hält dieselbe Einschränkung fest. Das erklärt, wie eine Datei im Community-Client funktionieren und in Connect auf derselben Maschine scheitern kann. Lesen Sie in der Meldung den Namen der Direktive und bewahren Sie die Originaldatei auf, denn dieser Text ist der einzige Beleg dafür, woran der Client Anstoß genommen hat. Ein Importfehler und ein Verbindungs-Timeout stammen aus verschiedenen Phasen und verdienen verschiedene Reaktionen.
Nennt die Meldung fragment, bleibt die Frage, ob auch der Server davon abhängt. Beantworten Sie das, bevor Sie das erhaltene Profil anfassen.
Was fragment im Community-Client ändert
Im Community-Client aktiviert die Direktive OpenVPNs eigene Datagramm-Fragmentierung, die Nutzlasten aufteilt, bevor sie die äußere IP-Schicht erreichen. Sie existiert, um Pfade zu überstehen, die große UDP-Datagramme verwerfen, und um einen Tunnel dort nutzbar zu halten, wo der Path-MTU-Discovery nicht zu trauen ist. Sie ist nicht gleichbedeutend mit einer niedrigeren Interface-MTU, und sie ist keine IP-Fragmentierung durch das Betriebssystem. Ein Client ohne den Mechanismus bekommt ihn nicht, indem eine Zahl kleiner wird.
Weil die Einstellung auch in der Serverkonfiguration liegt, ändert das Entfernen aus Ihrer Kopie nur Ihre Seite. Der Server erwartet womöglich weiterhin einen Peer, der die Option versteht, und ein Profil, das parst, ist noch keine Sitzung, die zustande kommt. Diese beiden Tatsachen erklären den verwirrenden Zwischenzustand, in dem eine bearbeitete Datei verbindet und dann hängen bleibt.
Fordern Sie ein Profil für diesen Client an
Der saubere Weg ist ein zweites, für OpenVPN Connect dokumentiertes Profil, falls der Dienst eines veröffentlicht. Viele Anbieter tun das, und der Unterschied sind meist die Direktiven, die sie weglassen, nicht der Endpunkt, auf den sie zeigen. Fragen Sie danach mit dem Clientnamen, statt den Fehler zu beschreiben, denn ein Support kann ein Profil viel schneller einem Client zuordnen, als eine abgespeckte Datei zu diagnostizieren.
Wenn Sie den Server betreiben, ist die Entscheidung breiter als Ihr eigener Client. Fragmentierung abzuschalten trifft jeden Peer, auch jene, die sie brauchten, um über einen schlechten Pfad verbunden zu bleiben. Einen zweiten Listener oder eine zweite Konfiguration für den betroffenen Client zu veröffentlichen hält bestehende Nutzer am Laufen, während der neuere Client etwas bekommt, das er parsen kann. Wie Sie es auch angehen, schreiben Sie auf, welche Konfiguration welchen Client bedient, denn diese Zuordnung verschwindet sonst schnell.
Prüfen Sie die Verbindung, nicht nur den Import
Ein erfolgreicher Import belegt nur, dass der Parser die Datei akzeptiert hat. Bauen Sie den Tunnel mit dem Community-Client auf einer Maschine, die Sie kontrollieren, mit demselben Profil, und lesen Sie das Log für Transport- und Verschlüsselungsaushandlung. Die Befehle unten tun das, ohne dass die Desktop-App im Weg steht.
openvpn --config client.ovpn --verb 3
ip -4 addr show tun0
curl -sS --interface tun0 -o /dev/null -w '%{http_code}\n' --max-time 8 https://example.com/
Das Log zeigt, wo der Versuch endete: ein Optionsfehler erscheint vor jedem TLS-Austausch, ein Authentifizierungs- oder Verschlüsselungsfehler danach. Kommt der Tunnel hoch und scheitert die Anfrage weiterhin, ist das Problem von der Kompatibilität ins Routing gewandert. Vergleichen Sie das mit dem Verhalten von Connect im selben Netz, bevor Sie etwas über den Server schließen.
Bewahren Sie das funktionierende Profil und die Client-Version neben der Notiz auf. Eine künftige Client-Version kann Unterstützung für eine Direktive ergänzen, und das ändert die Antwort, ohne dass jemand den Server anfasst.