La connessione funzionava giovedì, l'aggiornamento è stato eseguito venerdì, e lunedì il client gira su “connecting” e si arrende. Stesso portatile, stesso server, stesso account, stessa chiave precondivisa. Non è stato modificato nulla nel profilo, ed è per questo che i sospetti ovvi, la password e il firewall, vi fanno perdere tempo.

Ciò che è cambiato è l'elenco delle trasformazioni che la vostra macchina è disposta a offrire. Entrambi gli stack IPsec usati su Ubuntu, strongSwan e Libreswan, eliminano algoritmi che non ritengono più sicuri, e il plugin di NetworkManager che li precede ha una propria lista, che si muove con un calendario diverso. Un server fissato a 3DES, SHA1 e un gruppo Diffie-Hellman da 1024 bit può finire per non sentire nulla di ciò che accetta.

Che cosa ha cambiato davvero l'aggiornamento

Due livelli alimentano la proposta IKEv1. Il demone fornisce un insieme di proposte predefinito compilato, e il plugin L2TP o si affida a esso o fornisce la propria lista. Prima di NetworkManager-l2tp 1.2.16 il plugin si affidava a esso, quindi la vostra proposta era ciò che il demone installato riteneva ragionevole. Da 1.2.16 in poi il plugin invia un elenco documentato modellato sui client Windows e Apple, e quell'elenco è più ampio della vecchia impostazione predefinita ma non contiene più ogni combinazione legacy in testa alla coda.

Questa separazione spiega una modalità di guasto che le persone trovano confusa: due macchine sulla stessa versione di Ubuntu possono comportarsi diversamente perché una ha il pacchetto della distribuzione e l'altra ha un backport, e la versione del demone su entrambe sembra identica in un rapporto di bug. Controllate la versione del plugin, non solo quella del demone, prima di concludere che l'aggiornamento non ha cambiato nulla di rilevante.

C'è una trappola più piccola nella stessa area. I due demoni scrivono in modo diverso i gruppi Diffie-Hellman a curva ellittica, uno scrive ecp384 e l'altro ecp_384. Incollate l'ortografia sbagliata nella finestra Advanced e il demone rifiuta l'impostazione come non analizzabile, il che nel registro appare come un problema di negoziazione e non come un errore di battitura nella configurazione.

Leggete il guasto prima di cambiare qualsiasi cosa

Iniziate da quale backend state eseguendo, perché la risposta determina sia la sintassi sia la posizione del registro.

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

Poi leggete lo scambio stesso. Su strongSwan il demone scrive nel journal su una versione attuale e in /var/log/syslog su una più vecchia, e la parte interessante è la proposta che invia, non l'ultima riga. State cercando una formulazione su nessuna proposta corrispondente, che è un problema di algoritmo; un errore di autenticazione, che indica la chiave o l'account; o un semplice timeout, che indica la raggiungibilità.

Questi tre esiti vengono trattati come un solo sintomo fin troppo spesso. Un timeout con un registro del demone vuoto significa che i pacchetti non arrivano. Un rifiuto della proposta significa che sono arrivati e sono stati rifiutati. Se il vostro registro è silenzioso, alzate il livello di debug del plugin per un tentativo e abbassatelo dopo, perché l'output dettagliato riempie rapidamente un journal.

La fase 1 e la fase 2 sono scommesse separate

IKEv1 negozia due volte. La modalità principale costruisce l'associazione di sicurezza IKE da un algoritmo di cifratura, un algoritmo di integrità, un gruppo Diffie-Hellman e un metodo di autenticazione. La modalità rapida costruisce poi l'associazione ESP che trasporterà L2TP. Un server è libero di accettare la prima e rifiutare la seconda, quindi un profilo mezzo corretto fallisce più tardi del previsto e sembra un altro bug.

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

Il punto esclamativo è sintassi strongSwan per una voce rigorosa: offri solo questa combinazione e nient'altro. Senza di esso la voce si unisce a un elenco di riserva, il che va bene quando il peer è moderno ed è controproducente quando è un apparato con un'unica politica codificata. Considerate la coppia qui sopra come un'illustrazione della forma, non come una raccomandazione per qualsiasi cosa stiate costruendo oggi.

Cambiate un campo, poi ripetete il test

Su un plugin attuale, il primo test più rapido è svuotare completamente entrambi i campi delle proposte e riconnettere, perché l'elenco predefinito fornito include già le combinazioni comuni di Windows e Apple. Su un plugin più vecchio, svuotarli restituisce il controllo a un demone che potrebbe aver eliminato l'algoritmo su cui il vostro server insiste, e il guasto peggiora.

Se svuotare non aiuta, impostate la coppia rigorosa documentata dal vostro server, una fase alla volta. Cambiate la fase 1, riconnettete e leggete il registro prima di toccare la fase 2. Quando una combinazione finalmente funziona, annotatela accanto al modello di server e alla versione del plugin, perché le impostazioni predefinite si muoveranno di nuovo e quella nota è ciò che trasforma il prossimo aggiornamento in un controllo di cinque minuti.

Articoli correlati