iOS IKEv2 zu strongSwan: kein Vorschlag gewählt, Liste korrigieren
Kein Vorschlag gewählt bedeutet, dass sich die beiden Listen nie überschneiden. Übersetzen Sie SHA1 in SHA-96, modp1024 in group 2 und setzen Sie auch den Kind-Vorschlag.
Das iPhone baut den Tunnel auf, das Gateway antwortet mit nichts, und das Telefon zeigt einen allgemeinen Fehler. Das Protokoll von strongSwan ist konkreter: kein Vorschlag gewählt. Diese Meldung bedeutet, dass sich die beiden Listen zulässiger Cipher-Suites nie überschnitten haben, sodass der Austausch endete, bevor die Authentifizierung begann. Es ist ein Zuordnungsproblem, und die Lösung besteht darin, die Listen zur Überschneidung zu bringen.
Wo das Gateway seine Richtlinie erklärt
strongSwan schreibt seine Richtlinie in die Konfiguration, und das Ausrufezeichen am Ende entscheidet, wie diese Richtlinie gelesen wird. Mit dem Zeichen ist die Liste erschöpfend: Diese Einträge und nichts anderes werden akzeptiert. Ohne es ist dieselbe Zeile eine Präferenzreihenfolge, und der Daemon kann etwas wählen, das Sie nicht beabsichtigt hatten. Fragen Sie, welche Form ausgerollt ist, bevor Sie irgendetwas übersetzen, denn beide verhalten sich gegenüber demselben Client unterschiedlich. Notieren Sie die genaue Zeile samt Zeichen und testen Sie dagegen.
Ein Client, der eine breitere Liste anbietet, kann sich weiterhin mit einem festgelegten Gateway verbinden, solange eine Kombination auf beiden Seiten vorkommt. Was nicht passieren kann, ist eine Verhandlung außerhalb der festgelegten Menge.
Deshalb kann ein aus einer anderen VPN-App kopiertes Profil dort funktionieren, wo Ihres es nicht tut: Die andere App lieferte eine andere Liste.
Die Namen müssen passen, nicht besser werden
Zwei Übersetzungen erwischen Leute, die Werte von strongSwan nach iOS übertragen. Der Integritätsalgorithmus, in einem IKE-Vorschlag als SHA1 geschrieben, reist in seiner verkürzten Form, die iOS .SHA96 nennt. Die Diffie-Hellman-Gruppe, geschrieben als modp1024, ist group 2, die iOS .group2 nennt. SHA-256 oder group 14 zu setzen verhandelt nicht gegen ein Gateway, das nur das ältere Paar akzeptiert. Der Client muss denselben Algorithmus beschreiben, keinen stärkeren.
Setzen Sie diese Werte ausdrücklich in NEVPNProtocolIKEv2. Standardwerte können breiter oder enger sein als das Profil, das Sie ersetzen, und der Unterschied zeigt sich erst, wenn der Handshake scheitert.
Der Kind-Vorschlag scheitert später und leiser
Konfigurieren Sie die Sicherheitsassoziation des Kindes ebenso wie die für IKE. Wenn nur die IKE-Parameter passen, authentifiziert sich der Tunnel und trägt danach keinen Verkehr, was ein viel leiserer Fehler ist als eine Ablehnung. Setzen Sie Verschlüsselung, Integrität, Gruppe und Lebensdauer des Kindes im selben Durchgang. Halten Sie die Lebensdauer des Clients auf dem Wert des Gateways oder darunter, denn auf einer längeren zu bestehen erzeugt dieselbe Meldung kein Vorschlag gewählt aus anderer Ursache. Eine Abweichung dort sieht identisch aus wie eine IKE-Abweichung im Protokoll.
Prüfen Sie, ob sich das Profil mit Zertifikaten oder einem gemeinsamen Geheimnis authentifiziert, während Sie in der Konfiguration sind. Eine Vorschlagsablehnung und eine Authentifizierungsablehnung erscheinen in verschiedenen Zeilen, und die falsche zu beheben kostet einen Tag. Testen Sie nach jeder Änderung mit einer frischen Verbindung, jeweils eine Variable, denn zwischengespeicherter Zustand verbirgt, welcher Parameter sich bewegt hat.
Belassen Sie die alte Suite nur, solange sie nötig ist
SHA-1 mit einer 1024-Bit-Gruppe festzunageln ist eine Brücke, kein Ziel. Beides ist veraltet, und neuere Clients können sie rundweg ablehnen, was bedeutet, dass das Profil auf dem nächsten Gerät ohne Änderung auf Ihrer Seite scheitert. Behandeln Sie die Festlegung als vorübergehend und sagen Sie das im Datensatz.
Wenn strongSwan Ihnen gehört, fügen Sie einen modernen Vorschlag hinzu und lassen Sie beide Seiten nach oben verhandeln, während der alte Eintrag für ältere Geräte bleibt. Lesen Sie die Statusausgabe des Daemons, um zu sehen, welche Suite jede Verbindung tatsächlich verwendet hat. Entfernen Sie dann die Festlegung auf der Clientseite, sobald das moderne Paar bestätigt ist. Ein Tunnel, der hochkommt, ist kein ausreichender Beweis, denn er kann auf der Suite hochkommen, die Sie ausmustern wollten. Die strongSwan-Dokumentation zu IKEv2 beschreibt die Vorschlagssyntax und die strenge Markierung.