使用Adguard Home搭建去广告无污染的DoH/DoT DNS

DNS作为最基础的网络服务,承担着把域名和IP进行转换的工作,但是DNS协议在设计之初并没有充分考虑可靠性,使用了不够安全的UDP协议,且没有结果校验机制,导致DNS被污染的可能性很大,因此新的DNS技术,包括DNSSEC、DoH、DoT等相继而出,今天给大家介绍一款非常好用的私人DoH/DoT DNS平台——Adguard Home。
从名字就可以看出,它师出Adguard,是一款广告屏蔽软件,原理就是通过订阅广告网站的列表,主动阻断这类网站的dns解析,从而阻断了广告的呈现,其实它的功能除了去除广告之外,通过合理的设置,还能有效防止DNS污染,通过缓存提升DNS解析速度,是一款非常全能的DNS软件。

部署安装Adguard Home

根据Adguard Home官网介绍,Adguard Home可以被部署到几乎所有平台/移动设备上,这里我一般建议大家部署到路由器/独立的主机上,而不是直接部署到终端设备,这样可以一次部署让所有的设备都能使用,今天我选择了部署在一台腾讯云的ECS上,底层系统是Ubuntu。
部署方式非常简单,使用如下命令安装即可

1
2
3
4
5
6
#安装snapd
sudo apt update
sudo apt install snapd

#使用snapd安装adguard home
sudo snap install adguard-home

安装完成后,即可通过IP:3000来访问adguard home的后台了,首次打开Step by step完成简单设置即可。

设置

常规设置


常规设置基本无需更改,基本保持默认即可,一般情况下你也不会使用浏览安全和家长控制服务,保持过滤器的勾打上,一般24小时更新一次过滤器足够。

DNS设置


这个页面属于核心设置之一,我们的防污染的设置主要就依靠这个区域的来进行设置。一般来说,海外DNS防污染但是速度慢,国内DNS污染严重但是速度快,因此我们选择通过域名进行分流的方式来主动选择海外/国内的DNS进行解析,我这里选择的是把gfwlist的域名交给google的dot服务tls://dns.google,不在列表中的域名则交给dnspod的dot服务tls://dns.pub。通过 https://github.com/kpivy8/gfwlist2AdGuardHome 这个开源项目可以很方便的进行格式的转换,但是转换后会发现一个问题,那就是内容长度太长,直接复制到上游DNS服务器里面会报错,那怎么处理呢?


Adguard Home的开发者已经提前帮我们考虑到了这个问题,可以在AdGuardHome.yaml文件中,通过upstream_dns_file来指定导出的文件,我就使用了这个办法,所以在页面上是显示“配置路径dns.txt”,原因就是我把dns内容都写在了这个txt中。


Bootstrap DNS服务器简单来说就是把上述DNS列表中的域名转化为IP的服务器(比如dns.pub,dns.google),这里我直接使用了dnspod的119.29.29.29即可


在DNS服务配置中,由于是私人使用,所以速度限制可以直接改为0,另外把EDNS、DNSSEC和禁用IPV6勾上,EDNS可以让dns服务器返回最合适的IP给你(主要是面对CDN服务),DNSSEC可以帮你校验DNS的签名避免出错,IPV6的话,目前普及程度还比较一般,建议还是使用IPV4来进行访问。


DNS缓存配置就是把解析记录在Adguard Home进行缓存,避免同一个域名重复请求,这里保持默认即可。

加密设置


加密设置就是让Adguard Home可以通过DoH、DoT和DoQuic(实验)来对外提供DNS解析服务,这些服务由于需要域名,因此也需要一张有效的SSL证书,把证书内容填写在对话框中即可

客户端设置和DHCP设置可以直接忽略

过滤器-DNS封锁清单


这里就是Adguard Home的广告过滤设置了,设置起来也非常简单,直接订阅CN的列表即可,其他不用改变。

使用


经过如上设置,你就已经拥有一台私人的、去广告、无污染的DoH/DoT DNS服务器了,至于如何在你的终端上使用,下次我再详细介绍。