笨猫博客

  • 🍟首页
  • 🍘目录
    • 🥝VPS教程
    • 🍾猫玩技术
    • 🍹干货分享
    • 🍏软件分享
    • 🍩一只猫
  • 🍋工具
    • 🌽IP路由追踪
    • 🍐域名Whois查询
    • 🥘域名被墙查询
    • 🍧IP正常检测
    • 🔥IP端口检测
    • 🍆短网址
    • 🐟VIP音乐播放
    • 🍯KMS激活
  • 🍓链接
  • 🍪联系
  • 🍱登录
    • 🥦登录
    • 🍒注册
关注互联网,生活,音乐,乐此不疲的一只笨猫
  1. 首页
  2. 干货分享
  3. 正文

DNS一键脚本解锁:让你的小鸡解锁AI,解锁流媒体

2025-11-18 4点热度 0人点赞 0条评论

相信很多小伙伴买美国、日本、新加坡的机器用AI,买香港的机器刷帖子,看网页。还见过很多商家提供一些DNS解锁的服务。

我们的痛点是,因为某些地区原因或IP质量的原因,无法访问一些流媒体网站或AI网站,但是解锁地区的机器买不起或者延迟较高。

常见的解决方案有:

  1. 客户端分流:Clash或V2rayN等客户端支持用域名或IP进行分流的操作,用不同节点访问不同的站点,实现解锁的需求。
  2. 服务端分流:Xray, singbox等主流节点搭建工具支持在服务端进行分流,基于域名或IP进行"链式代理"(使用ss等代理再转发一遍流量到落地节点)
  3. DNS解锁:基于DNS去进行流量分发。用SmartDNS工具制定分流规则,指定的流量转发到解锁机器,解锁机器转发到真正的网站。

让客户端对流媒体平台的实际 TCP/HTTP 流量绕道你的“解锁机”,由解锁机再转发到真正的流媒体服务器,让对端看到的是“解锁机”的出口 IP。

当然,DNS解锁和服务端解锁其实也没有完全的区分,节点搭建工具也支持在配置文件中指定> 域名对应的DNS服务器,你可以同时使用服务端分流和DNS解锁。

DNS 解锁

本质上就是用 SmartDNS 等 DNS 分流工具,对“特定域名集合(流媒体平台域名)”给出“特定答案”,从而把客户端的连接引导到你希望的目标。
在我们搭建的过程中,会直接把这些域名解析为解锁机的 IP ,让所有连接先打到解锁机。

实现方式:
Nginx

  • HTTPS:stream + ssl_preread 直通(基于 SNI 的四层代理),保持原始 SNI,不解密。
  • HTTP:80 端口反向代理,Host 头透传。

DNS 解锁负责“把流量绕过来”,Nginx 负责“把流量转出去”。两者缺一不可。

推荐安装方法:

  • 直接DNS修改:让“未解锁机器”的系统 DNS 直指“解锁机”的 SmartDNS
    • 解锁机:SmartDNS + Nginx,配置流媒体域名 → 自身公网 IPv4,其他域名回落到1.1.1.1 等公共DNS。
    • 未解锁机:把系统 DNS 指向解锁机 IP。这样流媒体域名解析结果就是“解锁机的 IPv4”,实际 TCP/HTTPS 也会打到解锁机,由 Nginx 转发。
  • 更复杂但是解析效果最好:未解锁机本地也装 SmartDNS,分流流媒体域名解析为“解锁机IP” 其他正常域名走 1.1.1.1 等公共DNS。

为什么说第二种更好?
因为某些 Geo-DNS 会根据DNS查询源IP返回更优结果。如果全部查询使用DNS解锁机器的IP进行DNS查询,最坏情况是:
香港的机器查询 google.com 的IP,解锁机在美国返回美国的谷歌IP。原本香港接入谷歌的 2ms 延迟飙升到 200ms。

从零开始:配置解锁机(在目标地区的 VPS)

我这里使用两台机器做演示:

  • 解锁机 SG 159.223.86.13
  • 未解锁机 AU 170.64.197.111

一键脚本下载命令(开源地址:oneclick_smartdns):

curl -fsSL https://raw.githubusercontent.com/kilvil/oneclick_smartdns/main/oneclick.sh | bash

