Lo stesso .ovpn file si connette da una shell e va in timeout dopo l’importazione in NetworkManager. La conclusione naturale è che la VPN sia rotta. La spiegazione più probabile è più piccola: NetworkManager non ha conservato il file, ne ha importato una parte in una connessione salvata e il tunnel in esecuzione usa invece quei dati salvati. Ciò che il file dice ora è irrilevante per ciò che contiene il profilo.

Il file non è il profilo

L’importazione è una traduzione, non un montaggio. Le opzioni che il plugin comprende diventano chiavi nel vpn.data dizionario della connessione; le opzioni che non comprende vengono scartate o registrate altrove, e il percorso originale è solo un riferimento. Modificare il file sorgente in seguito non cambia nulla della connessione già salvata.

Questo divario spiega un’intera famiglia di segnalazioni: la chiave condivisa è stata ruotata, il file è stato aggiornato e il tunnel fallisce ancora. Il profilo salvato punta ancora al vecchio percorso o al vecchio valore, e la riga di comando continua a funzionare perché legge il file che hai modificato. Due client, due fonti di verità, e solo una di esse è stata aggiornata.

Leggi il profilo salvato, non la finestra di dialogo

nmcli -f connection.id,connection.uuid,vpn.service-type,vpn.data connection show office-vpn

Usa l’UUID quando due profili condividono un nome, e conferma che il tipo di servizio sia il OpenVPN plugin che ti aspetti, e non un altro tipo di VPN che per caso è installato. Poi confronta l’endpoint, il trasporto e i riferimenti ai certificati con l’invocazione che funziona.

Un valore visibile in un editor grafico non è prova che sia stato salvato. Salva, riapri e rileggilo dalla riga di comando; difetti di salvataggio storici sono un motivo per controllare i dati memorizzati, non la prova che ogni build attuale abbia lo stesso bug. Il controllo costa un comando.

Due chiavi, e una direzione che conta

Per una connessione che usa l’autenticazione TLS, il plugin memorizza il percorso della chiave condivisa in ta e la direzione in ta-dir, quando il deployment ne usa una. Entrambe vivono nel dizionario dei dati del profilo, ed entrambe devono corrispondere a ciò che il server si aspetta.

La direzione è una decisione lato server espressa sul client. Sceglierne una perché un profilo vicino la possiede è il modo in cui una chiave funzionante finisce per fallire una stretta di mano. Se la configurazione del server è senza direzione, il client non dovrebbe inventarne una.

Il file della chiave stesso deve essere leggibile dal plugin nel contesto in cui viene effettivamente eseguito. Un pacchetto confinato ha una vista del filesystem diversa da quella di un’installazione desktop ordinaria, quindi un percorso che esiste nella tua shell può essere invisibile al servizio.

Aggiorna una voce, non il dizionario

nmcli connection modify office-vpn +vpn.data 'ta=/etc/NetworkManager/certs/office-ta.key'
nmcli connection modify office-vpn +vpn.data 'ta-dir=1'

Il più iniziale aggiorna singole voci del dizionario. Assegnare vpn.data senza di esso sostituisce l’intero dizionario, ed è così che una chiave mancante diventa cinque impostazioni rotte. Rileggi il profilo dopo la modifica e conferma che le altre voci siano sopravvissute. Un dizionario che ha perso l’endpoint remoto e i suoi certificati è un pomeriggio molto più lungo di quello con cui hai iniziato.

Riconnettiti tramite i normali controlli e osserva la fase che fallisce. Se il cancello della chiave condivisa ora passa e il client segnala un errore di certificato o di autenticazione utente, hai fatto progressi e la prossima indagine è diversa.

Non confondere le modalità del canale di controllo

tls-auth, tls-crypt, e tls-crypt-v2 sono disposizioni diverse. Un file di chiave che sembra simile non li rende intercambiabili, e compilare i campi TLS-Auth perché un altro profilo contiene una chiave formattata produce un profilo che fallisce in un modo che somiglia a una chiave sbagliata.

Usa la mappatura del plugin che corrisponde alla modalità nella configurazione del server. Quando la modalità non è chiara, chiedi al proprietario del server invece di indovinare dalla prima riga del file.

Mantieni un percorso di ripristino quando il tunnel trasporta la tua sessione di gestione. Una modifica salvata non è necessariamente una modifica applicata, e un’importazione riuscita non è prova che ogni opzione sorgente fosse supportata. Entrambi i divari vale la pena conoscerli prima di riconnettere il collegamento attraverso cui lavori.

Articoli correlati