网络栈调优98 条

IPv6 关闭的完整做法

关闭 IPv6 需同时设置 all 与 default, 否则新接口仍可能启用; 关闭前评估依赖 v6 的服务。

关闭 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 地址。

易错点

  • 只关 all 不关 default,新建接口行为不一致,问题在重启或新增网卡后才出现
  • 关闭前未确认业务是否依赖 v6,导致部分连接方式失效
  • 未做回归验证,监听与解析行为已改变却无人知晓
  • 忘记写入配置文件,重启后 v6 又恢复开启并与文档不符

数据来源与参考

  • Linux Documentation/networking/ip-sysctl.txt
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