Fai ping verso 10.20.0.5 attraverso il tunnel e non torna nulla, mentre la tabella di routing insiste che quella sottorete è raggiungibile. Routing e IPsec rispondono a domande diverse, e solo una delle due riguarda la raggiungibilità. La ricerca in avanti sceglie un percorso, poi il database delle politiche di sicurezza decide se quel percorso va protetto, lasciato com’è o rifiutato. Quando i due sono in disaccordo, il pacchetto muore in silenzio, quindi leggili in quest’ordine.

Inizia dalla ricerca, non dalla tabella

Chiedi al kernel cosa farebbe davvero: ip route get 10.20.0.5 stampa la rotta scelta, l’interfaccia in uscita e l’indirizzo sorgente che userebbe. Un prefisso, una regola di politica, un mark o una sorgente preferita possono cambiare quella risposta, ed è per questo che la ricerca dal vivo batte la lettura della tabella a occhio.

Prova una destinazione dentro l’intervallo protetto, non l’indirizzo del gateway. Raggiungere il gateway dall’altra parte dimostra solo che esiste una rotta; non dice nulla sulla sottorete che ti serve davvero. Poi conferma che l’interfaccia scelta dalla ricerca sia quella che ti aspetti usi il tunnel.

Fai combaciare i selettori su entrambi i lati

Il database delle politiche ha le sue voci, e ognuna indica una direzione, una sorgente, una destinazione e un protocollo, poi stabilisce cosa deve succedere ai pacchetti corrispondenti. Usa ip xfrm policy per elencarle; i flag mostrano se l’azione è proteggere, aggirare o bloccare. Una politica i cui selettori sono più ampi o più stretti del tuo flusso di prova non vi corrisponderà, e il pacchetto esce senza protezione. È il guasto che stai cercando, non una rotta mancante.

Confronta i valori reali: sorgente, destinazione, protocollo e porte. Se la ricerca ha risolto una coppia di indirizzi mentre la voce di politica ne copre un’altra, le due viste descrivono traffico diverso. Riesegui entrambe con la stessa tupla prima di trarre conclusioni, altrimenti modificherai una politica che non è mai stata sul percorso.

Una corrispondenza di politica non è stato installato

Una politica corrispondente dice solo che il pacchetto deve essere protetto; il kernel ha ancora bisogno di un’associazione di sicurezza per attuare la protezione. Elencale con ip xfrm state, o con swanctl --list-sas quando è strongSwan a negoziare, e leggi i selettori e i contatori di ogni voce.

Quando una politica corrisponde e nessuna associazione copre gli stessi selettori, il pacchetto viene scartato invece di essere inviato in chiaro. È lo scarto da cercare quando il tunnel è attivo ma una singola sottorete fallisce. I contatori dicono il resto: un’associazione che non cresce mai non è mai stata selezionata, mentre una che cresce e finisce comunque in uno scarto punta al lato remoto. Correggere i selettori e rinnovare le chiavi sono riparazioni diverse, quindi decidi quale ti serve prima di toccare la configurazione.

Cosa richiede ancora un tunnel basato su rotta

Un’interfaccia XFRM fa sembrare il tunnel un dispositivo verso cui puoi instradare, il che è davvero utile. Non elimina la politica e lo stato che decidono cosa succede quando il pacchetto arriva lì. La rotta contribuisce con un next hop e nulla di più.

Se il dispositivo esiste e la rotta punta al suo interno mentre nessuna associazione corrisponde ai selettori interni, il pacchetto viene scartato, e nessuna quantità di modifica delle rotte produce chiavi o selettori. Controlla l’interfaccia con la stessa sorgente e destinazione che hai instradato, poi confronta con l’elenco degli stati.

Chiarisci la proprietà prima di modificare qualsiasi cosa

Un firewall dell’host aggiunge una terza decisione che nessuno dei due database conosce. Una rotta corretta più una politica corrispondente più un’associazione installata possono comunque finire in un pacchetto scartato, e l’applicazione riporta solo il timeout. Conferma che il firewall consenta il traffico protetto prima di dare la colpa a IPsec. Catturare sul dispositivo del tunnel e sull’interfaccia fisica mostra da quale lato della crittografia è sparito il pacchetto.

La proprietà della configurazione decide se la tua correzione sopravvive a un riavvio. Un componente può installare lo stato mentre un altro gestisce le rotte, e una modifica manuale del secondo viene sovrascritta la prossima volta che il tunnel sale. Cambia la configurazione proprietaria, poi rileggi entrambe le viste; RFC 4301 tiene separati i due database quando devi spiegare la divisione a qualcun altro.

Articoli correlati