在 Ubuntu 22.04 上搭建 dnsmasq + sniproxy 以解锁 Netflix

一、安装 dnsmasq 和 sniproxy

sudo apt update
sudo apt install dnsmasq sniproxy -y

二、配置 dnsmasq

  1. 增加一个dns配置文件文件
sudo vim /etc/dnsmasq.d/netflix.conf

添加如下内容:

domain-needed
bogus-priv
no-resolv
no-poll
all-servers
server=8.8.8.8
server=1.1.1.1
server=208.67.222.222
server=4.2.2.1
cache-size=2048
local-ttl=60
interface=*
address=/akadns.net/你的服务器ip
address=/akam.net/你的服务器ip
address=/akamai.com/你的服务器ip
address=/akamai.net/你的服务器ip
address=/akamaiedge.net/你的服务器ip
address=/akamaihd.net/你的服务器ip
address=/akamaistream.net/你的服务器ip
address=/akamaitech.net/你的服务器ip
address=/akamaitechnologies.com/你的服务器ip
address=/akamaitechnologies.fr/你的服务器ip
address=/akamaized.net/你的服务器ip
address=/edgekey.net/你的服务器ip
address=/edgesuite.net/你的服务器ip
address=/srip.net/你的服务器ip
address=/footprint.net/你的服务器ip
address=/level3.net/你的服务器ip
address=/llnwd.net/你的服务器ip
address=/edgecastcdn.net/你的服务器ip
address=/cloudfront.net/你的服务器ip
address=/netflix.com/你的服务器ip
address=/netflix.net/你的服务器ip
address=/nflximg.com/你的服务器ip
address=/nflximg.net/你的服务器ip
address=/nflxvideo.net/你的服务器ip
address=/nflxso.net/你的服务器ip
address=/nflxext.com/你的服务器ip
address=/hulu.com/你的服务器ip
address=/huluim.com/你的服务器ip
address=/hbo.com/你的服务器ip
address=/hbonow.com/你的服务器ip
address=/hbomax.com/你的服务器ip
address=/hbomaxcdn.com/你的服务器ip
address=/hboasia.com/你的服务器ip
address=/hbogoasia.com/你的服务器ip
address=/max.com/你的服务器ip
address=/warnermediacdn.com/你的服务器ip
address=/wmcdp.io/你的服务器ip
address=/ngtv.io/你的服务器ip
address=/pypestream.com/你的服务器ip
address=/arkoselabs.com/你的服务器ip
address=/amazon.com/你的服务器ip
address=/amazon.co.uk/你的服务器ip
address=/amazonvideo.com/你的服务器ip
address=/crackle.com/你的服务器ip
address=/pandora.com/你的服务器ip
address=/vudu.com/你的服务器ip
address=/blinkbox.com/你的服务器ip
address=/abc.com/你的服务器ip
address=/fox.com/你的服务器ip
address=/theplatform.com/你的服务器ip
address=/nbc.com/你的服务器ip
address=/nbcuni.com/你的服务器ip
address=/ip2location.com/你的服务器ip
address=/pbs.org/你的服务器ip
address=/warnerbros.com/你的服务器ip
address=/southpark.cc.com/你的服务器ip
address=/cbs.com/你的服务器ip
address=/brightcove.com/你的服务器ip
address=/cwtv.com/你的服务器ip
address=/spike.com/你的服务器ip
address=/go.com/你的服务器ip
address=/mtv.com/你的服务器ip
address=/mtvnservices.com/你的服务器ip
address=/playstation.net/你的服务器ip
address=/uplynk.com/你的服务器ip
address=/maxmind.com/你的服务器ip
address=/disney.com/你的服务器ip
address=/disneyjunior.com/你的服务器ip
address=/adobedtm.com/你的服务器ip
address=/bam.nr-data.net/你的服务器ip
address=/bamgrid.com/你的服务器ip
address=/braze.com/你的服务器ip
address=/cdn.optimizely.com/你的服务器ip
address=/cdn.registerdisney.go.com/你的服务器ip
address=/cws.conviva.com/你的服务器ip
address=/d9.flashtalking.com/你的服务器ip
address=/disney-plus.net/你的服务器ip
address=/disney-portal.my.onetrust.com/你的服务器ip
address=/disney.demdex.net/你的服务器ip
address=/disney.my.sentry.io/你的服务器ip
address=/disneyplus.bn5x.net/你的服务器ip
address=/disneyplus.com/你的服务器ip
address=/disneyplus.com.ssl.sc.omtrdc.net/你的服务器ip
address=/disneystreaming.com/你的服务器ip
address=/dssott.com/你的服务器ip
address=/execute-api.us-east-1.amazonaws.com/你的服务器ip
address=/js-agent.newrelic.com/你的服务器ip
address=/xboxlive.com/你的服务器ip
address=/lovefilm.com/你的服务器ip
address=/turner.com/你的服务器ip
address=/amctv.com/你的服务器ip
address=/sho.com/你的服务器ip
address=/mog.com/你的服务器ip
address=/wdtvlive.com/你的服务器ip
address=/beinsportsconnect.tv/你的服务器ip
address=/beinsportsconnect.net/你的服务器ip
address=/fig.bbc.co.uk/你的服务器ip
address=/open.live.bbc.co.uk/你的服务器ip
address=/sa.bbc.co.uk/你的服务器ip
address=/www.bbc.co.uk/你的服务器ip
address=/crunchyroll.com/你的服务器ip
address=/ifconfig.co/你的服务器ip
address=/omtrdc.net/你的服务器ip
address=/sling.com/你的服务器ip
address=/movetv.com/你的服务器ip
address=/happyon.jp/你的服务器ip
address=/abema.tv/你的服务器ip
address=/hulu.jp/你的服务器ip
address=/optus.com.au/你的服务器ip
address=/optusnet.com.au/你的服务器ip
address=/gamer.com.tw/你的服务器ip
address=/bahamut.com.tw/你的服务器ip
address=/hinet.net/你的服务器ip
address=/dmm.com/你的服务器ip
address=/dmm.co.jp/你的服务器ip
address=/dmm-extension.com/你的服务器ip
address=/dmmapis.com/你的服务器ip
address=/videomarket.jp/你的服务器ip
address=/p-smith.com/你的服务器ip
address=/img.vm-movie.jp/你的服务器ip
address=/saima.zlzd.xyz/你的服务器ip
address=/challenges.cloudflare.com/你的服务器ip
address=/ai.com/你的服务器ip
address=/openai.com/你的服务器ip
address=/cdn.oaistatic.com/你的服务器ip
address=/aiv-cdn.net/你的服务器ip
address=/aiv-delivery.net/你的服务器ip
address=/amazonprimevideo.cn/你的服务器ip
address=/amazonprimevideo.com.cn/你的服务器ip
address=/amazonprimevideos.com/你的服务器ip
address=/amazonvideo.cc/你的服务器ip
address=/media-amazon.com/你的服务器ip
address=/prime-video.com/你的服务器ip
address=/primevideo.cc/你的服务器ip
address=/primevideo.com/你的服务器ip
address=/primevideo.info/你的服务器ip
address=/primevideo.org/你的服务器ip
address=/primevideo.tv/你的服务器ip
address=/pv-cdn.net/你的服务器ip

