关闭 IPv6 的完整做法
关闭 IPv6 需要同时设置 all 与 default 两个节点:all 作用于已经存在的接口,default 决定之后新建接口的默认行为。只改其中一个,新接口仍可能启用 IPv6,导致系统行为前后不一致。关闭之前还应评估是否有关键服务依赖 v6 协议栈。
基本信息
| 关键参数 | net.ipv6.conf.all.disable_ipv6 与 net.ipv6.conf.default.disable_ipv6 |
|---|---|
| 生效后验证 | ip -6 addr show 确认没有全局地址 |
| 监听验证 | ss -6 -lnt 查看是否仍有 v6 监听 |
| 持久化位置 | /etc/sysctl.d/ 下的配置文件 |
| 补充说明 | 部分发行版还需处理内核模块加载参数才能彻底禁用 |
典型使用场景
- 安全合规要求关闭未使用的协议栈
- 排查地址冲突或路由异常时排除 v6 干扰
- 精简镜像或设备出厂时的默认配置
- 统一多台机器的网络行为,避免双栈差异
- 排查容器网络异常时确认 v6 栈状态
关闭与验证
关闭与验证
sysctl -w net.ipv6.conf.all.disable_ipv6=1 # 影响已有接口
sysctl -w net.ipv6.conf.default.disable_ipv6=1 # 影响之后新建的接口
ip -6 addr show # 确认没有残留地址
ss -6 -lnt 2>/dev/null | head # 确认没有 v6 监听
ip link show | grep -c 'inet6' # 复核接口上的 v6 地址数量两个参数的分工
| 参数 | 作用对象 | 只设其一的后果 |
|---|---|---|
| all.disable_ipv6 | 当前已存在的接口 | 新建接口仍可能启用 v6 |
| default.disable_ipv6 | 之后新建的接口 | 已有接口仍保留 v6 地址 |
| 两者同时设置 | 全部接口 | 行为一致,符合预期 |
使用注意
- 关闭前确认没有服务依赖 v6 地址或双栈回退逻辑
- 变更后回归验证监听、解析与容器网络行为
- 重启后需确认参数仍生效,必要时写入配置文件
- 在容器宿主上评估对容器网络与 CNI 插件的影响
- 确认监控探针与健康检查没有使用 v6 地址访问服务
容器、隧道与部分中间件默认假定 v6 栈存在,关闭后可能出现监听方式变化或连接回退异常,变更必须安排回归验证而不是改完就结束。
在远程主机的管理通道依赖 v6 地址时关闭该协议栈会立即失去连接,操作前务必确认当前会话使用的是 IPv4 地址。