Adguardhome自建dns服务器
📅

Adguardhome自建dns服务器

Tags
AdGuard Home
DNS

为什么要自建dns服务器

作为一个时常访问github的公民,却因为一些你懂得的原因,无法访问raw.githubusercontent.com这一域名,有的时候连github都无法访问,比较苦恼。刚好手里有一台闲置的学生云服务器,于是便有了自建dns服务的想法。
作为一个编程小白,最简单的方法便是用docker容器部署应用了,经过一段时间的寻找,终于找到了AdGuard Home这一在github开源的免费应用,它不仅可以一键搭建自己的dns服务器,还可以自定义dns规则,设置广告过滤,于是,折腾之旅开始。

安装Adguard Home

我用的是Debian 9 x64系统,在腾讯云上,首先安装依赖项
apt-get install sudo nano bind9-host
下载 Adguard Home
wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz tar xvf AdGuardHome_linux_amd64.tar.gz cd AdGuardHome
执行安装命令
sudo ./AdGuardHome -s install
运行AdGuardHome
./AdGuardHome -s start
验证是否运行成功
host doubleclick.net 127.0.0.1
若出现以下信息,则运行成功
Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: Host doubleclick.net not found: 3(NXDOMAIN)

初始化Adguard Home

在本地浏览器中打开 http://你的服务器ip:3000 (记得开端口) 进行初始化配置,这一初始化配置主要是设置用户名密码以及设置dns服务器的运行地址(选择127.0.0.1就可以了)和端口。这里端口包括两个,一个是管理界面的端口,默认设置为80或者设置其他都可以,另外一个是dns服务器运行的端口,这个最好设置为53,因为很多设备都只支持53端口的dns解析。

配置Adguard Home

本地浏览器中打开http://你的服务器ip:你设置的管理面板端口主界面应该是这样的,正式使用之前,需要完成以下设置
notion image
UTOOLS1586523754731.png
设置上游dns服务器
进入界面后,点击设置的dns设置,往下可以找到上游dns服务器的设置,默认的dns服务器在国外,连接不太顺畅,一般选择在国内的纯净dns或者大型dns服务商(污染问题可以通过自定义dns解决),我选的是114.114.114.114和119.29.29.29,并勾选通过同时查询所有上流服务器以使用并行查询加速解析。
notion image
UTOOLS1586522362197.png
然后检测dns并应用
设置白名单
百度ip查询自己的ip地址,并写入。考虑到家庭网络的动态ip可以在后面写入 /8 或者 /16。若自己有多个公网ip,可以添加多个允许的ip,还以加上127.0.0.1(本地地址),让云服务器访问自己的dns服务
notion image
过滤广告
在常规设置中勾选全部项目
notion image
UTOOLS1586522666008.png
打开过滤器的封锁清单,勾选已经有的地址,并添加以下地址(这一过程会使网页卡顿,耐心等)。但这些规则并不是很适用于国内的广告商,我又加入了以下清单
  1. https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt
  1. https://easylist-downloads.adblockplus.org/easylistchina.txt
  1. https://raw.githubusercontent.com/xinggsf/Adblock-Plus-Rule/master/ABP-FX.txt
  1. https://gitee.com/privacy-protection-tools/anti-ad/raw/master/easylist.txt
设置完成后记得开UDP的53端口(而不是TCP),DNS服务器方可正常使用。因为过滤了很多广告,大大增加了网页浏览的体验。

自定义DNS规则

这一功能的存在是我一直使用AdGuard Home的原因,这一功能在官方文档也没有明确的说明,鄙人摸索了一段时间才找到。
打开过滤器中的dns重写,即为自定义dns规则。我们以github.io为例。
使用在服务器中输入
host github.io
会出现4个ip地址,分别为 185.199.108.153、 185.199.109.153、 185.199.110.153、 185.199.111.153,这表面github有使用CDN加速服务,有的CDN ip是被屏蔽的,而有的没有。经过不停的测试,只有185.199.109.153这一ip没有被屏蔽,而host解析出来的的最优先域名并不一定是185.199.109.153,这就是为什么有时github.io打不开,但是多刷新几次就打开了。这里我们主动设置github.io解析到185.199.109.153,就可以顺畅地访问了。
notion image
UTOOLS1586523375179.png
如果无法获得可供访问的ip,可以在此地址搜索域名的绕过CDN真实ip IP Address.com。若此ip也被屏蔽,则没有办法访问了,比如谷歌。

更多配置

Adguard home用户界面已经设置的很人性化了,基本上不需要看文档,很多内容摸索界面就摸索出来了,若有需要,请参看AdGuard Home - Configuration

参考文献

  1. Adguard home 官方wiki:在VPSV上搭建Adguard home