最近刚好是100周年,感觉国内DNS污染有点严重,国外DNS在国内用又容易水土不服,既然如此,可以选择国外网站走海外DNS,大陆网站走大陆DNS的方案。

而且我们还可以在此基础上,用AdguardHome搭建私有DNS,顺带屏蔽广告。

服务器的选择

既然如此,就需要两台VPS,一台大陆机,一台海外机,分别解析大陆网站和海外网站。

我这里用的是我两台腾讯云机器,一台在大陆,一台在香港。

以下步骤需要在大陆机和海外机两台机都进行,即在两台机各搭建一个AdguardHome

AdguardHome的配置

搭建

这里我使用的是官方的一键脚本,如果使用docker的话管理起来会更加方便,这里就自行选择了。

curl -sSL https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh

配置

在执行完成后,访问服务器的3000端口,就可以看见管理界面了。

完成配置向导后来到主界面

文章配图

DNS服务器

国内服务器可以使用腾讯云的DNS

https://sm2.doh.pub/dns-query

国外服务器可以用cf或者谷歌的DNS

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

Bootstrap DNS 服务器可以选择114.114.114.114或者223.5.5.5 海外机的话用谷歌的8.8.8.8和cf的1.1.1.1也行

记得将[使用客户端的子网地址(EDNS)]打开,可以提升解析质量

广告屏蔽

在[过滤器]-[封锁清单]中配置广告屏蔽规则。

文章配图

我在这里分享下我使用的

1.EasyList China

https://easylist-downloads.adblockplus.org/easylistchina.txt

2.CJX’s Annoyance List

https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt

3.EasyPrivacy

https://easylist-downloads.adblockplus.org/easyprivacy.txt

4.I don’t care about cookies

https://www.i-dont-care-about-cookies.eu/abp/

5.EasyList

https://easylist-downloads.adblockplus.org/easylist.txt

Adguard推荐的广告拦截器也有很多不错的,请根据个人喜好进行调整。

广告规则在精不在多,太多的话可能导致正常的使用都出现问题。

也可根据国内和国外两台机进行调整,国内机侧重中国网站广告屏蔽,海外机侧重海外网站屏蔽。

DOH设置

在[设置]-[加密]中启用加密

之后在DNS服务器中输入解析到这个服务器的域名

端口都可以不理会,不过如果你的443端口被Nginx啥的占用的话,也可以改成其他端口,例如我改成了1599端口

文章配图

之后填入该域名的证书即可,这里我用的是免费letsencrypt证书,当然也可以去腾讯云,阿里云等申请免费亚洲诚信证书

文章配图

DNS的使用

至此,DNS的搭建正式完成了,接下来使用即可

在adguardhome的[设置向导]中显示了你的DNS地址

文章配图

这里我使用的是HTTPS开头的doh地址,原因很简单,HTTPS流量好伪装。

上文讲了,我要国内网站用国内DNS,海外网站用海外DNS,即国内外分流。

这里我选择的是本地分流,使用的工具是v2ray,v2ray内核原版就支持DNS分流。不过像我这样的懒人,手写配置文件是不可能的,直接可以用带gui界面的软件解决。

安卓端

安卓端我使用的是anxray,一款好用的基于xray内核的代理工具

文章配图
安卓端设置参考(鬼晓得为啥图是黑白的,反正能看就行)

【远程DNS】为解析海外网站的DNS

【直连DNS】为解析国内网站的DNS

通过【域名重写】将DOH的域名提前解析好,以免开启代理后因为无法解析DOH域名而导致DNS服务无法使用

Windows端

Windows端我使用的是qv2ray

文章配图
文章配图

海外DNS直接添加即可

国内DNS勾选详细设置 在【域名】中填入geosite:cn 在【期待IP】中填入geoip:cn

文章配图
Winwos端设置参考

后续

DNS流量伪装

这文写完没多久我就发现我的DOT端口被墙了,后来查证发现gfw好像对DNS的审查也变严格了。

既然如此的话,将DNS流量伪装成HTTPS正常访问应该就没有问题了

在宝塔创建Nginx网站后,在网站配置文件中填入下列内容

location /path {        
proxy_http_version 1.1;   
proxy_set_header Host $http_host;        
proxy_buffering off;        
proxy_redirect off;        
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        
proxy_pass https://127.0.0.1:doh监听的端口/dns-query; 
}
location /{
rewrite ^/(.*) https://伪装站的域名/$1 redirect;
}

path可以改成自己喜欢的,当访问https://域名/path时会分流至doh,而当访问https://域名/时则会跳转到伪装站,隐蔽性大大提升。


给岁月以文明,给时光以生命!