Die Verbindung funktionierte am Donnerstag, das Upgrade lief am Freitag, und am Montag dreht der Client bei „connecting“ und gibt auf. Dasselbe Notebook, derselbe Server, dasselbe Konto, derselbe vorab vereinbarte Schlüssel. Im Profil wurde nichts bearbeitet, weshalb die offensichtlichen Verdächtigen, das Passwort und die Firewall, Ihre Zeit verschwenden.

Geändert hat sich die Liste der Transformationen, die Ihr Rechner anzubieten bereit ist. Beide auf Ubuntu verwendeten IPsec-Stacks, strongSwan und Libreswan, entfernen Algorithmen, die sie nicht mehr für sicher halten, und das NetworkManager-Plugin davor hat seine eigene Liste, die sich nach einem anderen Zeitplan verschiebt. Ein Server, der auf 3DES, SHA1 und eine 1024-Bit-Diffie-Hellman-Gruppe festgelegt ist, kann am Ende nichts hören, was er akzeptiert.

Was das Upgrade tatsächlich geändert hat

Zwei Schichten speisen das IKEv1-Angebot. Der Daemon liefert einen einkompilierten Standard-Vorschlagssatz, und das L2TP-Plugin überlässt es entweder ihm oder liefert seine eigene Liste. Vor NetworkManager-l2tp 1.2.16 überließ es das Plugin, sodass Ihr Angebot das war, was der installierte Daemon für angemessen hielt. Ab 1.2.16 sendet das Plugin eine dokumentierte Liste, die an Windows- und Apple-Clients angelehnt ist, und diese Liste ist breiter als der alte Standard, enthält aber nicht mehr jede alte Kombination am Anfang der Warteschlange.

Diese Trennung erklärt einen Fehlermodus, den viele verwirrend finden: zwei Rechner auf derselben Ubuntu-Version können sich unterschiedlich verhalten, weil der eine das Distributionspaket und der andere einen Backport hat, während die Daemon-Version bei beiden in einem Fehlerbericht identisch aussieht. Prüfen Sie die Plugin-Version, nicht nur die Daemon-Version, bevor Sie schließen, dass das Upgrade nichts Relevantes geändert hat.

In demselben Bereich gibt es eine kleinere Falle. Die beiden Daemons schreiben die Diffie-Hellman-Gruppen der elliptischen Kurve unterschiedlich, der eine schreibt ecp384 und der andere ecp_384. Fügen Sie die falsche Schreibweise in den Advanced-Dialog ein, und der Daemon lehnt die Einstellung als nicht parsebar ab, was im Log als Verhandlungsproblem erscheint und nicht als Tippfehler in der Konfiguration.

Lesen Sie den Fehler, bevor Sie etwas ändern

Beginnen Sie damit, welches Backend Sie ausführen, denn die Antwort entscheidet sowohl über die Syntax als auch über den Logort.

ipsec --version
nmcli connection show "Your VPN name" | grep -i ipsec

Lesen Sie dann den Austausch selbst. Bei strongSwan protokolliert der Daemon auf einer aktuellen Version ins Journal und auf einer älteren nach /var/log/syslog, und der interessante Teil ist der Vorschlag, den er sendet, nicht die letzte Zeile. Sie suchen nach Formulierungen zu keinem passenden Vorschlag, was ein Algorithmusproblem ist; nach einem Authentifizierungsfehler, der auf den Schlüssel oder das Konto deutet; oder nach einem einfachen Timeout, der auf Erreichbarkeit deutet.

Diese drei Ergebnisse werden viel zu oft als ein Symptom behandelt. Ein Timeout mit leerem Daemon-Log bedeutet, dass die Pakete nicht ankommen. Eine Ablehnung des Vorschlags bedeutet, dass sie ankamen und abgelehnt wurden. Wenn Ihr Log still ist, erhöhen Sie für einen Versuch die Debug-Stufe des Plugins und senken Sie sie danach wieder, denn die ausführliche Ausgabe füllt ein Journal schnell.

Phase 1 und Phase 2 sind getrennte Wetten

IKEv1 verhandelt zweimal. Der Hauptmodus baut die IKE-Sicherheitsassoziation aus einem Verschlüsselungsalgorithmus, einem Integritätsalgorithmus, einer Diffie-Hellman-Gruppe und einer Authentifizierungsmethode auf. Der Schnellmodus baut dann die ESP-Assoziation auf, die L2TP tragen wird. Ein Server darf die erste akzeptieren und die zweite ablehnen, sodass ein halbwegs korrektes Profil später fehlschlägt als erwartet und wie ein anderer Fehler aussieht.

Phase 1: 3des-sha1-modp1024!
Phase 2: 3des-sha1!

Das Ausrufezeichen ist strongSwan-Syntax für einen strikten Eintrag: Biete diese eine Kombination an und nichts anderes. Ohne es tritt der Eintrag einer Ausweichliste bei, was gut ist, wenn der Peer modern ist, und kontraproduktiv, wenn er ein Gerät mit einer einzigen fest codierten Richtlinie ist. Betrachten Sie das Paar oben als Illustration der Form, nicht als Empfehlung für irgendetwas, was Sie heute bauen.

Ändern Sie ein Feld und wiederholen Sie dann den Test

Bei einem aktuellen Plugin ist der schnellste erste Test, beide Vorschlagsfelder vollständig zu leeren und sich neu zu verbinden, denn die mitgelieferte Standardliste enthält bereits die gängigen Windows- und Apple-Kombinationen. Bei einem älteren Plugin gibt das Leeren die Kontrolle an einen Daemon zurück, der den Algorithmus, auf dem Ihr Server besteht, womöglich verworfen hat, und der Fehler wird schlimmer.

Wenn das Leeren nicht hilft, setzen Sie das strikte Paar, das Ihr Server dokumentiert, jeweils eine Phase. Ändern Sie Phase 1, verbinden Sie sich neu und lesen Sie das Log, bevor Sie Phase 2 anfassen. Wenn eine Kombination endlich funktioniert, schreiben Sie sie neben das Servermodell und die Plugin-Version, denn die Standards werden sich wieder verschieben, und genau diese Notiz macht das nächste Upgrade zu einer Fünf-Minuten-Prüfung.

Ähnliche Artikel