Il pass-through IPsec su un router domestico: cosa fa davvero
L’interruttore lascia passare un protocollo attraverso la traduzione degli indirizzi; non registra il router come client. Cattura lo scambio, leggi le associazioni, poi decidi.
Gli interruttori di pass-through del router sono concessioni di inoltro per un dispositivo posto dietro, non servizi VPN. Non registrano il router come client, non conservano credenziali e non spingono ogni apparecchio di casa attraverso un’uscita remota. Ciò che fanno è modellare il modo in cui un protocollo attraversa la traduzione degli indirizzi e i filtri. Una volta chiaro questo, l’interruttore è facile da provare e facile da lasciare spento.
Cosa fa davvero il router
Il router sta tra un client e un pari IPsec e inoltra pacchetti che non è mai stato progettato per capire. I produttori implementano la funzione in almeno tre modi: un helper di protocollo che segue o riscrive lo stato, un’eccezione del filtro che smette di scartare ESP, o una modalità di compatibilità pensata per client più vecchi. L’etichetta nell’interfaccia web dice raramente quale delle tre avete. Solo le note del firmware o una cattura di pacchetti lo diranno.
Un helper può anche peggiorare le cose. L’assistenza scritta per un flusso più vecchio a volte interferisce con un client che gestisce già correttamente la traduzione. Quando un client moderno funziona con l’opzione disattivata, lasciarla disattivata è la configurazione migliore.
Il pass-through non dà mai al router le chiavi dei pari. Vede ancora gli indirizzi e le porte esterne e applica ancora la propria politica di inoltro a essi.
NAT e NAT-T decidono il percorso
IPsec non è stato costruito per sopravvivere alla traduzione degli indirizzi, perciò gli standard hanno aggiunto un involucro. Il NAT traversal incapsula ESP dentro UDP, permettendo a una normale tabella NAT di trasportare il flusso, e la negoziazione concorda quel passaggio durante IKE (RFC 3948). IKE stesso usa UDP 500, mentre il percorso incapsulato usa di solito UDP 4500.
Per questo una regola del firewall che consente solo il protocollo 50 non basta su un percorso tradotto. Bloccare 4500 rompe il caso per cui l’involucro esiste, e bloccare 500 ferma la negoziazione prima che si formi qualsiasi tunnel. Entrambe le direzioni contano, perché un router con stato di solito consente la risposta solo dopo aver visto la richiesta. Raggiungere una porta non è lo stesso che completare l’autenticazione, né che inoltrare traffico protetto.
Gli arrangiamenti più vecchi differiscono abbastanza che una guida scritta per loro può trarre in inganno. Quando un client offre entrambe le modalità, prova quella documentata dal tuo pari e non quella con più risultati di ricerca.
Trova la fase che fallisce
Dividi il problema in negoziazione, autenticazione, protezione figlia e inoltro interno, poi raccogli prove per una fase alla volta. Un riavvio che cambia temporaneamente il risultato dimostra solo che era coinvolto un qualche stato.
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
ip xfrm state list
ip xfrm policy list
La cattura mostra se lo scambio raggiunge il pari e se tornano le risposte, il che separa un problema di filtraggio da un problema di credenziali. L’elenco di stato mostra le associazioni di sicurezza stabilite, quindi un elenco vuoto dopo un tentativo punta alla negoziazione e non all’instradamento. L’elenco delle politiche mostra quali selettori sono installati, ed è lì che una destinazione fuori dalla sottorete viene esclusa. Leggi entrambe le uscite di xfrm prima di toccare il router, perché descrivono ciò che l’host crede e non ciò che il router permette.
Se i pacchetti escono e non torna nulla, sposta la cattura sul lato WAN del router. Confrontare le due catture localizza lo scarto senza indovinare.
Spegni ciò che non ti serve
Un solo portatile funzionante non dimostra che il router serva più client insieme. Ogni client crea il proprio stato di traduzione e la propria negoziazione, e alcuni helper seguono un solo flusso. Prova il numero di sessioni simultanee di cui hai davvero bisogno, dalle reti che usi davvero. Se il secondo client fallisce mentre il primo va bene, è questa la scoperta e non un tunnel instabile.
Lascia l’opzione attiva solo quando una cattura mostra che serve. Annota la versione del firmware accanto al risultato, perché questi comportamenti cambiano tra le release. L’obiettivo è un tunnel client che hai verificato, non un interruttore acceso con speranza.