tech/network · 集群 B · 隧道与排障原理 · 4/6

IPv6 对代理的影响:双栈优先级、流量绕过与排查思路

发布时间 待核实核实日期 待核实最近更新 待核实测试状态 Not Tested
Answer First · 核心结论

在 IPv4 与 IPv6 同时可用的双栈网络中,系统和应用往往优先尝试 IPv6。如果代理客户端只接管或只解析 IPv4,部分 IPv6 流量就可能绕过代理直接出去,造成“开了代理仍直连”或地区判断不一致。如果你遇到这类现象,可以先确认本地是否获得了 IPv6 地址,再检查客户端的 IPv6 与 DNS 相关设置是否一致。

双栈网络是怎么回事

双栈是指一台设备同时拥有 IPv4 和 IPv6 两种地址,可以用其中任意一种访问目标。随着 IPv6 部署推进,不少家庭宽带和移动网络都已经默认下发 IPv6 地址,用户往往并不知道自己已经处于双栈环境。

在双栈环境中,访问一个同时支持两种协议的网站时,DNS 会同时返回 IPv4 地址(A 记录)和 IPv6 地址(AAAA 记录),系统或应用需要决定用哪一个。

[应用] 查询 example.com
   │
   ├─ A    记录 → IPv4 地址
   └─ AAAA 记录 → IPv6 地址
   │
   ▼
系统 / 应用选择:优先 IPv6?还是 IPv4?

系统如何选择 IPv4 还是 IPv6

现代操作系统和浏览器普遍采用一种被称为“Happy Eyeballs”的策略:同时或几乎同时尝试 IPv6 和 IPv4,优先使用 IPv6,如果 IPv6 在很短时间内没有成功,再用 IPv4。这样既推动了 IPv6 使用,又避免 IPv6 故障导致长时间等待。

情况 通常的选择
只有 IPv4 记录 使用 IPv4
只有 IPv6 记录、本地有 IPv6 使用 IPv6
两者都有、IPv6 正常 通常优先 IPv6
两者都有、IPv6 失败 快速回退 IPv4
本地没有全局 IPv6 地址 使用 IPv4

这个策略对普通上网很友好,但对代理场景却可能带来问题:一旦 IPv6 能直接连通,系统就会愉快地走 IPv6,完全不经过只处理 IPv4 的代理。

IPv6 如何绕过代理

IPv6 绕过代理主要有三条路径,分别对应接管层、解析层和规则层。

接管层绕过:TUN 模式下如果客户端只为 IPv4 设置了路由,IPv6 流量仍按系统原有路由从物理网卡出去。系统代理模式下,部分应用直接使用 IPv6 连接而不读代理设置。TUN 原理见 TUN 虚拟网卡原理。

解析层绕过:如果代理内核不处理 AAAA 查询,系统可能从本地 DNS 拿到 IPv6 地址,再直接连接。这本质上也是一种 DNS 泄漏,原理见 DNS 污染是什么。

规则层绕过:规则只写了 IPv4 网段,IPv6 地址匹配不到这些规则,落到了兜底;如果兜底是直连,就直接出去了。规则匹配原理见 分流原理。

IPv6 流量去向判断:
[应用发出 IPv6 连接]
   │
   ├─ 被客户端接管了吗?
   │    ├─ 否 → 直接从物理网卡出去(绕过)
   │    └─ 是 ↓
   │
   ├─ 规则能匹配 IPv6 吗?
   │    ├─ 否 → 落到兜底(若兜底直连则绕过)
   │    └─ 是 ↓
   │
   └─ 节点支持 IPv6 出口吗?
        ├─ 否 → 连接失败,可能回退 IPv4
        └─ 是 → 正常代理

IPv6 绕过的典型表现

IPv6 绕过通常不会导致“完全不通”,而是带来一些令人困惑的不一致现象:

  1. IP 检测结果不一致:检测 IPv4 显示节点地区,检测 IPv6 显示本地地区。
  2. 同一网站时好时坏:Happy Eyeballs 有时选 IPv6(直连)、有时选 IPv4(代理)。
  3. 部分服务提示地区异常:服务看到的是你的本地 IPv6 地址,与代理出口不一致。
  4. 日志里看不到连接:客户端日志中完全没有该网站的记录,说明根本没进入客户端。

第 3 点涉及 IP 归属问题,可参考 节点与 IP 专题。访问 AI 或流媒体平台时请遵守平台服务条款与支持地区。

代理客户端处理 IPv6 的几种方式

代理客户端对 IPv6 的处理一般有以下几种思路,各有取舍。具体选项名称因客户端而异,且可能随版本变化,以界面为准。

