Tengo varios Debian Squeeze (6.0.6 actualizados) que se usan como enrutadores.
Cuando un enlace no funciona, envían redireccionamientos ICMP a los hosts locales. Este es el comportamiento predeterminado de Debian y varios otros. Entonces, una vez que el enlace vuelve a la vida, los hosts no pueden acceder a él hasta que se reinicie.
No quiero que se envíe ningún redireccionamiento ICMP desde esos enrutadores.
Probé echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
y sysctl -w net.ipv4.conf.all.send_redirects=0
y poniendo net.ipv4.conf.all.send_redirects=0
en /etc/sysctl.d/local.conf
Cada una de esas soluciones pone el valor correcto en /proc/sys/net/ipv4/conf/all/send_redirects
Pero…
el núcleo sigue enviando redireccionamientos ICMP. Incluso después de reiniciar:
$ 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
Y la tabla de enrutamiento de los hosts locales (computadoras con Windows) está contaminada.
Puedo evitar esto con netfilter:iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP
¿Alguna idea de por qué el método habitual no funciona?
¿Y cómo evitar que se envíe el redireccionamiento ICMP sin usar netfilter?
Respuesta aceptada:
El comando correcto es:echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
Porque debe tener 0 en 'todos' y en 'interface_name' para deshabilitarlo.
En /etc/sysctl.conf
o un archivo similar, debe configurar 'todos' + 'predeterminado' (o 'todos' + 'interfaz', pero es posible que la interfaz aún no exista cuando se procese este archivo).