Conexiunea funcționa joi, actualizarea a rulat vineri, iar luni clientul se învârte la “connecting” și renunță. Același laptop, același server, același cont, aceeași cheie partajată în prealabil. Nimic din profil nu a fost editat, de aceea suspecții evidente, parola și firewall-ul, vă pierd timpul.

Ceea ce s-a schimbat este lista de transformări pe care mașina dumneavoastră este dispusă să le ofere. Ambele stive IPsec folosite pe Ubuntu, strongSwan și Libreswan, elimină algoritmi pe care nu-i mai consideră siguri, iar pluginul NetworkManager din fața lor are propria listă, care se mișcă după alt calendar. Un server fixat pe 3DES, SHA1 și un grup Diffie-Hellman de 1024 de biți poate ajunge să nu audă nimic din ce acceptă.

Ce a schimbat de fapt actualizarea

Două straturi alimentează propunerea IKEv1. Daemonul livrează un set de propuneri implicit compilat, iar pluginul L2TP fie se bazează pe el, fie furnizează propria listă. Înainte de NetworkManager-l2tp 1.2.16 pluginul se baza pe el, așa că propunerea dumneavoastră era ceea ce daemonul instalat considera rezonabil. De la 1.2.16 încolo pluginul trimite o listă documentată modelată după clienții Windows și Apple, iar acea listă este mai largă decât vechiul implicit, dar nu mai conține fiecare combinație veche în fruntea cozii.

Această separare explică un mod de eșec pe care oamenii îl găsesc confuz: două mașini pe aceeași versiune Ubuntu se pot comporta diferit pentru că una are pachetul distribuției, iar cealaltă are un backport, iar versiunea daemonului pe ambele pare identică într-un raport de eroare. Verificați versiunea pluginului, nu doar versiunea daemonului, înainte de a concluziona că actualizarea nu a schimbat nimic relevant.

Există o capcană mai mică în aceeași zonă. Cele două daemonuri scriu diferit grupurile Diffie-Hellman cu curbă eliptică, unul scrie ecp384 iar celălalt ecp_384. Lipiți ortografia greșită în dialogul Advanced și daemonul respinge setarea ca neanalizabilă, ceea ce în jurnal apare ca o problemă de negociere, nu ca o greșeală de tastare în configurație.

Citiți eșecul înainte de a schimba ceva

Începeți cu ce backend rulați, pentru că răspunsul decide atât sintaxa, cât și locul jurnalului.

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

Apoi citiți schimbul în sine. Pe strongSwan daemonul scrie în journal pe o versiune curentă și în /var/log/syslog pe una mai veche, iar partea interesantă este propunerea pe care o trimite, nu ultima linie. Căutați formularea despre nicio propunere potrivită, care este o problemă de algoritm; o eroare de autentificare, care indică cheia sau contul; sau un simplu timeout, care indică accesibilitatea.

Aceste trei rezultate sunt tratate ca un singur simptom mult prea des. Un timeout cu jurnal de daemon gol înseamnă că pachetele nu ajung. O respingere a propunerii înseamnă că au ajuns și au fost refuzate. Dacă jurnalul dumneavoastră este tăcut, creșteți nivelul de depanare al pluginului pentru o încercare și apoi coborâți-l, pentru că ieșirea detaliată umple rapid un journal.

Faza 1 și faza 2 sunt pariuri separate

IKEv1 negociază de două ori. Modul principal construiește asocierea de securitate IKE dintr-un algoritm de criptare, un algoritm de integritate, un grup Diffie-Hellman și o metodă de autentificare. Modul rapid construiește apoi asocierea ESP care va transporta L2TP. Un server este liber să accepte prima și să o respingă pe a doua, așa că un profil pe jumătate corect eșuează mai târziu decât vă așteptați și pare altă eroare.

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

Semnul exclamării este sintaxă strongSwan pentru o intrare strictă: oferă doar această combinație și nimic altceva. Fără el intrarea se alătură unei liste de rezervă, ceea ce este bine când partenerul este modern și contraproductiv când este un aparat cu o singură politică codificată dur. Tratați perechea de mai sus ca o ilustrare a formei, nu ca o recomandare pentru orice construiți astăzi.

Modificați un câmp, apoi repetați testul

Pe un plugin actual, cel mai rapid prim test este să goliți complet ambele câmpuri de propuneri și să vă reconectați, pentru că lista implicită livrată include deja combinațiile uzuale Windows și Apple. Pe un plugin mai vechi, golirea lor readuce controlul unui daemon care poate a abandonat algoritmul pe care serverul dumneavoastră insistă, iar eșecul se agravează.

Dacă golirea nu ajută, setați perechea strictă pe care serverul dumneavoastră o documentează, o fază pe rând. Modificați faza 1, reconectați-vă și citiți jurnalul înainte de a atinge faza 2. Când o combinație funcționează în sfârșit, notați-o lângă modelul serverului și versiunea pluginului, pentru că valorile implicite se vor mișca din nou și tocmai acea notă transformă următoarea actualizare într-o verificare de cinci minute.

Articole similare