PREMESSA

Normalmente ciascuna rete IP ha un proprio "gateway" da utilizzare per parlare con il resto del mondo; esistono però molte reti dove i router collegati sono più di uno (es. il gateway verso Internet ed un router verso una o più sedi remote - vedi figura).

multiple gw

La domanda ovvia che ci si pone in questi casi è: che gateway imposto sui vari host della rete? Se si imposta il gateway verso Internet, gli host non potranno raggiungere la rete remota; viceversa, se si configura il router verso la sede remota, sarà difficile che le macchine riescano ad andare su Internet.

Dato che queste configurazioni sono tutt'altro che infrequenti, gli ideatori del TCP/IP hanno implementato una funzionalità a livello ICMP detta appunto ICMP Redirect: questo messaggio in pratica dice all'host che per raggiungere una certa rete deve passare da un'altro router. Tanto per ricordare un po' di teoria, ICMP sta per Internet Control Message Protocol ovvero "protocollo per il controllo del livello Internet attraverso messaggi": in altre parole, è un protocollo al servizio del livello IP di una macchina (ovvero della parte che si occupa del routing).

Affinchè questo "giochino" funzioni è necessario però che tutti gli apparati "si conoscano" ovvero che ciascun router conosca non solo le proprie destinazioni ma anche quelle degli altri router (e normalmente è così: quindi, facendo riferimento allo schema, il firewall conosce la rotta per la rete 192.168.1.0/24 ed il router quella "verso internet".
 
Prendiamo come esempio lo schema riportato sopra e supponiamo che tutti i client siano configurati per usare come gateway la macchina connessa a Internet: questo significa che ogni volta che un host deve contattare qualcuno che non è nella sua rete invierà il frame alla macchina 192.168.0.253 (quella di destra). Il .253 sa però che per raggiungere la sede remota è necessario passare per il 192.168.0.254: se si "rigira" semplicemente il pacchetto al router si ottiene, come conseguenza, che ogni pacchetto transita nella rete 2 volte (una per andare dall'host al firewall ed una seconda volta per andare dal firewall al router). La soluzione più elegante è che il firewall invii un messaggio all'host dicendogli "caro amico, per andare verso il 192.168.1.0/24 non passare da me ma vai diretto tramite 192.168.0.254".

 

IL PROBLEMA 
In due parole, il Windows Firewall (ma probabilmente anche altri personal firewall) blocca i messaggi di ICMP Redirect.
 Tutto sommato questo comportamento è anche giusto visto che il firewall si vede arrivare un "unsolicited message"  ovvero un pacchetto che non trova corrispondenza con quanto è uscito dalla macchina (il pacchetto originale era per una macchina della sede remota, mentre la risposta arriva da un'altra entità). D'altra parte tutti noi sappiamo che il Windows Firewall blocca anche i PING (la macchina non è cioà pingabile dalle altre).

LA SOLUZIONE
Per risolvere il problema, basta aggiungere l'apposita eccezione per l'ICMP Redirect:

winFW 1   winFW 2 

Morale della favola: quando si configura il Windows Firewall dalle GPO non dimenticarsi di queste "piccole" utilities dell'ICMP