机场知识 知识解读
IPv6 与代理:为什么开了代理仍走直连,IPv6 绕过代理的原因与处理
开了代理,IP 检测却显示本地 IPv6 地址,或 AI 服务仍提示地区不可用,常见原因是 IPv6 流量绕过了代理。本文解释 IPv6 绕行的原理、典型现象、排查方法与两种处理思路。
- 作者
- 网络研究组
- 首次发布
- 最后更新
- 内容类型
- 知识解读
- 阅读时间
- 约 3 分钟
直接答案
开了代理仍走直连,很多时候是 IPv6 在绕行:网络同时支持 IPv4 和 IPv6,系统和浏览器会优先尝试 IPv6,而代理客户端只接管了 IPv4,或者某些程序根本不经过系统代理,于是 IPv6 流量直接从本地网络发出。结果是 IP 检测显示本地运营商的 IPv6 地址,AI 服务看到的仍是真实地区。处理思路有两种:让客户端完整接管 IPv6,或在客户端中关闭 IPv6、只走 IPv4。
- 定义 IPv6 绕行
- 在同时支持 IPv4 与 IPv6 的网络中,代理客户端只处理了 IPv4 流量,部分程序通过 IPv6 直接连接目标网站,从而绕过代理的现象,也常被称为 IPv6 泄漏。
Key Takeaways · 要点速览
- 双栈网络中,系统通常优先使用 IPv6,客户端未接管时就会绕过代理。
- TUN 模式未接管 IPv6 路由时,IPv6 流量会直接走物理网卡。
- IP 检测同时显示代理的 IPv4 与本地的 IPv6,是最典型的 IPv6 绕行现象。
- 最稳妥的做法通常是在客户端中关闭 IPv6,节点支持 IPv6 时再考虑完整接管。
- 改动后需清除 DNS 缓存并重新检测 IPv4、IPv6 与 DNS 出口。
为什么开了代理还会走直连
如果你的宽带或手机网络已经分配了 IPv6 地址,设备就处在「双栈」环境中:同一个网站可能同时有 IPv4 地址和 IPv6 地址。操作系统和浏览器通常会优先尝试 IPv6,IPv6 连接失败或明显更慢时才回退到 IPv4。
问题出在代理客户端这一侧。如果客户端只接管了 IPv4,或者某些程序根本不走系统代理,那么这些程序拿到目标网站的 IPv6 地址后,会直接通过本地网络连接过去。从目标网站的角度看,你在用本地运营商的 IPv6 地址访问,代理形同虚设。
典型现象
| 现象 | 可能原因 |
|---|---|
| IP 检测显示两个地址:IPv4 是节点地区,IPv6 是本地运营商 | IPv6 流量未经过代理 |
| 节点选的是支持地区,AI 服务仍提示地区不可用 | 服务通过 IPv6 识别到了真实地区 |
| 部分网站时好时坏,或同一网站有时走代理有时不走 | 程序在 IPv4 与 IPv6 之间切换 |
| DNS 泄漏检测中出现本地运营商的 DNS | 系统通过 IPv6 获得的 DNS 未被接管 |
AI 服务地区提示的完整排查,可参考 Claude 地区不可用怎么办。能否使用始终以官方支持地区列表为准,请遵守服务条款与当地法律法规。
IPv6 绕行的几种路径
系统代理模式
遵循系统代理的浏览器会把域名直接交给代理客户端,由客户端或节点完成解析和连接,这部分通常不受 IPv6 影响。但不遵循系统代理的程序会自己解析、自己连接,如果拿到 IPv6 地址就会直连。浏览器的 WebRTC 也可能通过本地网络探测地址,暴露真实 IP。
TUN 模式
TUN 模式在网络层接管流量,覆盖面更广。但如果 TUN 只添加了 IPv4 路由,IPv6 流量仍然走物理网卡出去。配置时需要确认客户端的 TUN 设置中是否包含 IPv6,具体选项见 Clash Verge Rev TUN 模式设置,其它客户端以说明为准。
DNS 层面
客户端的 DNS 如果允许返回 IPv6 地址(AAAA 记录),而后续连接没有被接管,程序就会直连这个 IPv6 地址。此外,系统可能通过 IPv6 获得了运营商下发的 DNS 服务器,这部分解析请求也会绕开客户端,详见 DNS 泄漏是什么。
两种处理思路
| 思路 | 做法 | 适合谁 |
|---|---|---|
| 关闭 IPv6(推荐优先尝试) | 在客户端中关闭 IPv6,让 DNS 不返回 IPv6 地址,所有连接走 IPv4 | 大多数用户,节点不支持或不确定是否支持 IPv6 |
| 完整接管 IPv6 | 开启客户端的 IPv6 支持,TUN 同时接管 IPv6 路由,并确认节点具备 IPv6 出口 | 需要访问仅 IPv6 服务,且节点明确支持 IPv6 |
提示先在客户端中关闭 IPv6 做对照测试。如果问题随之消失,说明就是 IPv6 绕行导致的。如果客户端设置不起作用,可以临时在系统网络设置或路由器中关闭 IPv6 再对照,但这会影响整个网络,确认原因后应恢复或改用客户端层面的处理。
排查步骤
- 检测出口:开启代理后用 IP 查询工具查看是否同时显示 IPv4 和 IPv6 地址,记录两者的归属地。
- 关闭客户端 IPv6:在客户端设置和 DNS 设置中关闭 IPv6,重启代理核心。
- 清除缓存:清除系统与浏览器的 DNS 缓存,关闭并重新打开浏览器。
- 重新检测:确认 IPv6 不再显示本地地址,DNS 出口也不再是本地运营商。
- 验证目标服务:在无痕窗口中访问目标服务,确认地区判断恢复正常。
注意不同客户端、不同版本的 IPv6 相关选项名称和位置可能不同,修改前建议备份配置。具体选项以客户端设置中显示的为准。
更多 DNS 层面的排查方法,可参考 DNS 错误与 DNS 污染排查指南。
结论
开了代理仍走直连,IPv6 是最常被忽略的原因:系统优先使用 IPv6,而客户端只接管了 IPv4。用 IP 检测确认是否存在本地 IPv6 出口,再在客户端中关闭 IPv6 或完整接管 IPv6,并同步处理 DNS,就能让 IPv4、IPv6 与 DNS 出口保持一致。
常见问题
为什么检测页面显示了两个 IP?
检测页面分别测试了 IPv4 和 IPv6 出口。IPv4 显示节点地址、IPv6 显示本地运营商地址,说明 IPv6 流量没有经过代理。
关闭 IPv6 会影响正常上网吗?
在客户端中关闭 IPv6 一般不影响日常使用,绝大多数网站仍支持 IPv4 访问。少数只提供 IPv6 的服务会无法访问,可按需在规则中处理。
节点支持 IPv6 是什么意思?
指节点的落地服务器具备 IPv6 出口,能代你访问只有 IPv6 地址的网站。节点不支持 IPv6 时,即使客户端接管了 IPv6,相关连接也可能失败。
只用系统代理会有 IPv6 绕行吗?
遵循系统代理的浏览器通常把域名交给代理处理,受 IPv6 影响较小;但不遵循系统代理的程序、浏览器的 WebRTC 等仍可能直接使用 IPv6。TUN 模式需要额外确认 IPv6 是否被接管。