AdGuardHome 安装及部署教程

admin
2021-04-29 / 0 评论 / 40,700 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2022年11月21日,已超过730天没有更新,若内容或图片失效,请留言反馈。

AdGuardHome是什么

AdGuardHome 是一款全网广告拦截与反跟踪软件。它是一个开源的 DNS 服务器,部署方便、UI 友好易用,有着防污染、防跟踪、防篡改的能力,其次才是它的去广告、反跟踪功能,是通过重定向 DNS 解析记录实现的。

官网地址

项目GitHub地址

项目Docker地址

AdGuard Home 去广告效果怎样?

既然有去广告功能,自然还是要讨论它的去广告效果的。不过在这里博主要给小伙伴们直接泼一盆冷水了,广告的种类和形态是多样的,不要指望一个 DNS 能把所有的广告消灭干净了。

对于 PC 端的网页广告效果最好的有且仅有浏览器插件,如果配合 Ad­Guard Home 在广告到达浏览器之前进行阻挡一些会给设备节省不少的计算开销,理论上来说会起到一定的省电效果,但估计也没人会在意。如果只是单纯的使用 Ad­Guard Home 并没有什么效果,少量的被拦截的广告会在页面上留下一个空白区域。

对于手机上的广告最直观的感受是手机收到的推送广告明显减少了,然后是部分 App 的开屏广告消失了,还是能起到一定作用的。对于 ADUI 这样的广告级魔改安卓系统效果尤其明显

AdGuard Home安装教程

1、开放端口

`53`:DNS 端口。即其他设备访问 AdGuard Home 进行 DNS 解析的默认端口。因为部分系统不支持自定义 DNS 端口,所以不建议自定义。部署前务必要查看是否有其它程序占用。
`67, 68`: DHCP 端口。除非想代替你路由上的 DHCP 服务器,否则用不到。
`80`: 管理页面默认 HTTP 端口。可忽略,在初始化页面设置管理端口为 `3000` 端口即可。
`443`:HTTPS 和 DoH 端口。本地内网环境不需要。
`853`:DoT 端口。不使用相关功能可忽略。
`3000`:初始化设置端口。除非通过配置文件去设置,否则必须开启。

2、自动安装(Linux和Mac)

在终端中运行以下命令:

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

如果提示 curl: command not found ,那是因为没装 Curl ubuntu/debian 系统安装 Curl 方法:

apt-get install curl -y

centos 系统安装 Curl 方法:

yum install curl -y

3、手动安装(Linux x64)

在终端中运行以下命令:

wget https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz
tar xvf AdGuardHome_linux_amd64.tar.gz

进入解压目录执行以下命令安装

cd AdGuardHome
./AdGuardHome -s install

4、Windows安装

前往 AdGuard Home 官网下载安装包。
下载二进制文件

使用浏览器 / 下载工具下载:https://static.adguard.com/adguardhome/edge/AdGuardHome_windows_amd64.zip
解压压缩包得到 AdGuardHome.exe 文件

AdGuardHome.exe 移动到 C:\Program Files\AdGuard_Home 文件夹中

以管理员身份打开命令提示符,执行以下命令

cd "C:\Program Files\AdGuard_Home"
.\AdGuardHome.exe --service install


当提示 AdGuard Home is successfully installed and will automatically start on boot. 即表示 AdGuard Home 在当前系统上安装成功。在命令行中会显示管理后台的地址与端口,默认为 http://IP:3000

5、Docker安装(Linux x64)

(1)Bridge 网络模式

docker run -d \
    --name adguardhome \
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
    -p 53:53/tcp \
    -p 53:53/udp \
    -p 3000:3000/tcp \
    adguard/adguardhome

(2)Host 网络模式

Host 网络模式直接使用宿主机的网络,没有网络隔离,不需要考虑容器端口的映射,在容器启动后可以自由调整被占用的端口。适合在本机使用 (lo­cal­host),或者直通外网的设备对外开放服务,就比如 VPS 、主路由。

docker run -d \
    --name adguardhome \
    --restart unless-stopped \
    --log-opt max-size=1m \
    --network host \
    -v $PWD/adguardhome/work:/opt/adguardhome/work \
    -v $PWD/adguardhome/conf:/opt/adguardhome/conf \
    adguard/adguardhome

AdGuard Home设置教程

1、初始化设置

使用网页浏览器访问 IP + 3000 端口即可进入到 Ad­Guard Home 的初始化界面,比如 IP 是 10.0.0.53,那么就访问 http://10.0.0.53:3000

接着是监听接口(网卡)和端口设置,根据不同的网络模式和实际情况需要作出不同的修改

然后是设置管理用户名和密码,后面都是直接下一步:

完事之后输入用户名和密码登录,就来到了仪表盘页面。

至此 Ad­Guard Home 就部署完成了。

2、高级配置


