У меня есть несколько Debian Squeeze (до версии 6.0.6), используемых в качестве маршрутизаторов.
Когда связь не работает, они отправляют перенаправления ICMP локальным хостам. Это стандартное поведение Debian и некоторых других. Поэтому, как только ссылка возвращается к жизни, хосты не могут достичь ее до перезагрузки.
Я не хочу, чтобы с этих маршрутизаторов отправлялось перенаправление ICMP.
Я проверил echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
и sysctl -w net.ipv4.conf.all.send_redirects=0
и вкладываю net.ipv4.conf.all.send_redirects=0
в /etc/sysctl.d/local.conf
каждое из этих решений правильное значение/proc/sys/net/ipv4/conf/all/send_redirects
Но ...
ядро продолжает посылать перенаправления ICMP. Даже после перезагрузки:
$ 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
А таблицы маршрутизации локальных хостов (компьютеров Windows) загрязнены.
Я могу предотвратить это с помощью netfilter:
iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP
Есть идеи о том, почему обычный метод не работает?
И как предотвратить перенаправление ICMP, не используя netfilter?