IPv6 参数为什么要收
很多主机自称不用 IPv6,但接口上仍默认开启并接受路由通告与重定向。攻击者在内网注入伪造 RA 就能把自己变成默认网关实现中间人,IPv4 下同类攻击门槛更高。收敛参数比直接禁用协议更安全,代价也小。
基本信息
| 适用平台 | Linux(sysctl 参数) |
|---|---|
| 目标参数 | accept_ra、accept_redirects、accept_source_route(IPv6) |
| 基线值 | 静态寻址或不用 IPv6 的主机全部设 0 |
| 例外情况 | 依赖 SLAAC 自动获取地址的网络必须保留 accept_ra |
典型使用场景
- 服务器固定 IP:地址写死在配置里,不需要接受任何路由通告
- 内网安全加固:阻断伪造 RA 造成的中间人劫持
- 虚拟化与云主机:邻居网络不可控,收敛参数属于基础动作
- 合规自查:CIS 与等保都把 IPv6 相关项单列,是测评时的常见扣分点
- 双栈割接后的复核:割接窗口里常见的残留广播与重定向,需要逐项确认
核查与加固
核查与加固
# 先看现状,确认本机是否依赖 SLAAC 获取地址
sysctl net.ipv6.conf.all.accept_ra net.ipv6.conf.all.accept_redirects
ip -6 addr show scope global | head
# 写入独立配置文件,重启后自动生效
tee /etc/sysctl.d/99-ipv6-hardening.conf <<'EOF'
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
EOF
sysctl --system参数逐项读法
| 参数 | 作用 | 设置建议 |
|---|---|---|
| accept_ra | 是否接受路由通告并据此配置地址与默认路由 | 静态寻址设 0;依赖 SLAAC 的机器必须保留 1 或 2 |
| accept_redirects | 是否接受 ICMPv6 重定向改写路由 | 一律设 0,它是改你网关最省力的手段 |
| accept_source_route | 是否接受源路由选项 | 设 0,源路由本身即异常行为 |
| disable_ipv6 | 是否整体关闭协议栈 | 非必要不整体关闭,避免绑定 ::1 的服务启动失败 |
依赖 SLAAC 的网络里把 accept_ra 设为 0,主机会同时失去 IPv6 地址与默认路由,表现为 IPv6 突然不通。变更前在测试机验证,并确认带外通道可用。
RA 与 DHCPv6 语义不同:关闭 RA 不等于禁用 DHCPv6。按实际寻址方式逐项决定,别把「关 IPv6」当万能动作。
接口级参数优先级高于 all 与 default:排查时用 ip -6 route show default 与 sysctl net.ipv6.conf.eth0.accept_ra 一起看,只看全局值容易得出错误结论。
网卡重命名或新增 bond 后,接口级设置需要重新核对:容器网络与 bonding 场景里,新建接口常带着默认的宽松参数回来。