ICMP 重定向:如何使用 icmpush 进行测试

ICMP 重定向:如何使用 icmpush 进行测试

我想查看在收到 ICMP 重定向时 Linux 系统上的路由表如何变化。为此,我使用

icmpush -v red -sp current-gateway -gw new-gateway -dest google.com -c host -prot tcp my-eth1-ip-address

(返回成功),但结果

route -n 

保持不变。当然,我已经检查了

cat /proc/sys/net/ipv4/conf/eth1/accept_redirects

即1.这是一台Ubuntu 12机器,具有最新的稳定版本内核,没有安装防火墙。

那么问题是:可能出了什么问题?

答案1

根据文档/网络/ip-sysctl.txt,默认情况下,仅接受路由表中已列出的网关的重定向。

secure_redirects - 布尔值
    仅接受网关的 ICMP 重定向消息,
    列在默认网关列表中。
    如果至少有一个
    conf/{all,interface}/secure_redirects 设置为 TRUE,
    否则将被禁用
    默认 TRUE

答案2

假设: 的调用icmpush不使用外部接口eth1,而是使用本地主机接口lo,因此内核无法识别它是来自网关的正确重定向。此外,在非常老版本的 Linux 内核中,这些路由未显示在 的响应中route -n。正如我所指出的, 的响应route -nC可能是包含临时重定向路由的正确方法。

@grawity,关于接受回复另一个数据包而发送的重定向:你在某处读过这个吗?因为我对此真的很感兴趣。

相关内容