J'ai plusieurs Debian Squeeze (6.0.6 à jour) utilisés comme routeurs.
Lorsqu'un lien est en panne, ils envoient des redirections ICMP aux hôtes locaux. C'est le comportement par défaut de Debian et de plusieurs autres. Ainsi, une fois que le lien revient à la vie, les hôtes ne peuvent pas l'atteindre avant le redémarrage.
Je ne veux pas qu'une redirection ICMP soit envoyée depuis ces routeurs.
J'ai testé echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
et sysctl -w net.ipv4.conf.all.send_redirects=0
et mettre net.ipv4.conf.all.send_redirects=0
dans /etc/sysctl.d/local.conf
Chacune de ces solutions met la bonne valeur dans /proc/sys/net/ipv4/conf/all/send_redirects
Mais…
le noyau continue d'envoyer des redirections ICMP. Même après un redémarrage :
$ 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
Et la table de routage des hôtes locaux (ordinateurs Windows) est polluée.
Je peux empêcher cela avec netfilter :iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP
Avez-vous une idée de la raison pour laquelle la méthode habituelle ne fonctionne pas ?
Et comment empêcher la redirection ICMP d'être envoyée, sans utiliser netfilter ?
Réponse acceptée :
La bonne commande est :echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
Parce que vous devez avoir 0 sur 'all' et sur 'interface_name' pour le désactiver.
Dans /etc/sysctl.conf
ou un fichier similaire, vous devez définir 'all' + 'default' (ou 'all' + 'interface' mais l'interface peut ne pas exister déjà lorsque ce fichier est traité).