流媒体 DNS 解锁 [一键配置 sniproxy & smartdns]

3 天前
 lthero

sniproxy & smartdns 一键配置脚本

开源项目: https://github.com/lthero-big/Smartdns_sniproxy_installer

写在前面

最近黑五,买了一些机器,但机器解锁不太满意啊,于是在论坛四处找教程,最近东拼四凑出了这个脚本;

现有脚本的痛点:

1 、不能方便的配置流媒体平台,sniproxy 和 smartdns 的配置都需要手动修改,而且添加 DNS 机器也需要手动配置,有点儿麻烦; 2 、大多是使用 dnsmasq 和 sniproxy 结合的脚本,没有 smartdns 的。

知识

sniproxy:一个透明代理,反向代理流媒体网站(如 Netflix ),80 和 443 端口不得被占用,且需要开放

smartdns:一个 DNS 服务器,用来分流 DNS 域名是否走 sniproxy 代理

必要准备

  1. 一台或多台能解锁流媒体的 vps ,简称“解锁机”
  2. 没有 vps 的可以使用免费或付费的 dns 解锁服务,请注册 Alice 免费的 DNS 解锁服务Alice
  3. 一台或多台不能解锁流媒体的 vps ,简称“被解锁机”

实现效果

  1. 让一台 vps 同时解锁多个地区的流媒体(美国、新加坡、日本、香港)
  2. 实现使用一个节点,同时解锁香港 b 站,美国油管,新加坡网飞以及日本 HBO 等

参考项目

  1. https://github.com/myxuchangbin/dnsmasq_sniproxy_install
  2. https://github.com/bingotl/dns_unlock
  3. https://github.com/Jimmyzxk/DNS-Alice-Unlock
  4. https://www.nodeseek.com/post-180592-1

优点

  1. smartdns 拥有更快查询和更强的广告过滤等功能
  2. 快速添加您想解锁的地区,一键配置,一键修改,不用再使用复杂的编辑功能
  3. 快速配置您想添加的解锁机服务器,方便修改
  4. 解锁机哪怕宕机也不影响被解锁机正常使用

脚本下载与安装

脚本下载

wget https://raw.githubusercontent.com/lthero-big/Smartdns_sniproxy_installer/refs/heads/main/smtdns_install.sh -O smtdns_install.sh 

脚本将保存在本地 ,命名为 smtdns_install.sh ,您可以随时执行

脚本执行

bash smtdns_install.sh

阅读顺序

如果您不想配置解锁机,请注册 Alice 免费的 DNS 解锁服务Alice,申请 DNS 解锁。随后,请阅读“被解锁机”篇章,使用nameserver添加 DNS 服务器。

如果您有自己的解锁机,可以先阅读“解锁机”篇章,配置自己的解锁机,随后使用address添加 DNS 服务器。


被解锁机

功能解释

-----------被解锁机--------------
1.  安装 SmartDNS
2.  重新配置 SmartDNS
3.  添加上游 DNS 并分组
4.  查看已配置的上游 DNS 组
5.  查看流媒体平台列表
6.  添加一家流媒体平台到 SmartDNS
7.  添加一个地区流媒体到 SmartDNS
8.  添加所有流媒体平台到 SmartDNS
9.  查看已经添加的流媒体
  1. 输入 1 ,安装 smartdns ;随后会询问是否添加上游 DNS 并分级
    1. 如果你已经有 Alice 的解锁服务,或者您自建了 DNS 服务器,直接输入y
    2. 随后,会被邀请输入上游服务器 ip 地址,以及给它命名,简短即可方便区分
      1. 假设输入了12.23.34.45,命令为alice-hk
    3. 直到输入N,完成 smartdns 的初始配置
  2. 输入 2 ,会删除已有的 smartdns 配置,并重新创建
  3. 输入 3 ,会继续添加上游 DNS
  4. 输入 6/7/8 ,添加流媒体平台(注意是一家,一地区,还是所有平台)
    1. 假设输入 7 ,想将香港地区的流媒体,都让alice-hk解锁
    2. 请输入nameserver/address,如果使用 Alice 解锁服务,选择nameserver
    3. 直到输入N,完成地区的添加
  5. 输入 9 ,查看已经添加的流媒体及对应的解锁服务器

关于 nameserver 与 address 选择

  1. 如果使用 Alice 解锁服务,选择 nameserver

  2. 如果自建的解锁机运行了 smartdns ,选择 address

  3. 如果自建的解锁机不运行 smartdns ,选择 address

快速上手

第一步:输入 1 ,安装 smartdns ;随后会询问是否添加上游 DNS 并分级

  1. 如果你已经有 Alice 的解锁服务,或者您自建了 DNS 服务器,直接输入y
  2. 随后,会被邀请输入上游服务器 ip 地址,以及给它命名,简短即可方便区分
    1. 假设输入了12.23.34.45,命令为alice-hk
  3. 直到输入N,完成 smartdns 的初始配置

第二步:输入 6/7/8 ,添加流媒体平台(注意是一家,一地区,还是所有平台)

  1. 假设输入 7 ,如果使用 Alice 解锁服务,想将香港地区的流媒体都让alice-hk解锁,选择nameserver
  2. 直到输入N,完成地区的添加

确保 smartdns 服务启动了即可

SmartDNS 服务状态:运行中
SmartDNS 开机自启:已启用
system DNS 服务状态:已停止
system DNS 开机自启:未启用
sniproxy 服务状态:已停止
sniproxy 开机自启:未启用

