Gre*_*SAT 15 linux networking ip
我有几个 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
Run Code Online (Sandbox Code Playgroud)
并且本地主机(Windows 计算机)的路由表被污染。
我可以用 netfilter 防止这种情况:
iptables -t mangle -A POSTROUTING -p icmp --icmp-type redirect -j DROP
知道为什么通常的方法不起作用吗?
以及如何在不使用 netfilter 的情况下防止发送 ICMP 重定向?
Ber*_*ITS 15
正确的命令是:echo 0 | tee /proc/sys/net/ipv4/conf/*/send_redirects
因为您必须在“all”和“interface_name”上设置 0 才能禁用它。
进入/etc/sysctl.conf
或类似文件,您必须设置'all' + 'default'(或'all' + 'interface',但在处理此文件时接口可能不存在)。