树洞剪藏#剪藏#树洞剪藏

自建DNS解锁教程:SNI Proxy 和 Smartdns - 小千の博客

2024 年 11 月 15 日1 分钟
分享Twitter / XTelegram微博

同步来源:树洞剪藏 源站剪藏 ID:96 原文地址:https://chitanda.org/archives/50

打开原文 · 打开源站剪藏快照


登录

时光长廊

追番目录

隐私政策

自建DNS解锁教程:SNI Proxy 和 Smartdns

发布于 23 天前 34 次阅读

写在前面

现实使用中,尝尝遇到被部分流媒体屏蔽的情款,比如马来西亚不能使用迪士尼plus。这时SNI Proxy就派上了用场。本文将利用SNI Proxy 和 Smartdns 实现流媒体解锁。 本文之所以选择用smartdns取代Dnsmasq,在于smartdns 无论是在查询速度、查询到的IP访问速度和广告过滤都强于Dnsmasq。

为实现自建DNS解锁往往采取一下两种办法:第一种直接在被解锁服务器设置解锁,适用于单个服务器需要解锁的应用场景。第二种建立私人DNS服务器,适用于多台服务器需要解锁的应用场景。

方案一 方案二 搭建sni代理 √ √ 搭建DNS服务器 √ × 被解锁机本地设置 仅需修改系统DNS 需要在所有被解锁机搭建smartdns 灵活性 快捷 较为复杂 可靠性 自建DNS服务器宕机,本地DNS瘫痪 自建DNS服务器宕机,本地DNS正常 应用场景 多台服务器 单台服务器

必备内容

1台解锁流媒体的服务器(443和80端口不能被占用)

搭建教程

由于存在两种实现方法,教程除了sni代理为统一步骤外,其余部分因差异性将分开阐述。

安装SNI Proxy

wget --no-check-certificate -O dnsmasq_sniproxy.sh https: // raw.githubusercontent.com /myxuchangbin/ dnsmasq_sniproxy_install /master/ dnsmasq_sniproxy.sh && bash dnsmasq_sniproxy.sh -is

设置SNI Proxy

修改配置文件,将所需dns解锁的网址格式化输入

/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 {

.*ai.com$ *

.*openai.com$ *

.*chatgpt.com$ *

.*oaistatic.com$ *

.*oaiusercontent.com$ *

}

重启SNI Proxy

systemctl restart sniproxy

解锁机设置解锁白名单

如未安装ufw,请先执行

sudo apt install ufw

ufw enable

修改下面示例的IP(写被解锁机IP),执行即可。

sudo ufw allow from 2.2 . 2.2 to any port 443 proto tcp

sudo ufw allow from 2.2 . 2.2 to any port 443 proto udp

sudo ufw allow from 2.2 . 2.2 to any port 80 proto tcp

sudo ufw allow from 2.2 . 2.2 to any port 80 proto udp

方案一:安装smartdns 搭建DNS服务器

此处可以用另一台服务器,也可以就用搭建sni代理那台服务器。

wget https: //gi thub.com /pymumu/ smartdns /releases/ download /Release46/ smartdns. 1.2024 . 06.12 - 2222 .x86-linux-all.tar.gz

tar zxf smartdns. 1.2024 . 06.12 - 2222 .x86-linux-all.tar.gz

cd smartdns

chmod +x ./install

./install -i

设置smardns

vi /etc/ smartdns/smartdns.conf

编辑配置,自行添加需要解锁的网址,常见流媒体域名可以参考 1stream写好的 。

bind[::]: 53 @eth0 - no -dualstack-selection - no -speed-check #不要动

dualstack-ip-selection no

speed-check-mode none

serve-expired-prefetch-time 21600

prefetch-domain yes

cache-size 32768

cache-persist yes

cache-file /etc/smartdns/cache

prefetch-domain yes

serve-expired yes

serve-expired-ttl 259200

serve-expired-reply-ttl 3

prefetch-domain yes

serve-expired-prefetch-time 21600

cache-checkpoint-time 86400

#force-AAAA-SOA yes

server 210.0 .255 .250 #默认上游DNS

server 210.0 .255 .251 #默认上游DNS

---------- > Global Plaform

> GPT

address /openai.com/ 解锁机IP

address /chatgpt.com/ 解锁机IP

address /oaistatic.com/ 解锁机IP

address /oaiusercontent.com/ 解锁机IP

保存并启动

system ctl enable smartdns

system ctl start smartdns

DNS服务器开启DNS白名单

强烈建议开启DNS白名单,不开启会被别人白嫖,也可能被D哥用作DNS放大攻击

开启白名单

修改下面示例的IP即可。

ufw allow from 2.2 . 2.2 to any port 53 proto udp

被解锁服务器修改DNS

修改DNS为解锁机或者DNS服务器的IP。

vim /etc/ resolv.conf

方案二

在被解锁服务器本地搭建smartdns

安装步骤和方案一相同,此处不再赘述。

配置文件有所改变,具体改动为第一行的DNS设置,该设置限制了仅本地可以访问

