Ho diversi Debian Squeeze (6.0.6 aggiornato) usati come router.
Quando un collegamento è inattivo, inviano reindirizzamenti ICMP agli host locali. Questo è il comportamento predefinito di Debian e molti altri. Quindi, una volta che il collegamento torna in vita, gli host non possono raggiungerlo fino al riavvio.
Non voglio che nessun reindirizzamento ICMP venga inviato da quei router.
Ho testato echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
e sysctl -w net.ipv4.conf.all.send_redirects=0
e inserendo net.ipv4.conf.all.send_redirects=0
in /etc/sysctl.d/local.conf
Ognuna di queste soluzioni inserisce il valore corretto in /proc/sys/net/ipv4/conf/all/send_redirects
Ma...
il kernel continua a inviare reindirizzamenti ICMP. Anche dopo un riavvio :
$ tcpdump -n -i eth0
00:56:17.186995 IP 192.168.0.254 > 192.168.0.100: ICMP redirect 10.10.13.102 to host 192.168.0.1, length 68
E la tabella di routing degli host locali (computer Windows) è inquinata.
Posso impedirlo con netfilter :iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP
Qualche idea sul motivo per cui il solito metodo non funziona?
E come impedire l'invio del reindirizzamento ICMP, senza utilizzare netfilter?
Risposta accettata:
Il comando giusto è:echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
Perché devi avere 0 su "all" e su "interface_name" per disabilitarlo.
In /etc/sysctl.conf
o un file simile, devi impostare "tutto" + "predefinito" (o "tutto" + "interfaccia", ma l'interfaccia potrebbe non esistere già quando questo file viene elaborato).