Il caso tipico è quello di una rete che usa un router per uscire su internet ed uno per una connessione VPN verso una sede remota. Ne avevo parlato anche qui. Per semplificare le cose in quel post assumo che sia il default gateway a inoltrare il traffico verso l’altro router, in realtà tutto il meccanismo viene gestito tramite messaggi ICMP.

Come l’acronimo lascia intendere (Internet Control Message Protocol), questo protocollo non viene utilizzato per trasmettere dati, anzi non viene proprio impiegato dalle applicazioni (tranne ping e traceroute, ma sono comunque diagnostiche), bensì per trasmettere errori e segnali di controllo per il traffico TCP.

Tornando al caso in questione, sul router che rappresenta il default gateway c’è una static route che reindirizza il traffico destinato alla rete della sede remota verso il router che gestisce la VPN. In realtà il router invia un messaggio ICMP Redirect che induce gli host ad aggiornare la loro tabella di routing per indirizzare il traffico al gateway corretto.

Come prescrive la RFC 1122(*), i messaggi ICMP Redirect sono di pertinenza dei gateway e non devono mai essere inviati dagli host. Inoltre, tutti gli host sono tenuti a onorare tali messaggi utilizzando a tale scopo una “route cache” dinamica. Il primo pacchetto viene inoltrato direttamente dal default gateway al router “secondario” e nel contempo viene inviato all’host origine un ICMP Redirect, che aggiorna la route cache e fa sì che da quel momento in poi il traffico interessato transiti direttamente per il secondo router.

Tutto molto bello, pratico e funzionante. Tranne che per gli IBM AS/400. Malgrado la RFC sia categorica (“A host receiving a Redirect message MUST update its routing information accordingly.”), lo stack TCP/IP degli AS/400 non obbedisce ai messaggi ICMP Redirect e gli ignora bellamente. Nel caso in oggetto quindi, oltre alla rotta statica sul default gateway, che fa funzionare gli host “obbedienti” senza doverli neppure toccare, è necessario inserire una entry direttamente nella tabella di routing dell”AS, altrimenti i pacchetti di ritorno agli host della sede remota non giungerebbero a destinazione.

(*) …che è interessantissima e spiega un fottìo di cose su come funzionano le comunicazioni tra gli host di una rete.

Tags: , , , , , ,