明明本地有 IPv6,检测网站却显示没有?这锅得 DNS 和代理背
很多朋友在折腾家庭网络或者服务器时,经常会遇到一种让人百思不得其解的现象:明明在终端里敲个 curl -6,甚至能跑满千兆带宽,可一旦打开 test-ipv6.com 这类网页检测工具,它却一脸严肃地告诉你:“您的网络不支持 IPv6”
这就好比你明明有一辆法拉利停在车库里(本地 IPv6 正常),但导航软件(Web 检测工具)非说你家门前没路。这是怎么回事?今天咱们就来扒一扒这背后的“坑”,顺便聊聊怎么正确验证你的 IPv6 到底通不通。
一、 为什么终端能通,网页却不行?
这其实是“命令行环境”与“浏览器环境”的差异造成的,主要罪魁祸首通常有以下三个:
1. DNS 解析的“双标”行为
- 终端(Curl): 当你执行
curl -6 https://example.com时,你强制使用了-6参数,这告诉操作系统:“别管 A 记录(IPv4),给我查 AAAA 记录(IPv6)”。系统老老实实去问 DNS 服务器,拿到了 IPv6 地址,连接建立成功。 - 浏览器: 浏览器默认是“快乐双修”模式。它会同时请求 IPv4 (A) 和 IPv6 (AAAA) 记录,并采用 RFC 6721 规定的“快乐的眼球”算法——谁先响应就用谁。如果你的 IPv6 路由稍微抖动一下,或者 DNS 服务器返回 IPv6 记录很慢,浏览器可能早就通过 IPv4 跑完握手流程了。在检测网站看来,你是通过 IPv4 进来的,自然判定你没有 IPv6。
2. 代理/VPN 的“截胡”
这是很多技术爱好者最容易忽略的点。如果你在浏览器里挂着 Clash、V2Ray 或者系统级代理,流量流向很可能是这样的:
浏览器 -> 代理软件 -> 代理节点(可能是 IPv4 出口) -> 目标网站
检测网站看到的 IP 是你代理节点的 IP,而不是你本地的出口 IP。即便你的代理软件勾选了“IPv6 优先”,但前提是你的代理节点本身必须具备原生 IPv6 出口,否则依然是“无效”。而你的终端 curl 如果没有走代理配置,展示的就是真实的原生 IPv6,两边结果自然不同。
3. 隐私保护与浏览器特性 现在的新版 Chrome 或 Edge,为了防追踪,可能会开启“安全 DNS”或者使用 QUIC 协议(基于 UDP)。在某些特定的网络环境下,这会导致 IPv6 的握手过程被阻断,回退到 IPv4,从而被检测工具误判。
二、 如何准确验证 IPv6?(避坑指南)
既然网页检测容易受环境影响,我们不妨换几套组合拳来验证:
方案 A:最纯真的终端测试(推荐) 抛弃浏览器,直接用命令行,这是最硬核、最不容易作弊的方法。
打开你的终端(CMD、PowerShell 或 Terminal):
curl -6 https://ipv6.google.com
- 如果返回了一堆 HTML 代码(包含 302 跳转),说明 IPv6 通道完全通畅。
- 如果提示
Could not resolve host,说明 DNS 的 AAAA 记录解析有问题。 - 如果提示
Connection timed out,说明 TCP 连接不通,可能是防火墙拦住了,或者 ISP(运营商)没给你路由。
想知道公网看到的你的 IPv6 地址是什么?试试这个:
curl -6 https://ifconfig.me
或者使用 ip.sb(这个站对 IPv6 支持很友好):
curl -6 https://ip.sb
如果你能通过 -6 拿到一个公网 IPv6 地址,那就百分之百没问题了,网页怎么显示随它去。
浏览器端检测显示不支持 IPv6,与终端结果形成对比
方案 B:排查浏览器设置 如果你非要用网页测,请先做个“斋戒”:
- 关掉所有代理插件/软件。
- 开启浏览器的无痕模式(这会禁用大部分可能干扰网络的扩展)。
- 访问
test-ipv6.com。
如果在无痕模式下显示“完美”,那就可以确定是你之前的代理软件或扩展在捣乱。
方案 C:检查本地 DNS 有时候运营商的 DNS 服务器很拉跨,根本不理睬 IPv6 的查询请求。
- Windows/Mac: 可以尝试将 DNS 修改为公共 DNS,比如 Google 的
2001:4860:4860::8888或者 Cloudflare 的2606:4700:4700::1111。注意,要在 IPv6 设置里填这些地址,前提是你的路由器已经能通过 IPv4 访问到它们,或者你的路由器本身支持 IPv6 转发。
三、 检测工具推荐
除了老牌的 test-ipv6.com,如果你发现那个不准,可以试试这几个作为备用:
- ip.sb: 界面简单粗暴,不仅显示 IP,还能看到延迟的 AS 信息,非常直观。
- speedtest.net: 很多人都用它测速,但别忘了它也能看出你是否用了 IPv6。如果你开始测速时,服务器列表里没有
[IPv6]标记,说明你的网络路由还没完全走通 IPv6。 - iperf3: 既然是“技术”讨论,不妨直接用工具测带宽。找一个提供 IPv6 公网 iperf3 的服务器,直接看吞吐量,这才是验证王道。
总结
遇到“本地有 IPv6,网页没 IPv6”,不用慌。命令行(curl)说你有,那你就是真有。这通常是浏览器为了优先保证网页加载速度而选择了 IPv4,或者是中间的代理节点“接管”了流量。
只要你的 curl -6 能跑通,你的 BT 下载、PT 挂种、或者直连 IPv6 资源,理论上都能享受更低的延迟和更好的 NAT 穿透能力。至于那个显示你“不支持”的网页,就当它在骗你点击量吧。
评论已关闭