key-method aus einem OpenVPN-Profil zu löschen ändert nichts
Die Direktive verschwand aus dem Parser, nicht aus dem Protokoll. Trennen Sie die veraltete Option vom Schlüsselaustauschformat, bevor Sie ein Profil bearbeiten.
Ein Profil, das jahrelang funktioniert hat, verweigert plötzlich den Start, und die Meldung nennt eine Direktive, die niemand hinzugefügt zu haben glaubt: key-method. Das nächste Suchergebnis schlägt vor, key-method 2 aus Kompatibilitätsgründen hinzuzufügen, was ein Rat aus einer anderen Epoche ist. Der Parser, der die Zeile abgelehnt hat, ist ein aktueller, und er kennt diese Option überhaupt nicht. Das Entfernen der Zeile behebt den Start und ändert nichts daran, wie die beiden Peers die Sitzung schützen.
Genau diese Lücke zwischen dem, was ein Profil enthält, und dem, was das Protokoll tatsächlich tut, ist das ganze Thema hier, und sie erklärt mehrere andere Änderungen, die Leute gleichzeitig vornehmen. Sie erklärt auch, warum diese Änderungen meist im Paket kommen.
Das Symptom ist ein Parse-Fehler, kein Handshake-Fehler
Optionen werden gelesen, bevor irgendein Paket gesendet wird. Ein Profil mit einer unbekannten Direktive scheitert in dieser Phase, sodass der Prozess nie das Netzwerk erreicht und nie einen Handshake-Fehler erzeugt. Die Formulierung benennt meist die Option und die Datei, was dies zu einem der leichter zuzuordnenden Fehler macht. Kein Paket, keine Route und keine Firewall sind daran beteiligt.
openvpn --config /etc/openvpn/client/office.ovpn --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log
Wenn die Meldung die Direktive nennt, ist die Diagnose abgeschlossen: Die Datei enthält etwas, das dieser Build nicht akzeptiert. Wenn die Meldung stattdessen einen Dateipfad nennt, ist das Problem ein fehlendes Include oder ein fehlender Schlüssel, was ein anderer Abschnitt derselben Startphase ist.
Was Sie nicht folgern sollten, ist, dass der Client oder Server einen älteren Protokollmodus braucht. Ein Parse-Fehler ist ein Wortschatzproblem zwischen Ihrer Datei und der Binärdatei, und die Binärdatei hat in diesem Fall einfach ein Wort aus ihrem Wortschatz gestrichen.
Direktive und Übertragungsformat sind zwei verschiedene Dinge
Die alte key-method-Option wählte aus, wie der TLS-Schlüsselaustausch gerahmt wurde, und der moderne Austausch ist die Mehrpaketmethode, die diese Option früher anforderte. Die Option verschwand, weil sie nichts mehr auswählte; das Format, das sie benannte, wurde das einzige. Das Entfernen der Zeile lässt die Sitzung daher dieselbe Rahmung wie zuvor verwenden. Eine Textänderung kann daran in keine Richtung etwas ändern.
Deshalb ist es die falsche Reparatur, eine alte Binärdatei wieder einzuführen, um Methode 2 zu „wiederherstellen“. Sie stellt nichts wieder her außer einem älteren Parser mit älteren Standardwerten, und sie kostet Sie die Korrekturen, die danach kamen. Dieselbe Logik gilt für das Aufweichen einer Zertifikatsprüfung oder einer Cipher-Liste in der Hoffnung, die Verbindung komme zurück.
Eine nützliche Kontrolle sind die Version und die geparste Konfiguration, nicht das Vorhandensein des Wortes in der Datei:
openvpn --version | head -n 1
grep -rn 'key-method' /etc/openvpn/ 2>/dev/null
Was entfernt werden muss, und aus welcher Datei
Bearbeiten Sie die Datei, die der laufende Prozess tatsächlich liest, und nur diese. Auf paketierten Systemen ist das normalerweise das Profil im Client- oder Serververzeichnis, das die Unit nennt, nicht eine Kopie in Ihrem Heimatverzeichnis, die Sie als Referenz behalten. Ein generiertes Profil kann auch aus einer Vorlage neu gebaut werden, sodass eine Änderung nur an der ausgerollten Kopie nach dem nächsten Provisionierungslauf zurückkehrt.
Löschen Sie die veraltete Zeile und lassen Sie Endpunkt, Zertifikate, Cipher-Richtlinie und Einstellungen des Steuerkanals in Ruhe. Das sind unterstützte Optionen, die der Prozess braucht, und sie sind am Parse-Fehler nicht beteiligt. Wenn dasselbe Profil andere Direktiven enthält, die Sie nicht erkennen, prüfen Sie jede einzelne gegen die Version, die Sie ausführen, statt eine Gruppe davon zu löschen, bis der Prozess startet.
Starten Sie dann die vorgesehene Instanz und lesen Sie ihre Startausgabe. Ein sauberer Start mit vorhandenem Listener ist die Bestätigung, dass diese Phase abgeschlossen ist; ein Clienttest danach beantwortet eine andere Frage.
Ein abgelehntes Profil und ein abgelehnter Client sehen ähnlich aus
Zwei Fehler erzeugen ähnliche Support-Threads und brauchen unterschiedliche Belege. Ein Server, der seine eigene Konfiguration ablehnt, startet nie, sodass kein Client sich verbinden kann. Ein Server, der gut startet und einen Client ablehnt, läuft, und sein Log enthält den Grund: ein Zertifikatsproblem, eine geschobene Option, die der Client nicht akzeptiert, eine Cipher-Abweichung.
Die entfernte Option ist keine Diagnose für den zweiten Fall, und nach ihr zu greifen verschwendet dieselbe Stunde zweimal. Wenn das Client-Log die Ablehnung des Servers zeigt, lesen Sie diese Ablehnung; wenn es einen lokalen Fehler zeigt, ist das Client-Profil die zu prüfende Datei. Nach einer Direktive zu greifen, die es nicht mehr gibt, verzögert beide Untersuchungen um denselben Betrag.
Kompatibilitätsfragen, die die Zeile nie beantwortet hat
Profile, die mit dieser Direktive kursieren, tragen meist eine Geschichte über eine bestimmte Plattform, und die Geschichte überlebt den technischen Grund. Ein Mobil- oder Desktop-Client braucht weiterhin ein vollständiges unterstütztes Profil: eine vertrauenswürdige Zertifikatskette, eine Daten-Cipher, die beide Seiten akzeptieren, einen Steuerkanalmodus, den beide Seiten implementieren, und keine Direktiven, die der Build des Clients ablehnt. Nichts davon entscheidet sich an der Anwesenheit oder Abwesenheit der alten key-method-Zeile.
Komprimierung ist eine separate Richtlinienfrage derselben Form. Das Entfernen einer key-method-Zeile sagt nichts darüber aus, ob eine Komprimierungsdirektive in Ihrer Bereitstellung unterstützt oder akzeptabel ist, und die beiden Entscheidungen sollten unabhängig getroffen werden. Mehrere sicherheitsrelevante Einstellungen auf einmal zu löschen, bis etwas sich verbindet, ist der Weg, auf dem ein funktionierendes Profil zu einem unerklärten wird.
Halten Sie kurz fest, was Sie entfernt haben und warum: die Option, die Version, die sie abgelehnt hat, und den Befehl, der den Fehler zeigte. Die nächste Person, die das Profil erbt, wird genau diese drei Fakten brauchen, und sie jetzt aufzuschreiben ist billiger, als sie später zu rekonstruieren.