https://lala.im/7705.html
DNSProxy是AdguardTeam开发的一个简单的DNS代理服务器,它支持目前所有的DNS协议。包括DoT/DoH/DNSCrypt等。最最最重要的是还支持EDNS(ECS)。
我最近一直在找一个可以支持EDNS的DoH解决方案,试过很多开源的程序,比如DNSDist/Unbound之类的,但是无一例外要么是支持的不够完善,要么是配置起来太复杂了。。
我知道AdguardTeam这个开发团队其实本身就有一个项目是支持EDNS的:AdGuardHome。但是这个程序跑起来比较重,有很多我不需要用到的功能。
就在我纠结的时候,突然发现AdguardTeam还有一个DNSProxy的项目,这个就非常好了,有所有我需要用到的功能,而且配置起来非常简单,这里就给大家推荐一下吧。
咱毕竟懂的也不多,关于EDNS具体是个啥原理,我也不能随便乱说,如果你想了解这块的话可以看看维基百科或者Google:
https://en.wikipedia.org/wiki/EDNS_Client_Subnet
只是从个人使用体验来说的话,有EDNS支持的话,你访问国内的一些网站就不会慢了,比如B站/163/QQ/斗鱼直播这些。可以省去做国内外分DNS解析的步骤。
目前个人使用感觉良好,废话就不多说了,下面是搭建步骤。
首先装一下需要用到的工具:
apt -y update apt -y install wget nginx python-certbot-nginx supervisor
设置nginx/supervisor开机自启:
systemctl enable --now nginx supervisor
下载解压dnsproxy的预编译文件:
cd /opt wget https://github.com/AdguardTeam/dnsproxy/releases/download/v0.33.8/dnsproxy-linux-amd64-v0.33.8.tar.gz tar -xzvf dnsproxy-linux-amd64-v0.33.8.tar.gz mv linux-amd64 dnsproxy
其实dnsproxy可以直接拿来用,把它监听在443端口就行了,但是我机器上面还要做站或者搞点其他的东西,所以这里我选择用nginx反代dnsproxy的服务。
这里先新建一个nginx站点配置文件:
nano /etc/nginx/conf.d/dnsproxy.conf
写入如下配置:
server { listen 80; server_name dns.imlala.best; # 换成你的域名 client_max_body_size 0; location /dns-query { proxy_pass https://127.0.0.1:10443; # 后续dnsproxy监听的端口号 proxy_set_header X-Real-IP $remote_addr; # 传递客户端的真实ip到dnsproxy,否则dnsproxy的edns功能不能用 } }
然后用certbot签发一个ssl证书:
certbot --nginx
之后你需要重新编辑这个站点配置文件:
nano /etc/nginx/conf.d/dnsproxy.conf
在如下行加上http2的配置:
listen 443 ssl http2; # managed by Certbot
重载nginx使其生效:
systemctl reload nginx
现在新建supervisor配置文件:
nano /etc/supervisor/conf.d/dnsproxy.conf
写入如下配置:
[program:dnsproxy] priority=1 command=/opt/dnsproxy/dnsproxy -l 127.0.0.1 --https-port=10443 --tls-crt=/etc/letsencrypt/live/dns.imlala.best/fullchain.pem --tls-key=/etc/letsencrypt/live/dns.imlala.best/privkey.pem -u https://dns.google/dns-query -f 8.8.8.8:53 -f 8.8.4.4:53 --cache --edns -p 0 autostart=true autorestart=true redirect_stderr=true stdout_logfile=/var/log/supervisor/dnsproxy.log
之前已经用certbot申请好了证书,所以你只需要把上面的证书和私钥换成你自己的就可以了,其他的配置都不需要改动。
现在启动dnsproxy就大功告成啦:
supervisorctl update
经过上面的步骤后,你的DoH服务地址就是:
https://dns.imlala.best/dns-query
接下来我们需要在电脑上装支持DoH的客户端,这里推荐一个YogaDNS:
https://yogadns.com/
安装之后,初次运行选这个:
选择DNS Servers:
点击Add添加DNS服务器:
按下图的格式来填写:
配置好了后最好点击旁边的Check检测一下,如果显示绿色那就是没有问题。
接着点击Rules:
在这里选择你的DNS服务器:
开始享受无污染的DNS服务吧~
其实这个YogaDNS还支持很多高级功能,比如按照域名来分DNS解析之类的,有需求的可以自己折腾着看看
没有评论:
发表评论