在PVE下用 AdGuard Home搭建一个带广告过滤的私有DNS服务器及优化部署

【目录】

简介
安装教程
具体的设置
常用的规则列表

 

 


简介

       很多人可能会问:AdGuard Home是干嘛用的?假如我们把整个互联网比喻成一个城市的供水,每个地区自来水厂提供的水质和你所在管网末端位置的不同,有些家庭会明智的选择使用前置净水器,可以解决管道中的二次污染、软化水质、阻止水垢、防止锈蚀、保护净水器,当然还有太阳能和燃气热水器等等,但最终享受干净水的是人。精致的家庭还会使用厨下式厨余垃圾处理器,而很多的家庭也许都不知道什么是前置净水器、什么是厨余处理器。互联网和供水一样,有大带宽和小带宽,有管网污染的问题,有被政府监控和被黑客偷窥的问题,还有烦人的广告问题,无论是视频前和视频中的广告,所以在入户光猫之后的主路由器上安装并使用私有DNS服务器(AdGuard Home),就可以有助于“清洗流量”。
       根据AdGuard Home 官网介绍,AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。
       简单的点讲就比如Google的8.8.8.8,阿里云的223.5.5.5,114的114.114.114.114,还有Cloudflare的1.1.1.1,这些都是提供DNS服务的公共DNS服务器。而AdGuard Home在给我们提供DNS服务的同时还提供去广告的功能,这就有点意思了吧~~

 

       博主是用PVE作为宿主机的环境,所以就在PVE系统里面安装了这个AdGuard Home,来看看怎么安装和使用吧。

一、安装教程

1、下载AdGuardHome_PVE-LXC.tar.gz镜像文件:打开下载地址https://dl.gxnas.com:1443,进入“Proxmox-VE(PVE虚拟平台)”文件夹,找到“AdGuardHome_PVE-LXC.tar.gz”,右键复制下载链接到迅雷下载;

2、通过SSH工具(本教程采用WinSCP),把下载的“AdGuardHome_PVE-LXC.tar.gz”,上传到PVE系统下的“/var/lib/vz/template/cache”里面;

 

3、通过网页访问PVE后台,点击右上角“创建CT”;

 

4、创建:LXC容器,“一般”标签栏的输入以下信息:
主机名称:自己随便写
密码:自己设置
确认密码:同上
然后点下一步

 

5、点“模板”标签栏的“模版”下拉菜单,选择“AdGuardHome_PVE-LXC.tar.gz”,下一步;

 

6、“根磁盘“标签设置磁盘大小2G,下一步;

 

7、”CPU“标签设置1核,下一步;

 

8、”内存“标签设置内存1024M ,交换分区用默认的512,下一步;

 

9、”网络“标签的IPv4可以根据自己的内网设置静态IP(本教程内网是192.168.1.X的号段,所以设置192.168.1.2/24),IPv6设置DHCP,下一步;

 

10、“DNS”标签这里不需要设置,直接下一步;

 

11、“确认”标签,最后确认一下信息,如果正确无误就勾选左下角的“创建后启动”再点“完成”。

 

二、初步的设置
1、回到PVE系统的“数据中心”,找到刚刚建立的AdGuard容器,点它进入控制台,输入登录的用户名root,回车,再输入之前设置的密码,输入ip addr回车,检查一下显示的IP地址是否与刚才安装时设置的IP地址一致;

 

2、输入ping baidu.com,回车,检查容器能否连通外网;有外网IP地址返回的表示外网连接正常,按一下Ctrl+C结束测试。

 

3、在局域网电脑的浏览器地址栏输入刚才安装AdGuardHome设置的IP:3000(比如我的是192.168.1.2:3000);

 

4、开始配置;

 

5、网页管理界面,我们用默认的端口,不需要更改,下一步;

 

6、身份认证,需要自己设置用户名和密码,下一步;

 

7、下一步;

 

8、打开仪表盘;

 

9、主界面是这样的;

 

10、点最上面的菜单栏“设置”-“常规设置”,这四个选项根据自己要求设置(博主勾了1、2、4),然后拉到下面,点保存;

 

11、点最上面的菜单栏“设置”-“DNS设置”,上游DNS这栏输入(由于每个人使用的宽带不同,所以上游DNS使用哪个,请根据自己的情况填写,后面会讲):

tls://dns.google
tls://1.1.1.1
tls://1.0.0.1

然后拉到下面点应用,会看到系统提示“上游DNS已更新”;

 

12、点最上面的菜单栏“过滤器”,“添加过滤器”,名称随意设置,地址输入https://hosts.nfz.moe/127.0.0.1/full/hosts,点“添加过滤器”;

 

13、看到系统提示“网址添加成功”后,点打叉关掉提示;

 

