外观
开启 IPv6 后代理异常怎么排查
结论先说:IPv6 本身没有问题,问题出在“本地网络、客户端、节点”三者对 IPv6 的支持不一致。常见的两种情况是:
- 客户端没有接管 IPv6:部分程序直接用 IPv6 连接目标网站,绕过了代理,出口变成你本地的地址;
- 客户端把 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 步:
- 问题消失:确认是 IPv6 导致的,按“对应处理”选择长期方案;
- 问题依旧:与 IPv6 无关,恢复原设置,按 网络排障:节点连接失败与超时 继续排查。
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 连接节点。
恢复验证
- 开着代理,在 IP 查询网站上看到 IPv4 为节点地区,IPv6 为“无”或同样为节点地区,不再出现本地地址;
- 之前打开慢或超时的网站,现在能正常加载;
- 客户端连接记录里不再出现失败的 IPv6 目标地址;
- 关闭代理后,本地网络(包括 IPv6)能正常使用;
- 在 Wi-Fi 和其他网络之间切换一次,确认结果一致。