别再说 IPv6 只是“未来”了:我在生产环境踩过的那些坑

举报
Echo_Wish 发表于 2026/03/01 13:26:56 2026/03/01
【摘要】 别再说 IPv6 只是“未来”了:我在生产环境踩过的那些坑

别再说 IPv6 只是“未来”了:我在生产环境踩过的那些坑

大家好,我是 Echo_Wish。

这几年,IPv6 从“政策推动”变成了“现实压力”。云厂商默认给 IPv6,运营商天然支持 IPv6,手机网络优先走 IPv6,甚至有些新业务直接要求“必须支持 IPv6”。

但说句实话——

IPv6 真正在生产环境跑起来,绝对不是把 AAAA 记录加上那么简单。

今天我就结合实战,聊聊 IPv6 在生产环境部署的经验和那些坑,尤其是 dual-stack(双栈)和迁移策略这两个核心问题。


一、先说一个扎心的事实:不要幻想“一步到位纯 IPv6”

很多团队一开始就想:

既然 IPv6 是未来,那我们直接 All in IPv6。

别冲动。

现实情况是:

  • 你的上游依赖可能不支持 IPv6
  • 第三方 API 可能只有 IPv4
  • 内网某些老设备不支持 IPv6
  • 防火墙策略没跟上
  • 监控系统只认 IPv4

所以在生产环境,最稳的方式一定是 Dual-Stack(IPv4 + IPv6 共存)


二、Dual-Stack 不是“开关一按”这么简单

我们来看一个最基础的服务器配置。

1️⃣ Linux 开启 IPv6

先确认内核支持:

sysctl net.ipv6.conf.all.disable_ipv6

如果返回 1,说明被禁用了:

sysctl -w net.ipv6.conf.all.disable_ipv6=0

配置网卡 IPv6 地址(示例):

ip -6 addr add 2001:db8::10/64 dev eth0
ip -6 route add default via 2001:db8::1

你以为这就完了?

不。


三、第一个大坑:监听地址没改

很多服务默认只监听 IPv4。

比如 Nginx:

错误写法(只监听 IPv4)

server {
    listen 80;
    server_name example.com;
}

这在 IPv6 下是不够的。

正确写法(双栈)

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
}

如果你漏了 [::]:80,那么:

  • AAAA 记录解析正常
  • 客户端能连上服务器
  • 但端口没监听
  • 结果就是超时

线上排查的时候你会怀疑人生。


四、DNS 层的坑:AAAA 加了不等于万事大吉

添加 AAAA 记录:

example.com.    IN  AAAA  2001:db8::10

很多人做完这一步就直接上线。

但你要考虑:

  • 负载均衡是否支持 IPv6?
  • CDN 是否支持 IPv6 回源?
  • WAF 是否支持 IPv6?
  • 健康检查是否支持 IPv6?

我见过一个真实事故:

AAAA 记录加了,但后端服务只监听 IPv4,导致移动端 IPv6 网络全部访问失败。

IPv6 优先级在很多移动网络里是更高的。

你不支持,就等于你主动把用户拒之门外。


五、第二个大坑:防火墙规则没同步

IPv4 和 IPv6 的防火墙是两套规则。

很多人只写了:

iptables -A INPUT -p tcp --dport 80 -j ACCEPT

但 IPv6 走的是:

ip6tables

你如果没放行:

ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT

那 IPv6 访问直接被丢弃。

更现代的系统用 nftables

nft add rule ip6 filter input tcp dport 80 accept

记住一句话:

IPv6 是平行宇宙,不是 IPv4 的附属品。


六、数据库与中间件支持情况要提前摸清

比如 MySQL:

默认是支持 IPv6 的,但你要确认 bind-address

bind-address = ::

如果你写成:

bind-address = 0.0.0.0

那只会监听 IPv4。

再比如 Redis:

redis-server --bind :: 0.0.0.0

否则某些客户端可能解析到 IPv6 地址却连不上。


七、迁移策略:从“边缘”往“核心”推

我个人推荐的迁移顺序是:

  1. CDN / LB 支持 IPv6
  2. 外网入口支持 Dual-Stack
  3. 内部服务逐步支持 IPv6
  4. 监控与日志系统升级
  5. 最后才考虑 IPv6-only

不要反着来。

否则你会发现:

外部是 IPv6,内部全是 IPv4 NAT,链路复杂度直接翻倍。


八、一个真实的迁移架构示意

典型架构:

用户(IPv6优先)
        ↓
CDN(Dual-Stack)
        ↓
负载均衡(Dual-Stack)
        ↓
应用服务器(Dual-Stack)
        ↓
数据库(IPv4 或 Dual)

逐层推进。

不要一口气全改。


九、运维视角最容易忽略的两个点

1️⃣ 监控系统是否支持 IPv6

比如 Prometheus 抓取:

- targets:
  - '[2001:db8::10]:9100'

如果你忘了加方括号,解析会出错。

2️⃣ 日志分析是否支持 IPv6 格式

IPv6 日志比 IPv4 长很多。

有些正则写死了:

\d+\.\d+\.\d+\.\d+

那 IPv6 直接匹配不到。


十、我的观点:IPv6 部署是“体系能力”的体现

说点真心话。

IPv6 本质不是技术问题。

是体系成熟度问题。

你要具备:

  • 网络理解能力
  • 服务监听意识
  • 安全策略同步能力
  • 依赖管理能力
  • 监控可观测能力

很多团队 IPv6 推不动,不是因为难。

是因为:

架构本来就不清晰。

IPv6 只是把问题暴露得更彻底。


十一、什么时候可以考虑 IPv6-Only?

只有在这些条件满足时:

  • 所有上游依赖支持 IPv6
  • 所有监控系统支持 IPv6
  • 安全设备支持 IPv6
  • 已验证移动端全部可达

否则,别轻易上 IPv6-only。

Dual-Stack 是一个长期状态,不是过渡。


十二、总结一句话

IPv6 部署的核心不是“地址升级”。

而是:

让整个生产体系真正具备双协议运行能力。

别把它当任务。

把它当一次架构体检。

你会发现很多隐患。


我是 Echo_Wish。

写运维这么多年,我最大的感受是:

技术升级不可怕,
可怕的是体系没有准备好。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。