域名怎么支持 IPv6:AAAA 记录只是第一步
这是被问得最多的一个问题,也是最容易只做一半的一个。
域名支持 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”。只做了第一步就宣布,是最常见的误判。