说明

  • 你的服务器IP 替换为你的服务器公网 IP
  • 使用 address 强制解析 Netflix 相关域名到服务器 IP
  1. 关闭自带的DNS服务并且重启 dnsmasq
sudo systemctl stop systemd-resolved.service
sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq

三、配置 sniproxy

  1. 编辑 sniproxy.conf
sudo vim /etc/sniproxy.conf

添加如下配置:

user daemon
pidfile /var/tmp/sniproxy.pid

error_log {
    syslog daemon
    priority notice
}

resolver {
    nameserver 8.8.8.8
    nameserver 8.8.4.4 # local dns should be better
    mode ipv4_only
}
listener 0.0.0.0:80 {
    proto http
    access_log {
        filename /var/log/sniproxy/http_access.log
        priority notice
    }
}
listener 0.0.0.0:443 {
    proto tls
    access_log {
        filename /var/log/sniproxy/https_access.log
        priority notice
    }
}

table {
    .*akadns\.net$ *
    .*akam\.net$ *
    .*akamai\.com$ *
    .*akamai\.net$ *
    .*akamaiedge\.net$ *
    .*akamaihd\.net$ *
    .*akamaistream\.net$ *
    .*akamaitech\.net$ *
    .*akamaitechnologies\.com$ *
    .*akamaitechnologies\.fr$ *
    .*akamaized\.net$ *
    .*edgekey\.net$ *
    .*edgesuite\.net$ *
    .*srip\.net$ *
    .*footprint\.net$ *
    .*level3\.net$ *
    .*llnwd\.net$ *
    .*edgecastcdn\.net$ *
    .*cloudfront\.net$ *
    .*netflix\.com$ *
    .*netflix\.net$ *
    .*nflximg\.com$ *
    .*nflximg\.net$ *
    .*nflxvideo\.net$ *
    .*nflxso\.net$ *
    .*nflxext\.com$ *
    .*hulu\.com$ *
    .*huluim\.com$ *
    .*hbo\.com$ *
    .*hbonow\.com$ *
    .*hbomax\.com$ *
    .*hbomaxcdn\.com$ *
    .*hboasia\.com$ *
    .*hbogoasia\.com$ *
    .*max\.com$ *
    .*warnermediacdn\.com$ *
    .*wmcdp\.io$ *
    .*ngtv\.io$ *
    .*pypestream\.com$ *
    .*arkoselabs\.com$ *
    .*amazon\.com$ *
    .*amazon\.co\.uk$ *
    .*amazonvideo\.com$ *
    .*crackle\.com$ *
    .*pandora\.com$ *
    .*vudu\.com$ *
    .*blinkbox\.com$ *
    .*abc\.com$ *
    .*fox\.com$ *
    .*theplatform\.com$ *
    .*nbc\.com$ *
    .*nbcuni\.com$ *
    .*ip2location\.com$ *
    .*pbs\.org$ *
    .*warnerbros\.com$ *
    .*southpark\.cc\.com$ *
    .*cbs\.com$ *
    .*brightcove\.com$ *
    .*cwtv\.com$ *
    .*spike\.com$ *
    .*go\.com$ *
    .*mtv\.com$ *
    .*mtvnservices\.com$ *
    .*playstation\.net$ *
    .*uplynk\.com$ *
    .*maxmind\.com$ *
    .*disney\.com$ *
    .*disneyjunior\.com$ *
    .*adobedtm\.com$ *
    .*bam\.nr-data\.net$ *
    .*bamgrid\.com$ *
    .*braze\.com$ *
    .*cdn\.optimizely\.com$ *
    .*cdn\.registerdisney\.go\.com$ *
    .*cws\.conviva\.com$ *
    .*d9\.flashtalking\.com$ *
    .*disney-plus\.net$ *
    .*disney-portal\.my\.onetrust\.com$ *
    .*disney\.demdex\.net$ *
    .*disney\.my\.sentry\.io$ *
    .*disneyplus\.bn5x\.net$ *
    .*disneyplus\.com$ *
    .*disneyplus\.com\.ssl\.sc\.omtrdc\.net$ *
    .*disneystreaming\.com$ *
    .*dssott\.com$ *
    .*execute-api\.us-east-1\.amazonaws\.com$ *
    .*js-agent\.newrelic\.com$ *
    .*xboxlive\.com$ *
    .*lovefilm\.com$ *
    .*turner\.com$ *
    .*amctv\.com$ *
    .*sho\.com$ *
    .*mog\.com$ *
    .*wdtvlive\.com$ *
    .*beinsportsconnect\.tv$ *
    .*beinsportsconnect\.net$ *
    .*fig\.bbc\.co\.uk$ *
    .*open\.live\.bbc\.co\.uk$ *
    .*sa\.bbc\.co\.uk$ *
    .*www\.bbc\.co\.uk$ *
    .*crunchyroll\.com$ *
    .*ifconfig\.co$ *
    .*omtrdc\.net$ *
    .*sling\.com$ *
    .*movetv\.com$ *
    .*happyon\.jp$ *
    .*abema\.tv$ *
    .*hulu\.jp$ *
    .*optus\.com\.au$ *
    .*optusnet\.com\.au$ *
    .*gamer\.com\.tw$ *
    .*bahamut\.com\.tw$ *
    .*hinet\.net$ *
    .*dmm\.com$ *
    .*dmm\.co\.jp$ *
    .*dmm-extension\.com$ *
    .*dmmapis\.com$ *
    .*videomarket\.jp$ *
    .*p-smith\.com$ *
    .*img\.vm-movie\.jp$ *
    .*saima\.zlzd\.xyz$ *
    .*challenges\.cloudflare\.com$ *
    .*ai\.com$ *
    .*openai\.com$ *
    .*cdn\.oaistatic\.com$ *
    .*aiv-cdn\.net$ *
    .*aiv-delivery\.net$ *
    .*amazonprimevideo\.cn$ *
    .*amazonprimevideo\.com\.cn$ *
    .*amazonprimevideos\.com$ *
    .*amazonvideo\.cc$ *
    .*media-amazon\.com$ *
    .*prime-video\.com$ *
    .*primevideo\.cc$ *
    .*primevideo\.com$ *
    .*primevideo\.info$ *
    .*primevideo\.org$ *
    .*primevideo\.tv$ *
    .*pv-cdn\.net$ *

}

