Linux envoie toujours une redirection ICMP

14

J'ai plusieurs Debian Squeeze (6.0.6 à jour) utilisés comme routeurs.
Lorsqu'un lien est arrêté, ils envoient des redirections ICMP vers des hôtes locaux. Il s'agit du comportement par défaut de Debian et de plusieurs autres. Ainsi, une fois le lien rétabli, les hôtes ne peuvent pas l'atteindre avant le redémarrage.

Je ne veux pas qu'une redirection ICMP soit envoyée à partir de ces routeurs.

J'ai testé echo 0 > /proc/sys/net/ipv4/conf/all/send_redirectset sysctl -w net.ipv4.conf.all.send_redirects=0et mis net.ipv4.conf.all.send_redirects=0dans /etc/sysctl.d/local.conf
chacune de ces solutions mettre 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

Une idée de pourquoi la méthode habituelle ne fonctionne pas?
Et comment empêcher l'envoi d'une redirection ICMP, sans utiliser netfilter?

Gregory MOUSSAT
la source

Réponses:

14

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.confou dans un fichier similaire, vous devez définir 'all' + 'default' (ou 'all' + 'interface' mais l'interface peut ne pas déjà exister lorsque ce fichier est traité).

Bertrand SCHITS
la source
5
Quel est l'intérêt du répertoire "all" alors? J'ai eu la vague impression, cela écraserait les valeurs de toutes les autres entrées?
Elrond
@Elrond, allne remplace pas, il effectue des opérations au niveau du bit. Voir cette réponse au sujet allcontredefault . send_redirectsest un ORparamètre, donc le réglage all.send_redirectsà 0 sera remplacé par le réglage de l'interface.
Leif Arne Storset