这是被问得最多的一个问题,也是最容易只做一半的一个。

域名支持 IPv6,需要两件事同时成立:DNS 里有 AAAA 记录,地址后面有服务在听。缺任何一边,用户都打不开。

第一件事:加 AAAA 记录

AAAA 记录的作用和 A 记录一样,只是指向 IPv6 地址。在域名解析后台添加,主机记录通常填 @ 或 www,记录值填服务器的 IPv6 地址。

有两个细节容易出问题。

一是只在其中一个 DNS 服务商配了。如果域名同时用了多家解析,权威服务器没有同步,部分用户会解析失败。

二是记录指向了一个不存在的地址。这比完全不配更糟,部分用户会直接卡在连接阶段,而且排查起来非常费劲。

第二件事:源站要有 IPv6 出口

服务器得有一个公网 IPv6 地址,机房得真的开通了 IPv6,不是内网分了一个地址就算。

云服务器还要确认安全组放行了 IPv6。IPv4 和 IPv6 是两套规则,很多人只配了前者,结果 IPv4 一切正常,IPv6 全部超时。

服务还要监听 IPv6

这一步最隐蔽。Nginx 只写 listen 443 时,它只监听 IPv4,IPv6 请求根本进不来。要加上 listen [::]:443,或者在配置里同时写两行。

Apache、Tomcat 也有类似的配置项。改完记得重载服务,不是重启就自动生效。

用了 CDN 的情况

CDN 开启 IPv6 加速后,用户到 CDN 这一段走 IPv6,但 CDN 回源可能还是 IPv4。这不算错,但要清楚它意味着什么:源站不需要 IPv6,IPv6 用户也能访问。

反过来说,如果你的目标是“源站也支持 IPv6”,那就不能只开 CDN 的开关。

怎么确认真的支持了

只查 AAAA 记录不够,那只证明解析配了。

用 IPv6 网站测速 从多个节点发起真实请求,能建连、能握手、能拿到状态码,才算真的通了。全部节点失败说明链路没准备好,部分节点失败多半是地区 IPv6 覆盖问题。

两步都过,再对外说“我们支持 IPv6”。只做了第一步就宣布,是最常见的误判。