ICMP 重定向是什么
当网关发现某台主机把报文发给了「不是最优」的下一跳时,会回一条 ICMP 重定向(类型 5),告诉主机改走更合适的网关。主机收到后通常会把这条更好的路径记进路由缓存,后续流量自动改道。这在网络设计里属于优化手段,但同一条报文也能被伪造:攻击者可以冒充网关,把主机流量引到自己这里,因此服务器与路由器上一般建议关闭接受重定向。
基本信息
| 类型号 | ICMP 类型 5 |
|---|---|
| 携带内容 | 应改用的网关地址与触发该报文的原始信息 |
| 主机行为 | 更新路由缓存并改走新网关 |
| 安全风险 | 可被伪造,用于中间人劫持 |
| 建议设置 | 服务器关闭接受,网关角色按需保留 |
| 相关参数 | 接受重定向与发送重定向两个开关 |
查看与加固
查看与加固
sysctl net.ipv4.conf.all.accept_redirects # 服务器建议为 0
sysctl net.ipv4.conf.all.send_redirects # 非网关角色建议为 0
tcpdump -nn 'icmp[0] == 5' -c 5 # 观察是否频繁收到重定向
sysctl -w net.ipv4.conf.all.accept_redirects=0 && sysctl -w net.ipv4.conf.all.send_redirects=0接收与发送开关
| 开关 | 作用 | 建议 |
|---|---|---|
| 接受重定向 | 是否采纳他人给出的更优路径 | 服务器与终端建议关闭 |
| 发送重定向 | 是否向同网段主机纠正路径 | 只有承担网关角色的设备才需要 |
| 按接口配置 | 可针对特定接口单独设置 | 多网卡主机需逐接口确认 |
典型使用场景
- 主机加固基线:关闭接受重定向,防止路由表被外部报文改写
- 内网异常排查:大量重定向往往说明存在双网关或路由设计问题
- 安全事件分析:确认是否有人尝试用伪造报文引导流量
- 多网卡服务器配置:逐接口核对相关开关是否都被设置
- 网络改造验证:调整网关后确认主机路径收敛正常
这条报文既是网络优化手段也是攻击面:在受控实验里,伪造一条重定向就能改变主机的转发路径。因此服务器与终端应当关闭接受重定向,同时关闭发送重定向——除非这台设备本身就是网关,且清楚其副作用。内网频繁出现重定向,通常意味着网络设计存在旁路或环路问题。