(1)常规设置

  • 过滤器更新间隔:DNS 过滤清单默认更新间隔,一般为 3 天 - 7 天
  • 使用 AdGuard 「浏览安全」网页服务:作用与 Chrome 网页安全性检查类似,开启后,当用户访问存在潜在威胁的网站时,AdGuard 会主动拦截并弹出提示
  • 使用 AdGuard 「家长控制」 服务:如果家中有尚未成年的孩子,建议开启,避免访问不良网站
  • 强制安全搜索:隐藏 Bing、Google、Yandex、YouTube 网站上 NSFW 等不适宜的内容
  • 查询记录保留时间:AdGuard Home 服务端采用 Sqlite 文件数据库存储日志,长时间保留可能会降低运行速度,同时占用大量的储存空间,家庭用户一般保留 24 小时 - 7 天即可
  • 统计数据保留时间:用于仪表盘的数据展示,一般保留 24 小时 - 7 天即可

(2)DNS 设置

  • 上游 DNS 服务器:AdGuard Home 的上游 DNS 服务器,可参考下方推荐列表,一般保留 1 - 2 个即可。AdGuard Home 除了可以作为广告过滤网关,如果设置了纯净 DNS 后,还可以避免运营商的 DNS 劫持
tls://dot.360.cn
https://doh.360.cn/dns-query
tls://dns.pub
https://dns.pub/dns-query
tls://dns.alidns.com
https://dns.alidns.com/dns-query
tls://dns.ipv6dns.com
https://dns.ipv6dns.com/dns-query
  • BootStrap DNS 服务器地址:作为 DoH / DoT DNS 的前置 DNS 解析器,可参考下方推荐列表
119.29.29.29
223.5.5.5
180.76.76.76
2400:3200::1
2400:da00::6666
240C::6666
  • 查询方式、速度限制、EDNS、DNSSEC、拦截模式、DNS 缓存设置、访问设置可根据需要进行调整,一般保持默认设置即可
  • 速度限制:0
  • 使用 EDNS :已知前面提及的上游 DNS 服务器都是支持 EDNS 技术的,它有助于获取到更合适的 CDN 节点,建议勾选。
  • 使用 DNSSEC : 用于效验 DNS 记录的签名,防止 DNS 缓存被投毒,建议勾选。勾选后会在日志页面请求列显示小绿锁图标。
  • 禁用 IPv6 :丢弃 IPv6 的 DNS 查询。在本地网络和网站都支持 IPv6 会优先使用 IPv6 去访问网站,但目前 IPv6 的建设还处于初级阶段,大多数地区的 IPv6 网络体验都一般。还有一些代理软件对 IPv6 支持不佳,开启后可能会影响国际互联网的访问。如果对此没有特殊需求,那么直勾选即可,这样既不影响 BT 软件连接 IPv6 网络,又可以优先使用 IPv4 来上网。如果只有 IPv4 ,那么是否勾选没有区别
  • DNS 缓存配置,目前多数域名的 TTL 值普遍在 300 以内,所以给出以下设置参考值:覆盖最小 TTL 值:600;覆盖最大 TTL 值:3600

(3) DNS 封锁清单

为了更好地发挥 AdGuard Home 去广告的功能,仅依靠默认的过滤规则是不够的,但也不宜过多,过多的过滤规则会影响解析的速度,各位可以根据需要添加过滤规则。

halflife
https://raw.githubusercontent.com/o0HalfLife0o/list/master/ad.txt

anti-AD
https://anti-ad.net/easylist.txt

neoHosts
https://cdn.jsdelivr.net/gh/neoFelhz/neohosts@gh-pages/full/hosts.txt

大圣净化 - 针对国内视频网站
https://raw.githubusercontent.com/jdlingyu/ad-wars/master/hosts

adgk手机去广告规则
https://raw.githubusercontent.com/banbendalao/ADgk/master/ADgk.txt

广告终结者
http://sub.adtchrome.com/adt-chinalist-easylist.txt

Adbyby
https://raw.githubusercontent.com/adbyby/xwhyc-rules/master/lazy.txt

EasyList China+EasyList
https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt

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

(4) DNS允许清单

anti-ad白名单
https://raw.githubusercontent.com/privacy-protection-tools/dead-horse/master/anti-ad-white-list.txt

filter_whitelist
https://raw.githubusercontent.com/hl2guide/Filterlist-for-AdGuard/master/filter_whitelist.txt

LWJ's white list
https://raw.githubusercontent.com/liwenjie119/adg-rules/master/white.txt

DNS允许白名单
https://raw.githubusercontent.com/ChengJi-e/AFDNS/master/QD.txt

AdGuard Home 所有的配置参数都保存在一个名为 AdGuardHome.yaml 的配置文件中,这个配置文件默认路径通常为 AdGuard Home 二进制文件 AdGuardHome 所在的目录。

这里我们只需调整以下两个参数,就是可以明显提升 AdGuard Home 的 QPS 能力。

  • ratelimit : DDoS保护,客户端每秒接收的数据包数。默认值是 20,建议禁用该参数(将值改为 0)。
  • blocked_response_ttl : 缓存时间,默认值是 10,建议设置为 60 。

(5)开启DoH/DoT

