我有几个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
知道为什么通常的方法不起作用吗?
以及如何防止不使用netfilter来发送ICMP重定向?