加了 AAAA 后部分人打不开网站,先测 IPv6 的 HTTPS
文章目录
网站只有 IPv4 时正常,新增 AAAA 后却有用户间歇打不开。先检查 IPv6 的完整 HTTPS 路径。DNS 只告诉客户端可能连接哪个地址,不负责证明这个地址上的服务已经准备好。
用同一个 URL 对比协议族
dig site.example A
dig site.example AAAA
curl -4 -sS -o /dev/null --max-time 15 \
-w 'status=%{http_code} ip=%{remote_ip} total=%{time_total}\n' \
https://site.example/
curl -6 -sS -o /dev/null --max-time 15 \
-w 'status=%{http_code} ip=%{remote_ip} total=%{time_total}\n' \
https://site.example/
域名需要替换。客户端自身必须具备 IPv6 连通性,curl -6 失败也可能是当前网络没有可用 IPv6;先别把结果全归给服务器。记录错误信息与退出状态,不把 status=000 当作 HTTP 状态码。
A 与 AAAA 都存在,只是拥有两类记录。浏览器可能采用不同的连接选择策略,一台电脑能回退到 IPv4,另一台设备仍可能体验到超时,所以一次浏览器成功不足以排除问题。
保留域名与证书检查指定地址
已有一个实际 IPv6 地址时,可以测试它:
curl --resolve 'site.example:443:[2001:db8::10]' \
-sS -o /dev/null --max-time 15 \
-w '%{http_code} %{remote_ip}\n' \
https://site.example/
2001:db8::10 是文档示例地址,必须替换。这样保留请求域名与 TLS 身份检查,避免直接访问裸 IP 时碰到默认虚拟主机。不要加 -k 忽略证书错误,否则测试会漏掉真实用户需要的条件。
如果指定地址连接超时,检查 IPv6 路由、防火墙、服务监听与提供商安全规则。服务器上可用 ss -lntp 查看 443 监听,再与实际反向代理配置核对。看到 [::]:443 也不代表外部防火墙允许访问。
CDN 与源站是两条路径
开启 DNS 代理时,AAAA 可能指向 CDN。用户到 CDN 的 IPv6 正常,不等于 CDN 到源站也使用 IPv6;公开记录也未必应填写源站 IPv6。按当前服务商配置确认,别同时切换代理、证书与地址却无法分辨哪个变化解决问题。
如果 IPv6 服务尚未准备好,保留原配置作为恢复依据,先决定是否暂时撤回新增 AAAA,再修复监听或网络。更改记录以后还存在缓存期,不能把控制台保存成功当作全部客户端已经恢复。
分别记录 IPv4、IPv6、指定地址和公开域名的结果,验证目标包括状态码、证书与业务页面。记录类型含义见 DNS 记录说明,协议族和 resolve 参数见 curl 手册。