14、点“检查更新”;

 

15、系统更新完成会提示“所有过滤器已更新到最新”;

 

三、更改网关/路由的DNS
由于每个人使用的网关/路由都各有不同,因此这里不做具体描述。请自行把内网的DNS主服务器IP地址设置成我们刚刚安装的AdGuardHome的内网IP地址,DNS副服务器设置为了其他公共的DNS服务器IP(拒绝使用运营商的DNS)。博主的网关是自己编译的软路由openwrt X64的版本,具体的设置如下,大家借鉴一下吧。

 

四、最后来看看效果如何

 

五、官方网站及项目地址
1、AdGuard官网:https://adguard.com/
2、AdGuardHome项目地址:https://github.com/AdguardTeam/AdGuardHome

 


具体的设置

1、设置菜单

文字介绍已经很好理解了,按需设置即可。重点是以下几个,如果你尚处于单身状态,那么就不要开启,否则会影响生理卫生知识的学习。

  • 使用 AdGuard【家长控制】服务:如果家中有尚未成年的孩子,建议开启,屏蔽成人内容。
  • 强制安全搜索:在 Bing、Google、Yandex、YouTube 等网站上强制使用安全搜索,屏蔽 NSFW 内容。

2、DNS 设置

3、上游 DNS 服务器

AdGuard 文档中给出了一些知名的 DNS 服务器供选择。这里的上游 DNS 建议选择 DoT/​DoH 加密技术的服务器,可以防止 DNS 解析记录被劫持、篡改以及跟踪。缺点是可能对解析速度会有些许影响,毕竟 TCP 协议不如 UDP 来得有效率,且加解密需要一点时间,不过在机器性能不错且网络通畅的情况下其实是可以忽略的,都是毫秒级别的差距。根据所在网络环境的不同推荐两组选择:

  • 中国大陆网络环境推荐选择腾讯 (DNS­Pod) 和阿里的公共 DNS 。

    TIPS: 中国大陆不推荐使用海外的 DNS ,因为延迟很高且都受到了不同程度的干扰,可用性不高,强行设置只会得到减速效果或者报错。

    tls://dns.pub
    https://dns.pub/dns-query
    tls://dns.alidns.com
    https://dns.alidns.com/dns-query
  • 自由网络环境,比如海外的 VPS ,或者给代理软件做 DNS ,推荐使用 Google 和 Cloud­flare 的公共 DNS。

    TIPS: Google 的 DNS 似乎在中国大陆有着不错的可用性,一般会路由至 Google 香港的服务器节点。不过由于dns.google域名被污染无法解析,只能使用 IP 形式的 DoT 方案。

    tls://8.8.8.8
    tls://8.8.4.4
    tls://dns.google
    https://dns.google/dns-query
    tls://1.1.1.1
    tls://1.0.0.1
    https://dns.cloudflare.com/dns-query

以上分别使用了 DoT 和 DoH 两种技术组合,它们最大区别在于使用端口的不同。而关于这两个技术也许经常会看到类似的两种观点:

  • “443 端口经常被干扰,853 端口底层技术员不懂,国内的服务器不会去管。”
  • “443 端口正常流量国内不会管,853 端口想封是分分钟的事。”

不管他们孰是孰非,在没有可靠数据做支撑的情况下,小孩才做选择,我全都要。根据对不同网络环境的测试,有的网络都能用,有的网络只能使用其一,这需要根据自身所在网络环境实测,如果延迟很高或者运营商对其进行了封锁,那么就只能退而求其次了。

上游 DNS 服务器输入框下面有几个单选项,字面理解应该是解析策略、模式之类的选项,官方文档暂时没有相关介绍,根据字面含义和自身实际体验总结如下:

  • 负载均衡:使用加权随机算法来选择最快的服务器,用到了算法,属于玄学范畴了。
  • 并行请求:同时请求所有上游 DNS 服务器,取最快给出的响应结果,所以解析速度快,但解析出的 IP 延迟可能不是最低的。这反应到实际使用中可能是首次打开网页快,但后续的加载慢,比如图片可能很长时间才会显示。
  • 最快的 IP 地址:同时请求所有上游 DNS 服务器,在所有响应结果中选出延迟最低的 IP ,因为要等待所有上游 DNS 服务器响应结果,所以解析速度会很慢,但所解析的 IP 延迟理论上是最低的。反应到实际使用中可能是首次打开网页非常慢,甚至可能不能打开,要多刷新几次,但后续使用就非常流畅了。

博主个人倾向于选择负载均衡这个折中的方案,这个选择仁者见仁,没有所谓的最好一说。

Bootstrap DNS 服务器