说明

  • listener 监听所有网络接口的 443 和 80 端口
  • table 设置需要代理的 Netflix 相关域名
  1. 重启 sniproxy
sudo systemctl restart sniproxy
sudo systemctl enable sniproxy

四、调整防火墙

sudo ufw allow 53/tcp
sudo ufw allow 53/udp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

五、配置客户端 DNS

在客户端(如路由器或设备)上,将 DNS 服务器 设置为 你的服务器IP,然后测试 Netflix 是否可用。

ubuntu22.04临时修改DNS只需要将/etc/resolv.conf中的nameserver改为你的服务器IP就可以了,保存退出自动立即生效

sudo vim /etc/resolv.conf

六、测试解锁效果

  1. 测试 DNS 解析
nslookup www.netflix.com 你的服务器IP

如果返回的是你的服务器 IP,则 dnsmasq 配置成功。

  1. 测试代理
curl -v https://www.netflix.com --resolve www.netflix.com:443:你的服务器IP

如果返回 HTTP/2 200 或 Netflix 页面内容,则 sniproxy 代理正常。


补充说明

  • Netflix 可能会封锁 IP,需要更换 IP 进行测试。
  • 可以结合 WireGuardShadowsocks 提供完整的 Netflix 解锁解决方案。
  • 推荐在美国或其他 Netflix 友好地区的 VPS 进行搭建。