设置一个DNS的解析域名并申请SSL证书,进入加密设置,勾选启用加密,输入自己刚刚设置好的域名,HTTPS端口填写没有被占用的端口,粘贴好SSL证书和秘钥后保存配置即大功告成,宝塔面板反代http://ip:8080并开启SSL。

在设备上使用 AdGuard Home DNS

最后你可以在 Ad­Guard Home 的设置指导页面找到相应系统的 DNS 设置方法,先不要着急在路由器上使用,建议先设置电脑或手机,通过访问一些网站来测试是否能正常解析。正常的情况下在仪表盘界面会有统计信息,在查询日志界面你会看到解析的详细记录信息。

完成 AdGuard Home 的设置后,便可将 AdGuard Home 的 DNS 地址部署到局域网设备上。

1、更改路由器 DNS 地址

不同品牌路由器修改的方法各有差异,具体步骤可参照说明书或网上的教程(路由器型号 + 更改 DNS),下方以 Redmi AC2100 路由器为例。

打开并登录路由器的后台管理页面。

在局域网设置中找到 DNS 设置,将首选 DNS 服务器更改为 AdGuard Home 的 DNS 地址,可设置为其它的 DNS 服务商,避免因 AdGuard Home 服务器宕机而导致局域网无法访问互联网。更改完成后点击保存即可。在路由器更改 DNS 后,局域网内的所有设备的 DNS 解析都会通过 AdGuard Home DNS 完成,实现过滤广告与反隐私跟踪。

2、更改手机 DNS 地址

  • 进入「设定 - 网络和互联网 - Wi-Fi」,点击当前已连接网络的一旁的设置按钮,在 Wi-Fi 详情信息页面点击「编辑」按钮
  • 找到「IP 设定」
  • 分别输入该设备的 IP、网关与 AdGuard Home 服务器地址

3、 iOS 设备

  • 进入「设置 - 无线局域网」,点击当前已连接网络的名称
  • 在 Wi-Fi 详情信息页面找到「配置 DNS」
  • 切换为手动设置,并输入 AdGuard Home 服务器地址

4、更改电脑 DNS 地址



  • 打开「Windows 设置 - 网络和 Internet」,点击「更改适配器选项」
  • 选中有线 / 无线网卡,点击工具栏「更改此连接的设置」
  • 找到「Internet 协议版本 4」,点击「属性」按钮
  • 填写 DNS 服务器,点击「编辑」按钮

常见问题

1、端口冲突

在 Linux 设备上运行 AdGuard Home,通常会出现 53(本地 DNS 服务器)、68(DHCP 客户端)、80(Http)、443(Https) 端口冲突的问题,可以通过netstat -tunlp | grep 端口号 查询占用进程。有两种解决方案:使用不同端口、停用冲突进程。
如果是通过 Docker 方式运行 AdGuard Home,出现 listen udp 0.0.0.0:53: bind: address already in use 的提示,需要手动处理,方法如下:

#停止 DNSStubListener
systemctl stop systemd-resolved

#创建文件夹(如果不存在)
mkdir /etc/systemd/resolved.conf.d/

#使用 Nano 创建配置文件2021-04-29 16:16:00 星期四
nano /etc/systemd/resolved.conf.d/adguardhome.conf

在编辑器中粘贴以下内容:

[Resolve]
DNS=127.0.0.1
DNSStubListener=no

保存后执行以下命令。

#创建备份
sudo mv /etc/resolv.conf /etc/resolv.conf.backup

#将 /etc/resolv.conf 链接至 /run/systemd/resolve/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

#重启 DNSStubListener
systemctl restart systemd-resolved

完成后使用 netstat -tunlp | grep 53 命令检查是否依旧有进程占用 53 端口,如无冲突,重启 AdGuard Home 容器即可。

2、平均处理时间过长?

以下几个因素会使 AdGuard Home 的处理时间过长:

  • 本地到上游DNS的速度:如果本地运营商的 DNS 没有 DNS 劫持、投毒的问题,建议使用运营商 DNS + 公共 DNS 的方案,DNS 速度可以通过 Ping 值比较。并在 AdGuard Home 中选择以「并行请求」的方式处理 DNS 请求
  • 浏览安全、家庭控制与强制安全搜索服务:以上三个功能,在 DNS 请求时不会经过 DNS 缓存,直接向上游 DNS 服务器请求,从而减慢 AdGuard Home 的处理速度
  • IPv6:如果使用的宽带、校园网不支持 IPv6,可以禁用解析 IPv6,提高响应速度
  • 过滤规则:过多的过滤规则会影响响应速度,宁缺毋滥,选择最合适自己的规则,一般保留 3 - 4 个广告过滤规则即可。
  • 统计周期: 在完成以上优化后,发现平均处理时间并没有太大改变,使用体验上也并不慢,有可能是因为统计周期过长,将优化前的结果计入,导致优化前后的结果无太大差异。不妨将仪表盘的统计周期缩短为 24 小时再看看。
  • 完成以上步骤后使用体验比没有使用 AdGuard Home 还要糟糕,问题有亿点严重了。这个时候需要查找 AdGuard Home 的日志,寻找问题的原因。
7

评论

博主关闭了所有页面的评论