用 smartdnsctl 命令进行启动

  1. 安装组件(按 z → Nginx/SmartDNS)
    • 安装 SmartDNS;安装 Nginx(nginx-extras),确保加载 stream 模块。
      image

      image2561×1630 144 KB
  2. 配置默认上游DNS
    • 在DNS列表里按 U,可以按 A 添加推荐的 1.1.1.1/8.8.8.8
      image

      image2561×1609 152 KB
  3. 创建“解锁机分组”
    • 分组页按 n:组名如 UnlockHost,DNS 地址可留空(本分组不走上游)。
    • 进入该分组,按 m 切换为 address,按 e 填 ident=本机公网 IPv4(若未自动填充)。
      image

      image2561×1627 158 KB
  4. 勾选要解锁的平台
    • 左侧切 Region,右侧选平台。被其他分组占用会显示“! 分组名”,不可选。
    • 按空格选中,再按一次取消选中。
  5. 按 s 保存
  6. 开放端口与服务状态(如果你有用云厂商的安全组)
    • 开放入站 53/UDP、80/TCP、443/TCP;确认 SmartDNS/Nginx 处于 active(UI 顶部有状态)。
    • SmartDNS“启动”不会覆盖系统 DNS;解锁机不要使用 覆盖系统 DNS (会导致流量一直转发在自己身上出不去)
  7. 验证(在解锁机上)
    • 按 q 退出UI后 nginx -t 检查 nginx 配置文件是否正常
    • systemctl status smartdns nginx 两个服务都是 active。

未解锁机器接入,两个方案二选一

  • 方案 A(直接DNS,比较方便):把系统 DNS 指向解锁机
    • Linux(systemd-resolved):
      • sudo resolvectl dns eth0 <解锁机IP>。
    • 验证:
      • dig +short www.netflix.com @<解锁机IP> 返回应为“解锁机公网 IPv4”(或具体平台域名亦然,根据你勾选的解锁服务)。
      • 未解锁机的节点连接后,访问对应平台应显示为目标区。
  • 方案 B:本地 SmartDNS nameserver 到解锁机
    • 本机也装本工具;配置默认上游DNS。1.1.1.1/8.8.8.8
    • 新建分组SG,选跟之前解锁机勾选的一样的平台并保存。
    • 本机系统 DNS 指向本机 127.0.0.1(按 z 进入服务管理,选覆盖系统DNS → 127.0.0.1)。
      image

      image2561×1632 147 KB

究极白嫖怪

大家可以利用 强大的搜索引擎找到各个地区的 SNI Proxy 实例: FOFA。根据世界地图,选择自己喜欢的地区,找的一两个可以访问的IP。

这个原理是,有一些人搭建了SNI Proxy,但是没有使用防火墙仅允许自己的机器使用这些SNI Proxy服务。也就是搭建了解锁服务,但是暴露给所有人,这会引来其他人的白嫖,建议使用ufw对非自己的IP屏蔽。

 实测可用的IP

 

有了这些IP,你可以在单机上直接实现解锁!

在“单机”上配置

  1. 打开工具,进入DNS 分组列表
    • 首次使用可通过 z 菜单安装 SmartDNS。无需安装本机 Nginx。
  2. 为每个地区创建一个分组
    • 在分组页面按 n,输入分组名(建议用地区名,例如 US、JP、UK)。
    • 进入该分组后:
      • 按 m 将解析方式切换为 address。
      • 按 e 把 ident 设置为“该地区 sniproxy 的公网 IPv4”(例如 203.0.113.10)。
    • 提示:这是“按域名把流量直接解析到远端 sniproxy”的意思,本机不做代理。
  3. 勾选各分组要解锁的平台
    • 左侧选择 Region(区域分类),右侧勾选具体平台。
  4. 按 s 保存
    • 如果 SmartDNS 正在运行,会提示是否重启以生效;建议立即重启。
  5. 让客户端使用这台“单机”的 DNS
    • 本机自用:用工具的“覆盖系统 DNS”功能把系统 DNS 改成 127.0.0.1。
    • 验证:
      • dig +short www.netflix.com @127.0.0.1 应返回某个地区 sniproxy 的公网 IPv4(你在 address 里填的 IP)。
      • 访问对应平台,平台应按该地区出网判断。

防白嫖,防火墙

