必须禁用send_redirects,因其会使业务服务器误发ICMP重定向报文,导致路由劫持、中间人攻击或被用作反射跳板;永久关闭需在/etc/sysctl.d/99-secure.conf中配置all、default及各接口(如eth0、lo)的send_redirects=0,并同步设置accept_redirects=0、rp_filter=1、accept_source_route=0。

直接在系统底层永久关闭 /proc/sys/net/ipv4/conf/all/send_redirects,是为了防止 Linux 主机(尤其是误配为网关的服务器)主动向客户端发送 ICMP 重定向报文,避免被用于路由劫持、中间人攻击或作为跳板污染其他设备路由表。
为什么必须禁用 send_redirects
ICMP 重定向本意是辅助主机优化路径,但业务服务器从不承担路由器职责。一旦开启,攻击者可伪造网关身份诱导客户端修改本地路由,把流量引向恶意节点;更危险的是,本机若开启 IP 转发且未禁用该参数,就可能被利用为反射式攻击跳板。设为 0 是明确声明:本机绝不参与任何路由引导行为。
永久关闭的正确写法
不能只改全局 all,还要覆盖 default 和关键接口,否则新创建的网卡或容器网络可能继承默认值 1:
- 编辑
/etc/sysctl.d/99-secure.conf(推荐优先于/etc/sysctl.conf,避免主配置文件混乱) - 写入以下四行:
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
把 eth0 替换为你实际的对外接口名(如 ens3、enp0s3),lo 必须显式设置,防止回环面绕过限制。
在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...
加载并验证是否生效
执行命令让配置立即生效,并确认所有层级均为 0:
-
sudo sysctl --system(比sysctl -p更可靠,会按序加载/etc/sysctl.d/*.conf和/etc/sysctl.conf) - 逐项检查:
sysctl net.ipv4.conf.all.send_redirectssysctl net.ipv4.conf.default.send_redirectssysctl net.ipv4.conf.eth0.send_redirects - 输出都应为
= 0;若某项仍为 1,说明对应接口名错误或配置未加载成功
配套加固不可省略
单关 send_redirects 不够,需同步封堵其他路由欺骗入口:
- 禁收重定向:
net.ipv4.conf.all.accept_redirects = 0和net.ipv4.conf.default.accept_redirects = 0 - 启用反向路径过滤:
net.ipv4.conf.all.rp_filter = 1(宽松模式,兼容多数拓扑) - 关闭源路由:
net.ipv4.conf.all.accept_source_route = 0
这些参数共同作用,让伪造 IP 或篡改路径的报文在进入协议栈前就被丢弃,不依赖防火墙规则,零日志开销,防御更底层。


















