双栈是什么
双栈指同一台主机、同一个服务同时具备 IPv4 与 IPv6 能力:DNS 里同时有 A 与 AAAA 记录,服务监听双栈套接字,客户端按 RFC 6724 的地址选择规则优先尝试 IPv6。风险在于 IPv6 还不完善时用户会卡在首连超时上,因此浏览器普遍实现了 Happy Eyeballs,用并行探测与短超时快速回退到 IPv4。
基本信息
| DNS 记录 | A 与 AAAA 需要同时存在,缺一方即放弃那部分用户 |
|---|---|
| 服务监听 | Linux 上监听 [::] 通常同时覆盖 IPv4 与 IPv6 |
| 地址选择 | RFC 6724 规定默认优先 IPv6 与同前缀地址 |
| 回退机制 | RFC 8305 Happy Eyeballs,并行发起并采用先成功者 |
| 常见坑 | 只有 AAAA 却无可用 IPv6 路径,首连延迟明显上升 |
| 迁移顺序 | 先保证 IPv6 端到端可达,再发布 AAAA 记录 |
检查清单
检查清单
dig +short AAAA example.com # 确认 AAAA 是否发布
dig +short A example.com # 确认 A 记录仍在
ss -lntp | grep -E '0.0.0.0|\[::\]' # 确认监听面覆盖两种协议
curl -6 -sS -o /dev/null -w '%{http_code}\n' https://example.com # 强制走 IPv6 验证
curl -4 -sS -o /dev/null -w '%{http_code}\n' https://example.com # 强制走 IPv4 对照典型使用场景
- 网站开启 IPv6 前先在测试环境验证 AAAA 可达性,避免上线后部分用户首连变慢
- 纯 IPv6 内网服务对公网发布时,用双栈反向代理转换协议,不给后端增加复杂度
- 排查“某些网络打不开网站”:可能是 AAAA 已发布但该网络 IPv6 出口存在黑洞
- 移动应用接入双栈后统计首包时延,用数据判断是否需要调整 AAAA 发布策略
- 容器与云环境核对安全组,IPv6 规则常常独立于 IPv4 单独配置,容易漏放行
只发布 AAAA 而 IPv6 路径不可用,比完全不支持 IPv6 更糟:用户要等首连超时后才回退到 IPv4,体验明显下降。不确定时先不发布 AAAA。
服务端只监听 0.0.0.0 时 IPv6 用户连不上;监听 [::] 在 Linux 默认开启双栈映射,可同时服务两类客户端,这是最省事的配置。
防火墙与安全组要分别核对:不少云平台的 IPv6 规则是独立列表,只放行了 IPv4 的 443,IPv6 侧仍然全封,表现为“v4 能开、v6 超时”。