先用 apt install ufw 确保安装ufw

  1. 先确保不会把自己锁在门外:开放 SSH
    • sudo ufw allow OpenSSH
  2. 允许你自己未解锁机器的 IP 访问 80/443
    • sudo ufw allow proto tcp from <IP,如203.0.113.10> to any port 80
    • sudo ufw allow proto tcp from <IP,如203.0.113.10> to any port 443
  3. 拒绝其他来源访问 80/443(若之前放开过,需要删除旧规则)
    • 查看编号:sudo ufw status numbered
    • 删除任何“80/tcp ALLOW Anywhere”“443/tcp ALLOW Anywhere”之类的规则:sudo ufw delete <编号>
  4. 全局默认策略(推荐默认拒绝)
    • sudo ufw default deny incoming
    • sudo ufw default allow outgoing
  5. 启用或重载 UFW
    • 首次启用:sudo ufw enable
    • 已启用则:sudo ufw reload
  6. 验证
    • 本机查看:sudo ufw status verbose
    • 允许端测试(你的未解锁机器):openssl s_client -connect <SERVER_IP>:443 -servername www.example.com -brief

底层原理

这个小脚本本质上是用来方便大家操作配置 SmartDNS 的分流规则,让大家能够不需要考虑到底这个流媒体用的是什么域名,只需要按照平台去选择配置即可。大家也可以通过简单的命令去验证整个过程,在配置完后,看看配置文件长什么样子。

