Pupilcc's Blog

Back

解决 iOS Netflix 掉解锁的问题

#Proxy#
Posted at 25, May, 2026

在使用 Stash、Mihomo、Loon、Surge 等代理工具在 iOS 端观看 Netflix 时,很多人会遇到一种比较典型的问题:

Netflix 可以打开,也可以播放部分内容,但观看一会后就只有非自制剧内容

这种情况通常被称为 Netflix 掉解锁

一、症状

Netflix 掉解锁最常见的表现是:

这类问题并不一定代表节点完全不可用。

很多时候,节点本身仍然可以访问 Netflix,只是 Netflix 对当前网络环境的判断出现了异常,于是只开放自制内容,屏蔽第三方授权内容。

二、原因分析

在代理工具使用 Fake-IP 模式时,DNS 解析流程通常是这样的:

Netflix App 查询 netflix.com
Stash 返回一个 Fake-IP,例如 198.18.x.x
Netflix App 连接这个 Fake-IP
Stash 根据 Fake-IP 映射关系还原域名
Stash 按规则把流量转发到流媒体节点

Fake-IP 模式的好处是:

代理工具可以非常稳定地知道这个连接原本访问的是哪个域名

因此它非常适合做域名分流。

但是对于 Netflix 这类 App,尤其是 iOS 版 Netflix,可能会出现一个问题:

系统 DNS 返回的是 Fake-IP
Netflix App 内部检测得到的是真实 IP
两边结果不一致
Netflix 判断网络环境异常
触发风控或区域检测异常
最终只剩自制剧可看

也就是说,问题不一定是代理节点本身,而是:

Netflix App 看到的 DNS / IP 状态不一致

所以,防掉解锁的第一步,通常是让 Netflix 相关域名不要走 Fake-IP,而是返回真实 IP。

三、防掉解锁的核心配置逻辑

防掉解锁的目标可以总结成一句话:

让 Netflix App 拿到真实 IP,同时让 DNS 查询出口和视频连接出口尽量保持一致。

完整逻辑是:

1. Netflix 相关域名不使用 Fake-IP
2. Netflix 相关域名使用境外 DoH 解析
3. DoH 查询本身也走 Netflix 解锁节点
4. Netflix 视频流量也走同一个解锁节点

最终希望 Netflix 看到的是:

DNS 查询出口:流媒体节点
视频连接出口:流媒体节点
客户端拿到的 IP:真实 IP

这样可以减少两类不一致:

DNS 解析视角:本地网络
实际访问出口:代理节点

以及:

系统 DNS:Fake-IP
App 内部检测:真实 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,DIRECTMATCH 之前。

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.net
2. Stash 命中 nameserver-policy
3. Stash 使用 https://1.1.1.1/dns-query 解析
4. 因为 follow-rule: true,DoH 请求进入 rules
5. 1.1.1.1 命中 IP-CIDR 规则
6. DoH 查询走 🎥 流媒体 节点
7. DNS 返回 Netflix 真实 IP
8. 因为 fake-ip-filter,Netflix App 拿到真实 IP,而不是 Fake-IP
9. Netflix App 连接真实 IP
10. 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,🎥 流媒体

它仍然可以走流媒体代理组。

Last modified at 25, May, 2026