bind : 53 @lo - no -dualstack-selection - no -speed-check #不要动

dualstack-ip-selection no

speed-check-mode none

serve-expired-prefetch-time 21600

prefetch-domain yes

cache-size 32768

cache-persist yes

cache-file /etc/smartdns/cache

prefetch-domain yes

serve-expired yes

serve-expired-ttl 259200

serve-expired-reply-ttl 3

prefetch-domain yes

serve-expired-prefetch-time 21600

cache-checkpoint-time 86400

#force-AAAA-SOA yes

server 210.0 .255 .250 #默认上游DNS

server 210.0 .255 .251 #默认上游DNS

---------- > Global Plaform

> GPT

address /openai.com/ 解锁机IP

address /chatgpt.com/ 解锁机IP

address /oaistatic.com/ 解锁机IP

address /oaiusercontent.com/ 解锁机IP

被解锁服务器修改DNS

修改DNS为127.0.0.1

vim /etc/ resolv.conf

高级玩法

玩法一 嵌套解锁

其实,在某些商家提供DNS解锁的服务器也可以利用本教程给其他服务器提供解锁,就是嵌套解锁( 该行为可能违反TOS )。 借助方案一,使用自建DNS,只需要改一下上游DNS设置和域名对应的DNS设置即可实现。

server 210.0 . 255.250 #默认上游DNS

server 210.0 . 255.251 #默认上游DNS

server 此处写商家提供的DNS IP - group dnsproxy - exclude - default - group

> Netflix

nameserver /netflix.com/ dnsproxy

nameserver /netflix.net/ dnsproxy

nameserver /nflximg.com/ dnsproxy

nameserver /nflximg.net/ dnsproxy

nameserver /nflxvideo.net/ dnsproxy

nameserver /nflxext.com/ dnsproxy

nameserver /nflxso.net/ dnsproxy

玩法二 自建DOH服务器

某些厂商强制劫持了53端口的UDP流量,导致无论怎么改DNS都无法摆脱商家的解锁服务,此时DOH就派上了用处。 DOH简单说就是DNS over HTTPS,通过DOH 走TCP流量使用TLS可以完美绕过DNS劫持。 smartdns可以搭建DOH服务器,但是我没搭建成功,so sad。所以仅介绍adguardhome搭建DOH。 具体adguardhome搭建DOH的教程网络已有很多 ,此处就省去了。搭建过程中,唯一需要注意的是,上游DNS需要写127.0.0.1。 被DNS劫持的服务器只需要在smartdns中将默认DNS设置为自己刚建好的DOH地址即可。

server-https https: // cloudflare-dns.com/dns-query

小建议由于TLS三次握手的特性,查询DNS的延迟肯定会提升,建议开启smartdns的缓存功能。

玩法三 smartdns开启广告过滤

下载配置文件到/etc/smartdns目录:

wget https: // anti-ad.net /anti-ad-for-smartdns.conf -O / etc /smartdns/ anti-ad-smartdns.conf

修改该/etc/smartdns/smartdns.conf文件以包含上述配置文件:

conf- file /etc/ smartdns/anti-ad-smartdns.conf

扩展聊一聊(与本文主题无关)

其实直接通过修改系统DNS方式解锁流媒体弊端有很多,常见的弊端比如:DNS服务器宕机导致本地服务无法解析域名、由于厂商分流规则没有细分导致常见CDN 分配的IP在别的地区(常见于akamai的CDN),这时候DNS分流就尤为重要。利用smartdns,可以实现对解锁域名走厂商DNS,对其他域名走公共DNS。举个例子,下面那个配置意思是:DAZN和Hotstar走DNS,其他的全用8.8.8.8解析,这样即使66.66.66.66宕机,本地只要不访问DAZN和Hotstar就不受任何影响。

server 8.8 .8 .8

server 66.66 .66 .66 (厂商给的dns ip) - group dns -exclude- default - group

---------- > Global Plaform

> DAZN

nameserver /upos-hz-mirrorakam.akamaized.net/dns

> Hotstar

nameserver /hotstar.com/dns

相关项目官网

sni代理 smartdns AdGuardHome

分享到:

Facebook X

赞过:

第一个点赞。

">

届ける言葉を今は育ててる

最后更新于 2024-10-26

啥也没有呀

上一篇文章

最优质的台湾VPS服务推荐:Fast-Line TW 测评

下一篇文章

自建音乐服Navidrome-从Docker搭建、音乐刮削到音流享受

Comments NOTHING

暂无评论

取消回复 Markdown Supported while Forbidden 你是我一生只会遇见一次的惊喜 ...

戳我呀 OωO 嘿嘿嘿 ヾ(≧∇≦*)ゝ

bilibili~ Tieba (=・ω・=)

输入QQ号将自动拉取昵称和头像

你将收到回复通知

禁止小广告😀

在此浏览器中保存我的显示名称、邮箱地址和网站地址,以便下次评论时使用。

萌ICP备20246630号

Theme Sakurairo by Fuukei

想要找点什么呢?

優しさの理由 - ChouCho

00:00 / 01:30

相关文章