配置文件:

  • SmartDNS
    • 主配置: /etc/smartdns/smartdns.conf
    • DNS缓存: /etc/smartdns/cache
    • 进程与服务: systemctl status smartdns
  • Nginx
    • 主配置: /etc/nginx/nginx.conf
    • HTTP 站点: /etc/nginx/conf.d/*.conf
    • Stream(四层)站点: /etc/nginx/stream.d/*.conf(在主配置里 include 引用)
    • 动态模块目录: /usr/lib/nginx/modules
    • 模块加载 include: /etc/nginx/modules-enabled/*.conf
    • 日志: /var/log/nginx/access.log, /var/log/nginx/error.log

SmartDNS 配置要点与示例

  • 推荐基础选项(已经默认添加了的):
dualstack-ip-selection no
speed-check-mode none
serve-expired yes
serve-expired-reply-ttl 3
serve-expired-prefetch-time 21600
prefetch-domain yes
cache-size 32768
cache-persist yes
cache-file /etc/smartdns/cache
cache-checkpoint-time 86400
  • 定义上游 DNS 组
    • 示例:把 1.1.1.1、8.8.8.8 放进名为 US 的独立分组
      • server 1.1.1.1 -group US -exclude-default-group
      • server 8.8.8.8 -group US -exclude-default-group
    • 默认(非分组)回退 DNS(按照从上到下的顺序生效):
      • server 9.9.9.9
      • server 114.114.114.114
  • 域名规则(两种方式,二选一)
    • 指定上游分组解析(nameserver)
      • 语法:nameserver /<domain or regex>/ -group <GroupName>
      • 示例:nameserver /.netflix.com/ -group US
    • 指定固定地址解析(address)
      • 语法:address /<domain or regex>/ <IPv4>
      • 示例:address /.netflix.com/ 203.0.113.10
  • “解锁机”用的分组(让所有选中域名直接解析到这台机器的公网 IPv4)
#> unlock special address 203.0.113.5
address /.netflix.com/ 203.0.113.5
address /.hulu.com/ 203.0.113.5
#< unlock

这个脚本工具使用形如 #> <region> <ident> 与 #< 之间的内容为本工具管理(删除/重写时靠这对注释识别)。

Nginx 配置原理

由于 Nginx 默认安装后不带 stream 模块,我们使用了动态模块加载的形式去使用这个功能。

  • stream 模块
    • 模块的文件位置:/usr/lib/nginx/modules/ngx_stream_module.so
    • 主配置里面使用include /etc/nginx/modules-enabled/*.conf动态导入模块;
    • 在 /etc/nginx/modules-enabled/50-mod-stream.conf 添加:
      • load_module /usr/lib/nginx/modules/ngx_stream_module.so;
  • 在主配置里 include stream 目录
    • 在 /etc/nginx/nginx.conf 末尾添加:
      • stream { include /etc/nginx/stream.d/*.conf; }
  • HTTPS SNI 直通
    • /etc/nginx/stream.d/smartdns_stream.conf 示例:
map $ssl_preread_server_name $proxy_host {
    default $ssl_preread_server_name;
}
server {
    listen 443 reuseport;
    proxy_pass $proxy_host:443;
    resolver 1.1.1.1 8.8.8.8 valid=10s;
    resolver_timeout 5s;
    ssl_preread on;
    proxy_ssl_server_name on;
}

这里使用 1.1.1.1, 8.8.8.8意味着解锁机用这个DNS去连接最终的目标站点,如果你有一台商家提供DNS解锁的机器,可以嵌套DNS解锁!也就是在这里加上商家的DNS解锁服务地址!(其他的未解锁机器也可以用上这个DNS解锁)

  • HTTP 80 反向代理更为简单一些,属于Nginx基本功能(Host 透传)
    • /etc/nginx/conf.d/smartdns_http.conf 示例:
map $host $http_upstream {
    default $host;
}
server {
    listen 80;
    resolver 1.1.1.1 8.8.8.8 valid=10s;
    resolver_timeout 5s;
    location / {
        proxy_set_header Host $host;
        proxy_pass http://$http_upstream:80;
    }
}

有没有必要上DNS解锁呢?

我个人觉得,在商家提供了DNS解锁的前提下,你用来给其他机器嵌套解锁或者简单的DNS分流,搞DNS解锁还是非常不错的。

个别流媒体不仅对地区有限制,还对IP质量有限制,在你机器不多的情况下,嵌套解锁最大化利用了商家提供的DNS解锁!

其他时候如果你去自建DNS解锁意义其实没有很大,地区不多,还要担心因为IP质量的下降,原本解锁机的解锁也掉了~

相信大家肯定也有过学习客户端分流规则的经历:

  • 原本只会手动开关代理,在局域网和外网之间繁琐切换 → 学会直连/代理的规则配置,省去手动开关
  • 原本只会手动切节点,在延迟和解锁之间得不到满足 → 学会按照站点分流,不同站点用不同节点连接

相信你在完成自己的DNS解锁后,也能够像第一次学会分流规则那样,醍醐灌顶,爱不释手。

原本需要给手机,电脑,软路由配置节点分流 → 现在服务端一次配置,全部生效(当然,Clash订阅也能实现)
原本嫌弃香港小鸡用不了AI → 现在离不开香港的低延迟,DNS解锁各个AI,也能用的顺畅

标签: DNS解锁 流媒体
最后更新:2025-11-18

笨猫

这个人很懒,什么都没留下

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

最新 热点 随机
最新 热点 随机
DNS一键脚本解锁:让你的小鸡解锁AI,解锁流媒体 Docker部署Hexo管理工具QEXO Aeroshell 智能终端-你的运维好帮手 过滤iOS烦人的开屏广告18Bit DNS 忘掉“学”英语,开始“接触”英语!一键给你的浏览器装一个“英语环境”生成器 软软一键开关 --提供多个 Windows 系统开关,例如保持常亮、隐藏桌面图标
Aeroshell 智能终端-你的运维好帮手Docker部署Hexo管理工具QEXODNS一键脚本解锁:让你的小鸡解锁AI,解锁流媒体
升级 Chat GPT Plus 最详细教程 炫风网 * 趣味定制第一社区 ios Surge 2.5 最新中文版使用教程 其实DISCUZ!就是搅局的 年的记忆 《变形金刚2》你又来了。
最近评论
dk 发布于 2 个月前(09月22日) 哈哈哈哈
天天下载Ttzip 发布于 2 个月前(09月15日) 很棒的网站!感谢分享,谢谢站长!!@天天下载Ttzip
诗音 发布于 3 个月前(08月29日) 时间改到2099年在暂停更新也可以
vip券网 发布于 4 个月前(08月01日) 写的很详细,赞 :razz: :evil:
萧瑟 发布于 4 个月前(07月14日) 这个我也用了好久,不知道啥时候能上IP证书
标签
elliptictrue100.10.02
BLOG ChatGPT Chrome CloudFlare DirectAdmin github Godaddy google kloxo Linux OneDrive OneIndex PHP QQ shadowsocks SNS ssh Typecho VPS web2.0 whmcs Windows wordpress 一键脚本 下载 免费 博客 图文教程 图标 图片 域名 头像 奥运 宝塔面板 插件 教程 日记 有趣 浏览器 游戏 猫 生活 电影 百度 网站 视频 设计 软件 阿里云盘 音乐
好友
  • glzjin's blog glzjin's blog
  • ZAERA博客
  • 冰沫记
  • 奇它博客
  • 猫腻‘s Blog
  • 猫饭
  • 肥宅之家
  • 萌博
  • 野路子程序员

COPYRIGHT © 2022 笨猫博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang