V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lthero
V2EX  ›  分享发现

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

  •  1
     
  •   lthero · 10 天前 · 1221 次点击

    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
    
    15 条回复    2024-12-05 09:31:45 +08:00
    tediorelee
        1
    tediorelee  
       10 天前
    好帖,赞
    Yien
        2
    Yien  
       10 天前
    赞👍感谢分享!!!
    Alice 或主流的 DNS 解锁也是这种方式实现的?
    FranzKafka95
        3
    FranzKafka95  
       10 天前
    好东西,感谢楼主
    lthero
        4
    lthero  
    OP
       10 天前
    @Yien #2 是的,Alice 应该是在解锁机上运行了 smartdns ,作为一个 DNS 服务器的
    billytom
        5
    billytom  
       10 天前 via iPhone
    这种才是精华好帖,楼主辛苦了
    li19910102
        6
    li19910102  
       9 天前
    请问通过 dns 方式解锁流媒体,这个流量统计消耗的是被解锁机的流量?还是解锁机的流量?还是二者都要消耗?
    lthero
        7
    lthero  
    OP
       9 天前
    @li19910102 #6 两者都消耗的
    billytom
        8
    billytom  
       9 天前
    @lthero 请教下,被解锁机的 smartdns ,能否设置两台解锁机的 dns 做为互备,譬如我有一台自己的解锁机 A ,平时我想用 A ,如果 A 离线会改用 Alice DNS ,应该可行?
    lthero
        9
    lthero  
    OP
       8 天前
    @billytom #8 应该是可以的,设置服务器 A 为主服务器,并且开启健康检查,当主服务器不可用时自动切换成备用服务器 Alice 的
    billytom
        10
    billytom  
       8 天前
    @lthero 麻烦检查下 HBO MAX 的港区配置,这会是不行的,我自己添加了后还是提示被检测出使用了 v 屁 n ,但我在被解锁机使用 smartdns 连接 AliceDNS 是正常的,问题出现在自己配置的解锁机这里。netflix ,disney 都正常,貌似是 hbo max 港区的域名没配置完整
    lthero
        11
    lthero  
    OP
       8 天前
    @billytom #10 原 HBO MAX 的配置在美区,
    解决方案一:您可以输入 6 ,找到美区再修改 HBO MAX 的设置成 alice 的;

    解决方案二:将 StreamConfig.yaml 删除,重新运行脚本,输入 6 会下载更新后的流媒体列表,输入 6 ,在 Global_Platform 可以找到 HBO_MAX ,将其设置为 alice 的。
    lthero
        12
    lthero  
    OP
       8 天前
    @billytom #10 HBO_MAX 原配置在 North_America ,所以对港区配置不会生效,现在它被移动到 Global_Platform ,您可以重新配置下。
    billytom
        13
    billytom  
       8 天前
    感谢
    @lthero 另外还有个问题,debian12 默认执行 smatdns_sniproxy.sh 的话,会提示无法安装 python xyz 的组件,需要运行一下语句后才能执行下去 rm /usr/lib/python3.*/EXTERNALLY-MANAGED
    lthero
        14
    lthero  
    OP
       7 天前
    @billytom #13 感谢反馈,后续会尝试兼容不同系统
    GhZicE
        15
    GhZicE  
       6 天前
    @billytom 感谢大佬。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   858 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:01 · PVG 05:01 · LAX 13:01 · JFK 16:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.