Boot­strap DNS 服务器(引导 DNS 服务器)的作用只是解析上游 DoT/​DoH 技术 DNS 服务器的域名,所以这里需要填写使用 UDP 协议的传统 DNS 服务器 IP 地址。推荐使用当地运营商的 DNS ,因为延迟低解析快,然后再加几个公共 DNS 作为备胎。

设置完点击测试上游服务器,没有问题点保存即可。

4、DNS 服务设定

  • 速度限制0
  • 使用 EDNS :已知前面提及的上游 DNS 服务器都是支持 EDNS 技术的,它有助于获取到更合适的 CDN 节点,建议勾选。
  • 使用 DNSSEC : 用于效验 DNS 记录的签名,防止 DNS 缓存被投毒,建议勾选。勾选后会在日志页面请求列显示小绿锁图标。
  • 禁用 IPv6 :丢弃 IPv6 的 DNS 查询。在本地网络和网站都支持 IPv6 会优先使用 IPv6 去访问网站,但目前 IPv6 的建设还处于初级阶段,大多数地区的 IPv6 网络体验都一般。还有一些代理软件对 IPv6 支持不佳,开启后可能会影响国际互联网的访问。如果对此没有特殊需求,那么直勾选即可,这样既不影响 BT 软件连接 IPv6 网络,又可以优先使用 IPv4 来上网。如果只有 IPv4 ,那么是否勾选没有区别。

5、DNS 缓存配置

先简单科普一下 TTL ,它是英语 Time To Live 的简称,中文翻译为 “存活时间”。放在 DNS 解析中意为一条域名解析记录在 DNS 服务器中的存留时间,单位是秒。

正常情况下 TTL 默认 0 即可,即从上游 DNS 服务器获取 TTL 值。如果你所部署的网络环境到上游 DNS 服务器的延迟比较高,那么可以适当增加 TTL 值,让缓存更持久,短时间内请求同样域名的解析会直接从缓存中读取,实现秒解析。不过 TTL 值不宜过大,不然会导致记录不能及时更新,结果是网站无法正常打开。据博主观察目前多数域名的 TTL 值普遍在 300 以内,所以给出以下设置参考值:

  • 覆盖最小 TTL 值:600
  • 覆盖最大 TTL 值:3600

6、加密设置

设置管理页面使用 HTTPS 加密以及 Ad­Guard Home 自身的 DoH/​DoT 功能,如果不对外开放服务,只是在本地局域网使用是用不到的。对外开放 DNS 服务在中国大陆可能会有 “法律” 风险,而部署在国外网络速度缓慢,所以对于普通用户而言加密设置就成了摆设。

7、客户端设置

在这里可以单独设置每个设备单独使用的上游 DNS 及过滤规则,需要将设备 DNS 设置为 Ad­Guard Home 服务器的在 IP ,或者使用下面将要提到的 DHCP 设置。每个人的需求不一样,所以这个部分就不详细说明了。

8、DHCP 设置

使用 Ad­Guard Home 作为 DHCP 服务器去代替路由器上的 DHCP 服务器,这个功能的主要作用是自动分配 Ad­Guard Home 的 DNS 给到设备,然后配合客户端设置去做精细化 DNS 和过滤规则设置。除非是你的路由设备的 DHCP 功能缺斤少两,否则一般是不会不到的。目前这个功能处于实验阶段,稳定性还有待考证。有兴趣的小伙伴可以自己去深入研究,这里不做过多赘述。

9、过滤器菜单:DNS 封锁清单

这里是人民群众喜闻乐见的去广告环节。

吐槽:封锁清单这个词严重怀疑是机翻,而下面的绿色按钮是添加阻止列表

使用官方默认的 AdGuard DNS filter 规则的效果对于中国大陆的网络而言属于聊胜于无,所以需要添加一些其它的规则。然而规则并不是越多越好,多了会影解析速度,真正需要的是高质量。博主个人比较推荐 anti-AD 和 halflife 这两个规则。

规则列表 | 点击查看
名称 简介 地址
AdGuard DNS Filter AdGuard 官方维护的广告规则,涵盖多种过滤规则 https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt
AdAway AdAway 官方的去广告 Host 规则 https://adaway.org/hosts.txt
ADgk 适用于 AdGuard for Android 的去广告规则,去视频 APP 广告、开屏广告 https://banbendalao.coding.net/p/adgk/d/ADgk/git/raw/master/ADgk.txt
anti-AD 命中率高、兼容性强 https://anti-ad.net/easylist.txt
halflife 涵盖了 EasyList China、EasyList Lite、CJX 's Annoyance、乘风视频过滤规则,以及补充的其它规则 https://gitee.com/halflife/list/raw/master/ad.txt
EasyList Adblock Plus 官方维护的广告规则 https://easylist-downloads.adblockplus.org/easylist.txt
EasyList China 面向中文用户的 EasyList 去广告规则 https://easylist-downloads.adblockplus.org/easylistchina.txt
EasyPrivacy 反隐私跟踪、挖矿规则 https://easylist-downloads.adblockplus.org/easyprivacy.txt
Xinggsf 乘风通用 国内网站广告过滤规则 https://gitee.com/xinggsf/Adblock-Rule/raw/master/rule.txt
Xinggsf 乘风视频 视频网站广告过滤规则 https://gitee.com/xinggsf/Adblock-Rule/raw/master/mv.txt
Adblock Warning Removal List 去除禁止广告拦截提示规则 https://easylist-downloads.adblockplus.org/antiadblockfilters.txt

10、DNS 允许清单

在这里你可以设置排除封锁清单中的被屏蔽的域名。比如做淘宝客、广告联盟之类的人群可能会用得到,毕竟封锁清单基本涵盖了他们的业务范围。

11、DNS 重写

在这里你可以方便的把一个域名指向一个 IP ,简单来说这个功能相当于 hosts 。

12、已阻止服务

在这里你可以一键禁止访问一些热门网站和服务,比如 Face­book 、Twit­ter 。

13、自定义过滤规则

在这里你可以自定义符合 ad­block 语法或 Hosts 语法的规则,以及检查过滤域名是否被过滤。具体如何使用可以参考页面上的示例和官方文档。

到这里 Ad­Guard Home 的设置就算是介绍完了,一些细节上的东西就不做赘述了。有简体中文,而且 UI 逻辑很清晰,很容易上手。

点赞
  1. nbv0说道:
    Google Chrome Windows 10
    前阵子用adgh做op的上游dns但还是出现了域名污染现象,以至于即使可以翻墙看y2b也无法访问一些单纯被污染域名的网站。看了篇有关op dns解析流程的文章https://renyili.org/post/openwrt_dns_process/,但还是好奇,如果ssr设置的是绕过中国大陆ip模式那下方的dns解析设置项还有什么意义吗?根据我粗略的理解绕过ip模式应该是根据IP地址来分流,意味着在ssr分流前着已经经过一次dns解析了,那假如一个国外域名被污染,指向了一个国内的ip,那ssr不就不分流,该网址不就无法访问了吗 ?博主能讨论下绕过ip模式下op的dns解析流程吗?
    1. 博主说道:
      Google Chrome Windows 10
      关于OP里面DNS解析这个比较复杂,要具体看设置。会涉及到OP的LAN默认DNS的IP设置、梯子DNS的设置,如果你加了ADG插件,还需要看你的ADG的DNS设置,以及OP里面是否设置DNS强制劫持到ADG。你要是担心国外域名被污染,梯子的DNS一律用8.8.8.8就好了。
  2. nbv0说道:
    Google Chrome Windows 10
    在怕死我和酸酸乳中如果客户端的dns没有指向op的Dnsmasq的话域名白名单就会失效,而且有时候会用代理访问国内网站,比如说淘宝就会提示切换到全球站,所以正确做法是将adguard home设为op的上游dns服务器,而需要科学的客户端的dns设置到op。具体的可以看这里https://github.com/rufengsuixing/luci-app-adguardhome
    1. 博主说道:
      Google Chrome Windows 7
      感谢经验分享!
  3. nbv0说道:
    Google Chrome Windows 10
    openwrt的dns服务会被分为富强和国内,要完全让adguard home过滤广告的话还要在酸酸乳帕拉斯中设置dns服务器,但我设置后总是出现富强间歇性失效(其实我的openwrt跑在黑裙虚拟机里,用的博主推荐的固件,adguard也是运行在黑裙的docker里)。所以我的话是在每个设备上设置一遍dns服务器,但发现这样完全过滤不了广告,后来发现还要要禁用设备的ipv6,估计是ipv6的dns服务器指向了路由器,所以我干脆关闭了路由器的DHCPv6,这才实现了家里全设备去广告。不知道大家设置时有没有发生过类似问题,,,,,,,最后如果博主的openwrt固件能加入netdata插件就好了..........
    1. 博主说道:
      Google Chrome Windows 10
      1、我把OP的DNS全部设置成AD的IP,所以不管国内国外,流量都会走到AD再出去。目前一切正常,没有断流的现象,另外我没有IPV6,所以也不会出现去不了广告的问题。 2、OP的netdata我以前加过,然并卵,而且还消耗资源很多,所以就去掉了这个华而不实的东西。
      1. nbv0说道:
        Google Chrome Windows 10
        博主,网盘里显示的推荐op固件和自用op固件功能列表与实际的功能列表有出入
        1. 博主说道:
          Google Chrome Windows 10
          好的,我抽空重新编辑一下。

发表回复