Skip to content

开启 IPv6 后代理异常怎么排查 ​

结论先说:IPv6 本身没有问题,问题出在“本地网络、客户端、节点”三者对 IPv6 的支持不一致。常见的两种情况是:

  1. 客户端没有接管 IPv6:部分程序直接用 IPv6 连接目标网站,绕过了代理,出口变成你本地的地址;
  2. 客户端把 IPv6 地址交给了不支持 IPv6 的节点:节点连不上目标,表现为部分网站超时。

处理原则很简单:要么让客户端完整地处理 IPv6,要么在客户端里关闭 IPv6,让所有代理流量都走 IPv4。对新手来说,先在客户端里关闭 IPv6 是最省事的验证方法。

故障表现 ​

  • 宽带升级、换了路由器或路由器固件更新后,代理开始出现异常;
  • 开着代理,IP 查询网站有时显示节点地区,有时显示本地地址,或同时显示一个 IPv4 和一个本地 IPv6;
  • 一部分网站正常,另一部分网站打开很慢、先卡一段时间再加载,或直接超时;
  • 开启 TUN 后,有些应用走了代理,有些没有;
  • AI 服务或流媒体平台按本地地区处理,而 IP 查询显示的是节点地区;
  • 关闭 IPv6 后,以上问题全部消失。

适用环境 ​

  • 本地网络已分配 IPv6 地址(家庭宽带、校园网、部分移动网络都可能有);
  • 电脑端 Clash 类客户端、v2rayN 等,手机端 v2rayNG、Shadowrocket 等;
  • 系统代理和 TUN 模式都可能涉及,TUN 模式下更常见。

只开系统代理时,浏览器一般把域名直接交给客户端处理,较少受 IPv6 影响;但不读取系统代理的程序仍可能通过 IPv6 直连,这类情况先看 浏览器能访问,为什么应用程序连接失败。

检查步骤 ​

1. 确认本地网络有没有 IPv6 ​

先关闭代理,再检查:

  • 打开一个 IPv6 连通性检测网站,看是否显示“支持 IPv6”并给出一个 IPv6 地址;
  • Windows:设置 → 网络和 Internet → 当前网络的属性,查看是否有 IPv6 地址;
  • macOS:系统设置 → 网络 → 当前网络 → 详细信息… → TCP/IP,查看是否有 IPv6 地址。

没有 IPv6 地址,说明问题与 IPv6 无关,回到 机场不能用时,应该先检查哪几个地方。有 IPv6 地址,继续下一步。

2. 开着代理,对比 IPv4 与 IPv6 的出口 ​

打开代理后,在 IP 查询网站上分别查看 IPv4 和 IPv6 的出口(很多检测网站会同时显示两者):

结果含义
IPv4 是节点地区,IPv6 显示“无”客户端关闭了 IPv6 或节点不提供 IPv6,通常是正常状态
IPv4 是节点地区,IPv6 是你本地的地址IPv6 流量绕过了代理,这是要处理的问题
IPv4 和 IPv6 都是节点地区客户端与节点都完整支持 IPv6
检测页面加载很慢或部分项目超时客户端把 IPv6 请求交给了节点,但节点不支持

3. 查看客户端的 IPv6 设置 ​

多数客户端在设置页或 DNS 设置中有 IPv6 相关开关。需要关注两处:

  • 是否启用 IPv6:决定客户端是否处理 IPv6 连接;
  • DNS 是否返回 IPv6 地址:开启后,客户端会为域名查询 IPv6 地址(AAAA 记录),程序可能优先用 IPv6 去连接。

TUN 模式下,再看客户端的 TUN 设置中是否接管了 IPv6 流量。具体位置见 代理客户端 TUN 模式怎么开:各客户端设置要点。

4. 看连接记录里有没有 IPv6 地址 ​

打开客户端的连接或日志页面,访问一个出问题的网站。如果目标地址是一串带冒号的 IPv6 地址,并且连接失败或超时,说明节点没能处理这个 IPv6 请求。如果出问题的网站在连接记录里根本没有出现,说明它的流量没进客户端,很可能走了 IPv6 直连。日志的看法见 怎么看代理客户端日志:定位连接失败的原因。

5. 在客户端里关闭 IPv6 做对照 ​

把客户端的 IPv6 开关和 DNS 的 IPv6 选项都关闭,重启客户端(TUN 模式下关闭再开启一次 TUN),然后重复第 2 步:

6. 手机与路由器的额外检查 ​

  • 手机客户端多数没有完整的 IPv6 开关,可以在客户端设置里查找 IPv6 相关选项;没有的话,用移动数据和 Wi-Fi 分别测试,对比哪种网络有 IPv6;
  • 路由器或旁路由上运行代理时,确认路由器的代理插件是否处理 IPv6,以及路由器是否同时向局域网下发了 IPv6 地址,见 家里多台设备怎么用机场:路由器与旁路由入门。

对应处理 ​

检查结果处理方法
IPv6 绕过代理,出口为本地地址在客户端开启 IPv6 并让 TUN 接管 IPv6;或在客户端关闭 IPv6,让程序只用 IPv4
节点不支持 IPv6,部分网站超时在客户端关闭 IPv6 和 DNS 的 IPv6 选项;向机场确认哪些节点支持 IPv6
关闭客户端 IPv6 后仍有程序绕过确认已切换到 TUN 模式;仍绕过时,再考虑在系统网卡上临时关闭 IPv6
只有某个 Wi-Fi 或宽带有问题检查该路由器的 IPv6 设置,或在路由器上关闭向局域网下发 IPv6
路由器或旁路由代理不处理 IPv6在路由器上关闭 IPv6 下发,或启用代理插件的 IPv6 支持
关闭 IPv6 后问题依旧与 IPv6 无关,恢复原设置,按 网络排障 中对应现象排查

在系统上临时关闭 IPv6 的位置(仅在客户端设置无效时使用):

  • Windows 11:控制面板 → 网络和共享中心 → 更改适配器设置 → 右键当前网卡选“属性”,取消勾选“Internet 协议版本 6 (TCP/IPv6)”;
  • macOS:系统设置 → 网络 → 当前网络 → 详细信息… → TCP/IP,将“配置 IPv6”改为“仅本地链接”。

系统级关闭 IPv6 要记得恢复

在系统或路由器上关闭 IPv6,会影响依赖 IPv6 的应用与服务,部分校园网和移动网络甚至以 IPv6 为主。优先在客户端里处理;系统层面的修改只作为对照测试,确认原因后尽量改回默认。

新手推荐的默认做法

如果你不确定节点是否支持 IPv6,在客户端里关闭 IPv6、保持系统 IPv6 开启、使用 TUN 模式,是兼容性最好的组合:程序发出的流量都进入客户端,客户端只用 IPv4 连接节点。

恢复验证 ​

  1. 开着代理,在 IP 查询网站上看到 IPv4 为节点地区,IPv6 为“无”或同样为节点地区,不再出现本地地址;
  2. 之前打开慢或超时的网站,现在能正常加载;
  3. 客户端连接记录里不再出现失败的 IPv6 目标地址;
  4. 关闭代理后,本地网络(包括 IPv6)能正常使用;
  5. 在 Wi-Fi 和其他网络之间切换一次,确认结果一致。

相关阅读 ​