解锁机

功能解释

-----------sniproxy 相关(解锁机)--------------
11.  安装并启动 sniproxy
12.  添加流媒体平台到 sniproxy
13.  启动/重启 sniproxy 服务并开机自启
14.  停止 sniproxy 并关闭开机自启
15.  一键对被解锁机放开 80/443/53 端口 
16.  一键开启指定 防火墙(ufw) 端口 
  1. 输入 11 ,会安装 sniproxy 并一键添加一些常用的流媒体平台(不会包含所有的)
  2. 输入 12:添加想要的流媒体平台到 sniproxy ,与上面一样,可以选择添加一个平台或一个地区的平台
  3. 输入 13/14:控制 sniproxy 服务
  4. 输入 15:必做,防止被他人利用,需要添加对被解锁机的访问权限
  5. 输入 16:额外功能,开启某个防火墙端口

快速上手

第一步:输入 15 ,添加对被解锁机的访问权限,需要输入被解锁机的 ip即可

第二步:输入 11 ,会安装 sniproxy 并一键添加一些常用的流媒体平台

第三步:输入 12:添加想要的流媒体平台到 sniproxy ;如果你的机器是美国机,则可以添加美国的流媒体服务到 sniproxy 中,sniproxy 会自动重启;

确保 sniproxy 服务启动即可

SmartDNS 服务状态:已停止
SmartDNS 开机自启:未启用
system DNS 服务状态:运行中
system DNS 开机自启:已启用
sniproxy 服务状态:运行中
sniproxy 开机自启:已启用

高级玩家

前面只让 smartDNS 运行在了被解锁机上,当然,smartdns 可以运行在解锁机上,从而实现嵌套解锁

嵌套解锁:将上游的 DNS 服务器指向 DNS 商家提供的服务器,从而让解锁机下游的服务器都能享受 DNS 商家提供的解锁权益(可能会违反商家的规则)

本脚本当然可以使用在解锁机上,下面是解锁机的 smartdns 配置

server 13.23.33.43 IP -group sg -exclude-default-group

# 如果解锁机使用解锁机 IP ,则下游的被解锁机网飞会定位为解锁机的 ip (如美国)
address /netflix.com/xx.xx.xx.xx
address /netflix.net/xx.xx.xx.xx
address /nflximg.com/xx.xx.xx.xx
address /nflximg.net/xx.xx.xx.xx
address /nflxvideo.net/xx.xx.xx.xx
address /nflxext.com/xx.xx.xx.xx
address /nflxso.net/xx.xx.xx.xx


#> 如果解锁机使用上游的 DNS 商家提供的 IP ,则下游的被解锁机网飞会定位为上游 ip (如新加坡)
nameserver /netflix.com/sg
nameserver /netflix.net/sg
nameserver /nflximg.com/sg
nameserver /nflximg.net/sg
nameserver /nflxvideo.net/sg
nameserver /nflxext.com/sg
nameserver /nflxso.net/sg
984 次点击
所在节点    分享发现
14 条回复
tediorelee
2 天前
好帖,赞
Yien
2 天前
赞👍感谢分享!!!
Alice 或主流的 DNS 解锁也是这种方式实现的?
FranzKafka95
2 天前
好东西,感谢楼主
lthero
2 天前
@Yien #2 是的,Alice 应该是在解锁机上运行了 smartdns ,作为一个 DNS 服务器的
billytom
2 天前
这种才是精华好帖,楼主辛苦了
li19910102
2 天前
请问通过 dns 方式解锁流媒体,这个流量统计消耗的是被解锁机的流量?还是解锁机的流量?还是二者都要消耗?
lthero
2 天前
@li19910102 #6 两者都消耗的
billytom
1 天前
@lthero 请教下,被解锁机的 smartdns ,能否设置两台解锁机的 dns 做为互备,譬如我有一台自己的解锁机 A ,平时我想用 A ,如果 A 离线会改用 Alice DNS ,应该可行?
lthero
1 天前
@billytom #8 应该是可以的,设置服务器 A 为主服务器,并且开启健康检查,当主服务器不可用时自动切换成备用服务器 Alice 的
billytom
1 天前
@lthero 麻烦检查下 HBO MAX 的港区配置,这会是不行的,我自己添加了后还是提示被检测出使用了 v 屁 n ,但我在被解锁机使用 smartdns 连接 AliceDNS 是正常的,问题出现在自己配置的解锁机这里。netflix ,disney 都正常,貌似是 hbo max 港区的域名没配置完整
lthero
1 天前
@billytom #10 原 HBO MAX 的配置在美区,
解决方案一:您可以输入 6 ,找到美区再修改 HBO MAX 的设置成 alice 的;

解决方案二:将 StreamConfig.yaml 删除,重新运行脚本,输入 6 会下载更新后的流媒体列表,输入 6 ,在 Global_Platform 可以找到 HBO_MAX ,将其设置为 alice 的。
lthero
1 天前
@billytom #10 HBO_MAX 原配置在 North_America ,所以对港区配置不会生效,现在它被移动到 Global_Platform ,您可以重新配置下。
billytom
1 天前
感谢
@lthero 另外还有个问题,debian12 默认执行 smatdns_sniproxy.sh 的话,会提示无法安装 python xyz 的组件,需要运行一下语句后才能执行下去 rm /usr/lib/python3.*/EXTERNALLY-MANAGED
lthero
8 小时 49 分钟前
@billytom #13 感谢反馈,后续会尝试兼容不同系统

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1094128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX