IPv4 / IPv6 为什么可能导致流媒体地区判断异常
家里宽带是 IPv4 / IPv6 双栈、而代理只接管了 IPv4 时,IPv6 流量可能直接从本地运营商出口出去——平台同时看到两个地区不一致的出口,地区判断就可能异常,部分情况下还会触发代理提示。快速结论:流媒体出问题时,先自查 v4 / v6 出口是否一致;排查阶段可以优先仅使用 IPv4。
双栈网络:你可能有两个出口
如今许多家庭宽带和移动网络会同时分配 IPv4 与 IPv6 地址,也就是双栈(协议本身的基础讲解见 IPv4 / IPv6 / DNS 基础篇)。访问一个同时支持两种协议的网站时,操作系统会自行选择用哪个协议连接——很多系统默认更偏好 IPv6。
系统偏好 IPv6 的行为有标准依据:现代操作系统在双协议可用时会并行尝试连接、并倾向选择 IPv6(即所谓 Happy Eyeballs 机制的定性效果)。也就是说,只要 IPv6 这条路是通的,它就有相当大的概率被用上——不管这条路有没有经过你的代理。
问题在于:不少代理客户端、订阅配置默认只处理 IPv4 流量。这时就会出现分裂:IPv4 流量走代理、IPv6 流量本地直连。你实际上同时拥有两个出口——代理落地的 IPv4 出口,和本地运营商的 IPv6 出口,两者的地区通常不一致。这个问题在不同网络下的暴露程度也不同:不少移动网络已经是 IPv6 优先,问题更容易出现;而一些老旧宽带只有 IPv4,天然不受影响——这也是”同一套配置,家里正常、手机流量下异常”的常见原因之一。
对流媒体地区判断的影响
主流流媒体平台的服务大多同时支持 IPv4 与 IPv6。当你的请求一部分从代理出去、另一部分从本地直连出去时,平台可能观察到互相矛盾的地区信号。据观察,可能出现的后果包括:
- 地区判断异常:内容库显示成你本地的地区,而不是节点所在地区;
- 触发检测:部分情况下出现代理或解锁相关的错误提示,Netflix 上这类报错的完整分析见 Netflix 代理错误怎么解决;
- 时好时坏:具体某次请求走了哪个协议有随机性,表现因此飘忽不定,最难排查。
需要说明:平台如何使用这些信号并不公开,以上是定性描述,各平台政策以其当前官方说明为准。另外,出口 IP 本身的类型(数据中心还是原生)是另一个独立变量,见原生 IP、数据中心 IP 对流媒体有什么影响。
自查:v4 / v6 出口是否一致
连接节点后,访问任意能同时显示 IPv4 与 IPv6 出口地址的 IP 检测网站(这类站点很多,任选一个即可),对照下表判断:
| IPv4 出口 | IPv6 出口 | 判断 |
|---|---|---|
| 节点地区 | 显示无 IPv6 | 正常:代理只走 v4,v6 未泄漏 |
| 节点地区 | 也是节点地区 | 正常:客户端已接管双栈流量 |
| 节点地区 | 本地运营商地址 | IPv6 泄漏:优先处理 |
第三种组合就是典型的 IPv6 泄漏——代理没有接管 IPv6,流量绕开了节点。
自查时有两个细节容易踩坑:一是部分检测页面默认只显示其中一种协议的结果,要确认页面确实同时测了 v4 和 v6;二是最好在实际观看流媒体的那台设备上测试——不同设备、不同网络接口的 IPv6 状态可能不一样,电脑上没泄漏不代表电视盒子上也没有。
处理方法(定性步骤)
- 最直接:临时禁用 IPv6。在系统网络设置中关闭 IPv6,强制所有流量走 IPv4 并进入代理。排查阶段推荐先用这一招,对日常上网影响通常很小;
- 客户端接管:部分代理客户端提供 IPv6 开关或入站设置,开启后可让 v6 流量同样进入代理(是否有效还取决于节点侧支持情况);
- 规则层处理:在分流规则中对 IPv6 流量做拒绝或强制走代理的处理,避免直连泄漏;
- 路由器层面:如果代理跑在路由器上,也可以在路由器关闭 IPv6 的分配,让内网设备只拿到 IPv4——一次处理,全家生效。
排查时的原则是先做减法:优先仅用 IPv4 把变量减到最少,确认流媒体恢复正常后,再按需把 IPv6 加回来。IPv6 本身不是”坏东西”,问题只出在它绕过代理造成的地区不一致。
处理完成后,重新访问检测站确认两个出口一致,再播放一部非自制的版权内容做最终验证,测试方法见 Netflix 解锁测试教程。如果出口一致后问题依旧,方向就要转向 DNS 或节点本身的解锁能力。
下一步
- DNS 解析造成的地区不一致与 DNS 解锁机制,见 DNS 为什么会影响流媒体地区识别;
- 系统了解”解锁”的定义与实现方式,见什么是流媒体解锁。