这样,你的 dnsmasq + sniproxy 方案应该就能正常解锁 Netflix 了!


原理

dnsmasq + sniproxy 解锁 Netflix 的原理主要基于 DNS 劫持SNI 代理,通过绕过 Netflix 的区域限制,让其认为你的访问来自受支持的国家/地区。


一、Netflix 的区域限制机制

Netflix 主要通过 IP 地址SNI(Server Name Indication) 来判断用户的地理位置:

  1. DNS 解析
    • 当用户访问 www.netflix.com,Netflix 的 DNS 服务器会返回不同的 IP 地址,指向不同的地区服务器。
    • 如果你的 DNS 解析到的是 非受支持国家的服务器,那么 Netflix 可能会限制你的访问。
  2. IP 识别
    • Netflix 直接检查你的公网 IP 是否来自受支持的国家/地区。
    • 如果你的 IP 不在可观看的地区列表中,Netflix 会限制访问或提供不同的内容库。
  3. SNI(TLS 握手时的域名)
    • 当客户端与 Netflix 服务器建立 HTTPS 连接 时,Netflix 服务器会检查 SNI 头部(即 TLS 握手中的域名)。
    • 如果 Netflix 发现 SNI 头部的域名对应的 IP 地址来自 不支持的国家,它会直接阻止访问或返回错误页面。

二、dnsmasq + sniproxy 如何绕过 Netflix

1. dnsmasq 劫持 DNS

  • dnsmasq 用来 拦截 Netflix 相关域名的 DNS 查询,并将其解析到你的服务器 IP,而不是 Netflix 官方的 IP。
  • 这样,客户端会把所有 Netflix 请求都发送到你的服务器,而不是 Netflix 真实的服务器。

2. sniproxy 代理 SNI 流量

  • sniproxy 监听 80 端口(HTTP)和 443 端口(HTTPS),并基于 SNI 头部 代理 Netflix 的请求到正确的 Netflix 服务器。
  • 因为 sniproxy 只是 中转流量,它不会解密 HTTPS 数据,而是根据 SNI 头部转发到正确的 Netflix 服务器。

示例流程:

  1. 用户访问 Netflix
    • 浏览器请求 www.netflix.com
    • dnsmasq 劫持 DNS,返回 你的服务器 IP
  2. Netflix 服务器验证
    • 由于 Netflix 服务器收到的 SNI 头部仍然是 www.netflix.com,但来源 IP 是你的服务器,它不会阻止访问。
    • sniproxy 将这个请求 透明转发 给 Netflix 的原始服务器。
  3. Netflix 以为你来自服务器 IP
    • 由于流量最终是从你的服务器 IP 发出的,Netflix 认为你是来自 该服务器的地区,从而绕过了地区限制。

三、为何使用 sniproxy 而不是普通代理?

相比 VPN 或 Shadowsocks,sniproxy 具备以下优势:

  • 不修改 HTTPS 流量,Netflix 无法检测到代理或 VPN
  • 无须安装客户端,只需改 DNS 即可生效
  • 不会影响其他网站,仅代理 Netflix 相关域名

四、存在的风险和问题

  1. Netflix 可能封锁你的服务器 IP
    • 许多 VPS 提供商的 IP 段已被 Netflix 屏蔽,建议使用 住宅 IP动态 IP 服务器
  2. Netflix 可能加强 SNI 检测
    • 目前 sniproxy 方案依赖于 Netflix 只检查 源 IP 而不检查 SNI 代理行为,但未来可能会升级检测机制。
  3. IPv6 可能会绕过 DNS 劫持
    • 需要在 dnsmasq 里屏蔽 IPv6 或者确保 sniproxy 也支持 IPv6。

五、总结

方案方法适用情况
VPN直接使用代理服务器适用于所有网站,但可能被 Netflix 识别并封锁
Shadowsocks代理所有流量需要安装客户端,适用于所有网站
dnsmasq + sniproxy劫持 Netflix DNS + 透明 SNI 代理适用于 只解锁 Netflix,无需客户端,难以被检测

dnsmasq + sniproxy 是一种轻量级的 Netflix 解锁方案,适用于服务器 IP 仍未被封锁的情况。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