基础概念 · IPv4 与 IPv6 排查

IPv4 能用、IPv6 连不上:双栈网络排查

同一个网站,有的设备能打开,有的却长时间等待,可能是 IPv4 和 IPv6 两条路径表现不同。先把解析结果与连接结果分开,再确认失败发生在本机网络、代理入口还是远端出站。

全部概念工具使用教程引用资料

双栈访问涉及两类地址

A 记录通常给出 IPv4 地址,AAAA 记录给出 IPv6 地址。域名可以同时有两类记录,也可以只提供其中一种。拿到 AAAA 不等于本机已经具备可用的 IPv6 路由。

查询哪种记录,与向解析器发送查询时用哪种网络,不是一回事。通过 IPv4 连接 DNS 服务器,也能查询 AAAA;通过 IPv6 查询,也能得到 A 记录。

代理又多了一层:curl 连到本机 127.0.0.1 是 IPv4,但客户端或远端节点向目标建立连接时,仍可能选 IPv6。不要用入口地址代替整条路径的判断。

同一个域名可返回 A 和 AAAA 记录。IPv4 与 IPv6 分别测试连接,得到某类记录不表示对应网络路径可用。
A、AAAA 是两类解析结果,IPv4、IPv6 是分别需要验证的连接路径。

先对照 A 和 AAAA 查询

示例代码
doggo example.com A --timeout 5
doggo example.com AAAA --timeout 5

这两条命令使用 doggo 的当前解析器设置。记录答案、状态和查询条件;如果一类记录为空,先区分域名没有该记录、解析失败,以及客户端 DNS 策略过滤。详细查询方法可看 doggo 教程。

Fake-IP 模式可能返回客户端分配的合成地址,而不是目标真实地址。需要对照真实解析时,明确查询用了哪个解析器及传输协议,别把两种答案混在一起判断。

固定目标,分别尝试 IPv4 和 IPv6

示例代码
curl -4 --noproxy "*" --verbose --head --connect-timeout 5 --max-time 20 https://example.com
curl -6 --noproxy "*" --verbose --head --connect-timeout 5 --max-time 20 https://example.com

Windows 中使用 curl.exe。--noproxy "*" 关闭 curl 的显式代理;如果 TUN 仍在接管路由,测试依然可能经过客户端,需结合连接记录解释。

两次请求保持域名和方法一致。IPv6 失败时记下最后一个成功阶段:没有可用地址、没有路由、连接超时,还是 TLS 或网站返回错误。它们需要的修复并不相同。

经过 HTTP 代理或 socks5h 入口时,目标解析和连接可能由代理端负责。此时 -4、-6 不能保证远端最终用相应地址族访问网站;需要看代理端支持的设置及日志。

浏览器能打开,不代表两条路径都正常

支持 Happy Eyeballs 的应用会安排不同地址族的连接尝试,减少其中一条路径不通时的等待。自动访问成功,而强制 IPv6 的测试失败,并不矛盾:应用可能最终用了 IPv4。

不同应用、版本和连接复用状态会影响尝试方式。一个浏览器自动回退成功,也不能证明下载工具或后台服务一定会同样回退。排查时记录实际连接地址,比只看网页有没有打开更有用。

核对客户端里四个不同的位置

核对客户端里四个不同的位置
设置所在位置需要确认的问题
DNS是否返回 AAAA,是否使用 Fake-IP,是否有过滤策略
系统或 TUN 路由IPv6 流量是否在接管范围,是否存在排除路由
分流规则IPv4 与 IPv6 地址是否匹配了不同规则或出站
节点及目标连接当前出站是否支持并选择了 IPv6 路径

例如,关闭某个 DNS 的 IPv6 选项可能只改变 AAAA 答案,不会自动禁止所有已经拿到 IPv6 地址的程序发包。反过来,允许 AAAA 也不会替系统修好 IPv6 默认路由。

按失败阶段修复,每次只改一项

  • 没有 AAAA:先确认域名本身是否提供该记录,再看解析器与客户端策略。
  • 有地址但无可用路由:检查系统网络、路由器和接管范围,先保留现有配置备份。
  • 连接建立后才失败:继续检查 TLS、HTTP 和具体出站,不要把所有问题都归给地址族。
  • 只有某个应用异常:确认它是否使用独立代理、缓存连接或不同的解析方式。

临时强制 IPv4 可以帮助缩小问题范围。若要长期改动,写下改动前后的相同目标结果,并考虑哪些应用确实需要 IPv6;不要靠反复开关全局选项掩盖尚未定位的故障。

常见问题

关闭 IPv6 能提高所有网站速度吗?

不能这样概括。只有当前 IPv6 路径存在问题、应用又不能妥善回退时,关闭或调整它才可能改善某些访问。应先用固定目标做对照。

DNS 能查到 AAAA,为什么 curl -6 还失败?

DNS 返回地址只是第一步。系统需要可用的 IPv6 网络和路由,之后还要完成连接、TLS 与网站请求。根据实际失败阶段继续排查。

参考资料

原理和协议定义可查以下标准与官方文档。文中的流程图由 AFQKit 绘制。

DNS 与加密 DNS →DNS 与加密 DNS:解析、缓存和排查系统代理与TUN →系统代理与 TUN 的区别:选择、验证与恢复curl 代理测试 →curl 代理测试:从本机端口到网站响应

返回基础概念 · 按症状排查问题