Mám několik Debian Squeeze (aktuální verze 6.0.6) používaných jako routery.
Když je link nefunkční, posílají přesměrování ICMP na místní hostitele. Toto je výchozí chování Debianu a několika dalších. Jakmile se tedy odkaz vrátí k životu, hostitelé se k němu nedostanou, dokud se nerestartuje.
Nechci, aby bylo z těchto směrovačů odesíláno žádné přesměrování ICMP.
Testoval jsem echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
a sysctl -w net.ipv4.conf.all.send_redirects=0
a zadáním net.ipv4.conf.all.send_redirects=0
do /etc/sysctl.d/local.conf
Každé z těchto řešení vkládá správnou hodnotu do /proc/sys/net/ipv4/conf/all/send_redirects
Ale…
jádro neustále posílá přesměrování ICMP. I po restartu :
$ 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
A směrovací tabulka místních hostitelů (počítačů Windows) je znečištěná.
Mohu tomu zabránit pomocí netfilter :iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP
Máte představu, proč obvyklá metoda nefunguje?
A jak zabránit odeslání přesměrování ICMP bez použití netfilteru?
Přijatá odpověď:
Správný příkaz je:echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
Protože pro deaktivaci musíte mít 0 na 'all' a 'interface_name'.
Do /etc/sysctl.conf
nebo podobný soubor, musíte nastavit ‚vše‘ + ‚výchozí‘ (nebo ‚vše‘ + ‚rozhraní‘, ale při zpracování tohoto souboru již rozhraní nemusí existovat).