Linux IPv4 上下文中“send_redirect”的定义

use*_*084 5 networking linux ipv4

我在脚本中遇到过这两行:

echo "1" > /proc/sys/net/ipv4/ip_forward/
echo "0" > /proc/sys/net/ipv4/conf/eth0/send_redirects
Run Code Online (Sandbox Code Playgroud)

第一行打开ip转发,这让我的机器像路由器一样。

我想确切地了解第二行的作用。它send_redirects在界面上关闭,eth0但这意味着什么?什么是send_redirect在这种情况下?

Kar*_*uru 4

'ip_forward' 用于启用 IPv4 数据包转发。

仅当节点充当路由器时才启用“发送重定向”。也就是说,主机不应发送 ICMP 重定向消息。路由器使用它来通知主机有关特定目的地可用的更好路由路径的信息。此后,主机更新路由缓存条目,并直接通过 ICMP 重定向消息建议的最佳路径/路由转发后续数据包。

然而,这种路由信息更新机制存在风险,并且是安全社区所关注的问题,因为 ICMP 重定向可能会被恶意软件/攻击者篡改/伪造,以重定向到其所需的路径。

请参阅 RFC 1122(第 3.3.1 节和附录 A)了解更多详细信息和条款,例如“如果重定向消息指定的新网关地址不在重定向消息所通过的同一连接(子)网络上,则应静默丢弃重定向消息”已到达,或者重定向源不是指定目的地的当前第一跳网关'