方式 做法 优点 代价
内核禁用 IPv6 解析 DNS 模块不返回 AAAA 强制走 IPv4,简单有效 无法访问仅 IPv6 的目标
TUN 同时接管 IPv6 为 IPv6 也设置路由 覆盖完整 需节点支持,配置更复杂
规则补充 IPv6 网段 规则中加入 IPv6 段 分流更精确 维护成本较高
系统层禁用 IPv6 关闭网卡 IPv6 彻底 影响其他依赖 IPv6 的服务

对多数用户而言,在客户端内保持 DNS 与接管设置一致是最重要的原则:要么都处理 IPv6,要么都不处理。最容易出问题的是“TUN 接管了 IPv6 但 DNS 不返回 AAAA”或反过来这种半开状态。

排查步骤

怀疑 IPv6 导致问题时,可以按下面的顺序检查:

  1. 确认本地是否有全局 IPv6 地址:查看系统网络设置,链路本地地址(以 fe80 开头)不算。
  2. 分别检测 IPv4 与 IPv6 出口:在开启代理时,分别查看两个协议的出口地区是否一致。
  3. 查看客户端 IPv6 相关设置:DNS 模块、TUN 设置中 IPv6 的开关状态是否一致。
  4. 查看日志:问题网站的连接是否出现在日志中,命中了哪条规则。
  5. 临时在客户端禁用 IPv6 解析对比:如果问题消失,说明与 IPv6 有关。

完整的逐层排查思路见 分层排障法。

路由器层面的 IPv6

除了电脑本身,家用路由器的 IPv6 设置也会影响代理表现。很多路由器默认开启 IPv6 并向局域网设备下发地址,这意味着即使你在电脑上没做任何改动,系统也可能已经处于双栈状态。如果你在路由器上部署了代理方案,同样要考虑路由器是否接管了 IPv6 流量,否则局域网设备的 IPv6 连接会直接从路由器出去。

在路由器上调整 IPv6 会影响家中所有设备,改动前建议先了解哪些设备或服务依赖 IPv6,例如部分远程访问、家庭存储或智能设备。比较稳妥的做法是先在单台电脑的客户端里测试,确认效果后再考虑是否在路由器层面统一处理。路由器场景下的代理部署思路可参考 路由器方案 专题。

不同场景下的取舍建议

是否处理 IPv6、怎么处理,没有放之四海皆准的答案,可以按场景做条件化选择:

  • 如果你主要用浏览器访问常规网站,且不依赖任何 IPv6 专属服务,可以优先考虑在客户端内禁用 IPv6 解析,配置最简单;
  • 如果你的节点明确支持 IPv6 出口,且需要访问仅 IPv6 的目标,更适合让 TUN 与 DNS 同时接管 IPv6;
  • 如果你在家中运行依赖 IPv6 的服务,不适合在系统层或路由器层直接关闭 IPv6。

无论选择哪种方式,调整后都应重新检测 IPv4 与 IPv6 的出口是否一致。

小结

IPv6 本身不是问题,问题在于“代理只管了一半”。双栈环境下系统倾向优先 IPv6,只要接管、解析、规则中有一环没覆盖 IPv6,就会出现绕过和不一致。保持客户端内 IPv6 设置的一致性,是减少这类问题的关键。

想了解服务商资料对客户端的描述,可以访问 机场品牌库 或 对比工具,所有字段来自品牌资料,本站未实测。

常见问题

怎么知道自己的网络有没有 IPv6?

可以在系统网络设置中查看网卡是否获得了全局 IPv6 地址(非链路本地地址),也可以在关闭代理时访问显示 IP 版本的检测页面确认。

为什么开了代理,某些网站还是显示本地 IP?

一种常见原因是该网站支持 IPv6,系统优先通过 IPv6 直接连接,而客户端只接管了 IPv4。检查客户端 IPv6 设置,或观察日志中是否出现这条连接。

关闭 IPv6 是不是最简单的办法?

在客户端层面禁用 IPv6 解析是一种常见取舍,可以减少绕过问题;但在系统层面完全关闭 IPv6 可能影响部分依赖 IPv6 的本地服务。建议优先在客户端内统一设置,并观察影响。

节点本身需要支持 IPv6 吗?

如果你希望通过代理访问仅有 IPv6 的目标,落地节点需要具备 IPv6 出口。多数网站同时提供 IPv4,节点仅有 IPv4 时一般也能访问。

信息来源与更新时间

信息来源
品牌清单资料(品牌公开信息整理)
测试范围
本站未进行测速与解锁实测,所有能力描述均为资料声明或未测试状态。
发布时间
待核实
核实日期
待核实
最近更新
待核实

字段含义与数据状态见 字段说明;核查进度见 品牌动态与核查日志。