在使用 Stash、Mihomo、Loon、Surge 等代理工具在 iOS 端观看 Netflix 时,很多人会遇到一种比较典型的问题:
Netflix 可以打开,也可以播放部分内容,但观看一会后就只有非自制剧内容
这种情况通常被称为 Netflix 掉解锁
一、症状
Netflix 掉解锁最常见的表现是:
- Netflix App 可以正常打开
- 账号可以正常登录
- 首页可以加载
- 刚开始可以看,过一会儿片库变少
- 片库只有 Netflix 自制剧
- 换节点后短暂恢复,随后又掉解锁
这类问题并不一定代表节点完全不可用。
很多时候,节点本身仍然可以访问 Netflix,只是 Netflix 对当前网络环境的判断出现了异常,于是只开放自制内容,屏蔽第三方授权内容。
二、原因分析
在代理工具使用 Fake-IP 模式时,DNS 解析流程通常是这样的:
Netflix App 查询 netflix.comStash 返回一个 Fake-IP,例如 198.18.x.xNetflix App 连接这个 Fake-IPStash 根据 Fake-IP 映射关系还原域名Stash 按规则把流量转发到流媒体节点Fake-IP 模式的好处是:
代理工具可以非常稳定地知道这个连接原本访问的是哪个域名因此它非常适合做域名分流。
但是对于 Netflix 这类 App,尤其是 iOS 版 Netflix,可能会出现一个问题:
系统 DNS 返回的是 Fake-IPNetflix App 内部检测得到的是真实 IP两边结果不一致Netflix 判断网络环境异常触发风控或区域检测异常最终只剩自制剧可看也就是说,问题不一定是代理节点本身,而是:
Netflix App 看到的 DNS / IP 状态不一致所以,防掉解锁的第一步,通常是让 Netflix 相关域名不要走 Fake-IP,而是返回真实 IP。
三、防掉解锁的核心配置逻辑
防掉解锁的目标可以总结成一句话:
让 Netflix App 拿到真实 IP,同时让 DNS 查询出口和视频连接出口尽量保持一致。
完整逻辑是:
1. Netflix 相关域名不使用 Fake-IP2. Netflix 相关域名使用境外 DoH 解析3. DoH 查询本身也走 Netflix 解锁节点4. Netflix 视频流量也走同一个解锁节点最终希望 Netflix 看到的是:
DNS 查询出口:流媒体节点视频连接出口:流媒体节点客户端拿到的 IP:真实 IP这样可以减少两类不一致:
DNS 解析视角:本地网络实际访问出口:代理节点以及:
系统 DNS:Fake-IPApp 内部检测:真实 IP四、Stash 示例配置
下面是一个以 Stash 为例的配置。
假设你的流媒体代理组叫:
🎥 流媒体DNS 配置
dns: # 关键:让 DNS 请求也按照 rules 走分流 follow-rule: true
# Netflix 相关域名使用 Cloudflare DoH 解析 # 使用 1.1.1.1,避免 cloudflare-dns.com 自身解析带来的递归和延迟 nameserver-policy: '+.netflix.com': https://1.1.1.1/dns-query '+.nflxvideo.net': https://1.1.1.1/dns-query '+.nflximg.net': https://1.1.1.1/dns-query '+.nflxext.com': https://1.1.1.1/dns-query '+.nflxso.net': https://1.1.1.1/dns-query '+.fast.com': https://1.1.1.1/dns-query
# Netflix 相关域名不返回 Fake-IP,而是返回真实 IP fake-ip-filter: - '+.netflix.com' - '+.nflxvideo.net' - '+.nflximg.net' - '+.nflxext.com' - '+.nflxso.net' - '+.fast.com'Rules 配置
这些规则需要放在 GEOIP,CN,DIRECT 和 MATCH 之前。
rules: # 关键:让 Cloudflare DoH 请求本身也走流媒体节点 - IP-CIDR,1.1.1.1/32,🎥 流媒体,no-resolve - IP-CIDR,1.0.0.1/32,🎥 流媒体,no-resolve
# Netflix 本体流量 - RULE-SET,netflix,🎥 流媒体 - DOMAIN-SUFFIX,netflix.com,🎥 流媒体 - DOMAIN-SUFFIX,nflxvideo.net,🎥 流媒体 - DOMAIN-SUFFIX,nflximg.net,🎥 流媒体 - DOMAIN-SUFFIX,nflxext.com,🎥 流媒体 - DOMAIN-SUFFIX,nflxso.net,🎥 流媒体 - DOMAIN-SUFFIX,fast.com,🎥 流媒体
# 你的其他规则 # - GEOIP,CN,DIRECT # - MATCH,🚀 节点选择五、为什么使用 DoH IP
很多配置会写:
https://cloudflare-dns.com/dns-query这个写法本身没问题,但它有一个额外步骤:
访问 cloudflare-dns.com 之前,需要先解析 cloudflare-dns.com如果 DNS 查询本身又要走代理规则,就可能出现:
解析 Netflix 需要 DoH访问 DoH 服务器又需要先解析 cloudflare-dns.com解析 cloudflare-dns.com 又可能依赖 DNS 配置这会增加首次打开 Netflix 时的等待时间,甚至可能导致 Netflix App 一开始显示 “没有网络连接”,过一会儿才恢复。
因此,更推荐在 Stash 里使用 Cloudflare DoH 的 IP 形式:
https://1.1.1.1/dns-query然后用规则让 1.1.1.1 这个 DoH 请求走流媒体代理组。
六、配置后的完整访问链路
配置完成后,Netflix 的访问链路大致是:
1. iOS Netflix App 请求解析 netflix.com / nflxvideo.net2. Stash 命中 nameserver-policy3. Stash 使用 https://1.1.1.1/dns-query 解析4. 因为 follow-rule: true,DoH 请求进入 rules5. 1.1.1.1 命中 IP-CIDR 规则6. DoH 查询走 🎥 流媒体 节点7. DNS 返回 Netflix 真实 IP8. 因为 fake-ip-filter,Netflix App 拿到真实 IP,而不是 Fake-IP9. Netflix App 连接真实 IP10. Stash 通过 DNS 缓存 / SNI / 规则识别 Netflix 流量11. Netflix 视频连接继续走 🎥 流媒体 节点最终效果是:
Netflix DNS 查询出口:🎥 流媒体Netflix 视频连接出口:🎥 流媒体Netflix App 拿到的地址:真实 IP七、配置后还能正常分流吗?
很多人会担心:
Netflix 加入 fake-ip-filter 后,返回真实 IP,还能走规则分流吗?
答案是:可以。
只是分流方式从:
Fake-IP 映射强绑定域名变成了:
真实 IP + DNS 缓存 + TLS SNI + 规则匹配例如你可能在 Stash 日志中看到:
found sni in tls client hello: ipv4-c004-hkg003-pccw-isp.1.oca.nflxvideo.net这说明 Stash 已经通过 TLS SNI 识别出了 Netflix 视频 CDN 域名。
只要 rules 里有:
- DOMAIN-SUFFIX,nflxvideo.net,🎥 流媒体它仍然可以走流媒体代理组。