什么是 AdGuard Home

AdGuard Home 是一款全网广告拦截与反跟踪软件,AdGuard Home 项目是著名广告拦截器提供商 AdGuard 开源的一个 DNS Server 版本。AdGuard Home 可以将广告与追踪相关的域名屏蔽,同时你不再需要安装任何客户端软件。AdGuard Home 的工作原理是在 DNS 的域名解析过程里拦截网页上的广告。

简单来说 AdGuard Home 是一个支持广告过滤和家长控制的开源公共 DNS 服务,如同 Google 的公共 DNS 服务 8.8.8.8。AdGuard Home 同时也支持 DNS over TLSDNS over HTTPS

项目地址:https://github.com/AdguardTeam/AdGuardHome

AdGuard Home 的主要功能介绍

  • 拦截随处可见的广告

  • 注重隐私保护

  • 家庭保护模式

  • 自定义过滤规则

在继续讲解前,我们先来看一看 AdGuard Home 强大的功能演示和管理后台。

安装 AdGuard Home

AdGuard Home 使用 Golang 开发,具有良好的原生跨平台性。它可以部署在 X86 架构的各种操作系统上,也可以部署在树莓派上,甚至你还可以借助 Docker 部署在群晖 NAS 上。

使用预编译的二进制版本安装

这里我们以 Linux 系统为例,其它系统可参考官方文档:https://tinyurl.com/y2a8u9dt 。

# 下载并解压 AdGuard Home
$ wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.98.1/AdGuardHome_linux_amd64.tar.gz
$ tar -zxvf AdGuardHome_linux_amd64.tar.gz  # 为了方便使用,我们将二进制文件拷贝到 PATH 所包含的位置
$ cd AdGuardHome_linux_amd64
$ cp ./AdGuardHome /usr/local/bin/  # 启动 AdGuard Home
$ AdGuardHome

上面的方法,很显然是在前台运行的。前台运行必然还是存在一些弊端的,比如:当前 SHELL 中断必然会引起程序中断等。如果你想长期稳定的运行 AdGuard Home,最后好方法必然是将 AdGuard Home 运行成一个服务。要想将 AdGuard Home 在各平台部署为服务也是很简单的,只需运行下面这一条命令就可实现。

# Linux 下使用的服务管理器是 systemd 、Upstart 或 SysV,macOS 下使用的服务管理器是 Launchd。
$ AdGuardHome -s install

AdGuard Home 服务安装后好,你可以使用以下命令来管理它。

# 启动 AdGuardHome 服务
$ AdGuardHome -s start  # 停止 AdGuardHome 服务
$ AdGuardHome -s stop   # 重启 AdGuardHome 服务
$ AdGuardHome -s restart    # 查看 AdGuardHome 服务状态
$ AdGuardHome -s status # 卸载 AdGuardHome 服务
$ AdGuardHome -s uninstall

使用 Docker 来安装

如果你会一点点 Docker 知识的话,我们当然还是建议你直接使用 Docker 来安装。虽然通过预编译的二进制版本安装已经很简单了,但如果使用 Docker 来安装,你会发现仅仅只需一条指令就可以搞定了。

$ docker pull adguard/adguardhome
# -v 参数后面指定的宿主机上的目录主要用作永久保存 AdGuard Home 的数据文件和配置文件,可自行根据实际情况修改。
$ docker run --name adguardhome -v /home/mike/workdir:/opt/adguardhome/work -v /home/mike/confdir:/opt/adguardhome/conf -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 68:68/tcp -p 68:68/udp -p 80:80/tcp -p 443:443/tcp -p 853:853/tcp -p 3000:3000/tcp -d adguard/adguardhome

你可能会发现上面一共是两条指令,前面不是说好了是一条指令的吗?是不是发现被骗了,我怎么可能骗你呢,这绝对是不可能的!

其实这两条指令,你只需直接执行第 2 条指令就可以完成所有安装操作了。这里分开写出来仅仅是为了完整演示 Docker 整个运行过程,能让一些还不会 Docker 的同学能更容易理解一些。前面既然啰嗦了这么多,这里就再延伸说一点 Docker 容器的基本管理操作。

# 启动 AdGuard Home 容器
$ docker start adguardhome
# 停止 AdGuard Home 容器
$ docker stop adguardhome
# 删除 AdGuard Home 容器
$ docker rm adguardhome

使用 AdGuard Home

使用默认配置来设置 AdGuard Home

运行 AdGuard Home 后,我们需要通过浏览器打开 http://IP:3000AdGuard Home 进行初始化设置。首次初始化会要求设置服务运行端口、账号、密码等信息,配置过程中设置的密码一定请牢记,下次登录管理后台时需要使用。

首先,我们点击 “开始配置” ,来设定网页管理界面和 DNS 服务的端口。

其次,点击 “下一步” 后,为 AdGuard Home 网页管理界面设置一个用户名和密码。

最后,点击 “下一步” 后,AdGuard Home 会展示以上配置的汇总信息。

至此,使用 AdGuard Home 默认配置的设置就算大功告成了。

使用 AdGuard Home 默认配置设置完成后,我们可以在「仪表盘」上看到 DNS 查询次数、被过滤器封锁的网站、查询 DNS 请求的客户端 IP 地址等等信息。

AdGuard Home 配置进阶

AdGuard Home 默认的配置比较简单,为了更强力地拦截广告,我们可以对 AdGuard Home 配置进行一些优化。

  1. 常规设置

AdGuard Home 默认配置的情况下只勾选了「使用过滤器和 Hosts 文件以拦截指定域名」这一个选项,你可以根据自身情况决定是否启用「使用 AdGuard 浏览安全网页服务」、「使用 AdGuard 家长控制服务」和「强制安全搜索」等特性。

不仅如此,你还可以很方便的屏蔽一些比较流行的网站。当然这些网站本来对我们都是不可用的,也就不用多此一举进行设置了,哈哈!

  1. 设置上游 DNS

AdGuard Home 默认使用 CloudflareDNS over HTTPS 作为上游服务器。如果你在国内使用 Cloudflare DNS 做为上游 DNS,可能延迟会比较高。

我们可以设置为国内的公共 DNS,如:腾讯的 119.29.29.29、阿里的 223.5.5.5114.114.114.114 等,但坏处是这些国内公共 DNS 暂时不支持 DNS over TLS

这里有一个比较折中的解决方法就是通过启用 「通过同时查询所有上游服务器以使用并行查询加速解析」选项来在每次查询的时候对所有的上游 DNS 同时查询,以加速解析速度。

  1. 过滤器

虽然 AdGuard Home 本身内置了比较知名的 AdGuardAdAway 广告过滤规则,但这些规则在国内显然有点水土不服。

如果你想要更完美的实现广告屏蔽还需要自己添加规则,比较幸运的是 AdGuard Home 是可以兼容 Adblock 过滤规则语法的。这样,你就可以很方便的使用一些比较知名的 Adblock 过滤规则,比如:由 Adblock Plus 团队维护的 EasyList

目前好用的广告过滤规则还是有很多的,它们都针对不同的用途。下面推荐一些比较常用的:

  1. EasyList China : 国内网站广告过滤的主规则。

链接:https://tinyurl.com/y2akdjs9

  1. EasyPrivacy : EasyPrivacy 是隐私保护,不被跟踪。

链接:https://tinyurl.com/yhzol5c

  1. CJX's Annoyance List : 过滤烦人的自我推广,并补充 EasyPrivacy 隐私规则。

链接:https://tinyurl.com/y4udbqvz

  1. 广告净化器规则 : 支持国内大部分视频网站的广告过滤。

链接:https://tinyurl.com/y2hvxhoa

  1. I don't care about cookies : 我不关心 Cookie 的问题,屏蔽网站的 cookies 相关的警告。

链接:https://tinyurl.com/y6k5q624

除了使用已有的过滤规则外,当然你也可以根据自己的需求自定义过滤规则,要自定义过滤规则其实也很简单。

下面是自定义过滤规则的一些语法说明。

||example.org^ – 拦截 example.org 域名及其所有子域名
@@||example.org^ – 放行 example.org 及其所有子域名
127.0.0.1 example.org – 将会把 example.org(但不包括它的子域名)解析到 127.0.0.1。
! 注释符号,表示这是一行注释
# 这也是注释符号,同样表示这是一行注释
/REGEX/ – 正则表达式模式

更多规则可以参考官方帮助文档:https://kb.adguard.com/en/general/dns-filtering-syntax

  1. 查询日志

AdGuard Home 管理界面中也为我们提供了 DNS 请求日志查询功能,在这里,我们不但能看见所有设备最近 5000 条的 DNS 请求日志记录。你还可以根据 DNS 请求日志记录来针对某个域名进行快速的拦截和放行操作。

  1. 调整配置参数,以提升 QPS 能力

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

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

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

  • blocked_response_ttl : TTL 缓存时间,默认值是 10,建议设置为 60 。

这里在把 AdGuard Home 的配置文件完整版本也展示一下,有兴趣的同学可以自行研究下其它参数的用途哟!。

$ cat AdGuardHome.yaml    bind_host: 0.0.0.0
bind_port: 80
auth_name: mike
auth_pass: "123456"
language: zh-cn
rlimit_nofile: 0
dns:    bind_host: 0.0.0.0  port: 53    protection_enabled: true    filtering_enabled: true blocking_mode: nxdomain blocked_response_ttl: 60    querylog_enabled: true  ratelimit: 0    ratelimit_whitelist: [] refuse_any: true    bootstrap_dns:  - 1.1.1.1:53    - 1.0.0.1:53    all_servers: true   allowed_clients: [] disallowed_clients: []  blocked_hosts: []   parental_block_host: ""   safebrowsing_block_host: ""   blocked_services: []    parental_sensitivity: 13    parental_enabled: true  safesearch_enabled: true    safebrowsing_enabled: true  resolveraddress: ""   rewrites: []    upstream_dns:   - https://1.1.1.1/dns-query - https://1.0.0.1/dns-query - 119.29.29.29  - 223.5.5.5
tls:    enabled: false  server_name: ""   force_https: false  port_https: 443 port_dns_over_tls: 853  certificate_chain: "" private_key: ""
filters:
- enabled: true url: https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt name: AdGuard Simplified Domain Names filter    id: 1
- enabled: false    url: https://adaway.org/hosts.txt   name: AdAway    id: 2
- enabled: false    url: https://hosts-file.net/ad_servers.txt  name: hpHosts - Ad and Tracking servers only    id: 3
- enabled: false    url: https://www.malwaredomainlist.com/hostslist/hosts.txt  name: MalwareDomainList.com Hosts List  id: 4
- enabled: true url: https://easylist-downloads.adblockplus.org/easylistchina.txt   name: EasyList China    id: 1569209532
user_rules:
- '@@mps.ts'
dhcp:   enabled: false  interface_name: ""    gateway_ip: ""    subnet_mask: ""   range_start: ""   range_end: "" lease_duration: 86400   icmp_timeout_msec: 1000
clients: []
log_file: ""
verbose: false
schema_version: 4

设置客户端 DNS

所有以上设置完成后,最后当然是修改所有客户端的 DNS 设置,来享用 AdGuard Home 带来的强大的去广告功能。

这个其实真的不用写,我想聪明的你应该都知道这个怎么设置。写这个标题仅仅是为了保持文档完整性,如果你真的不会设置,那就请自行使用「一些好用」的搜索引擎搜索相关方法吧!

总结

AdGuard Home 不但支持了 macOSWindowsLinux、树莓派等多个系统平台,也提供了二进制和 Docker 的部署方式,让安装变得非常简单。

AdGuard Home 自身提供的强大和直观的管理和统计系统,让它使用起来也是非常方便的。如果你打算自建一个支持去广告功能的公共 DNSAdGuard Home 是非常值得一试的不二选择。

参考文档

  1. https://www.google.com

  2. https://zhuanlan.zhihu.com/p/56804257

  3. https://www.xiaoz.me/archives/12318

  4. https://www.yangcs.net/posts/adguard-home/

  5. https://github.com/AdguardTeam/AdGuardHome#getting-started

你可能还喜欢

点击下方图片即可阅读

使用 Kind 在 5 分钟内快速部署一个 Kubernetes 高可用集群

用上这个神器后,广告从此去无忧!(全平台免费支持,无需安装任何客户端软件)...相关推荐

  1. sqldbx连不上oracle,SqlDbx连接oracle(无需安装Oracle客户端)

    下载地址:https://download.csdn.net/download/xzplinke/10428957 解压SqlDbx.zip,将SqlDbx放到C:盘根目录(C:\SqlDbx 路径是 ...

  2. 你会在命令行下高效管理 Github 上的项目吗,用上这个神器后助你秒实现!

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 对于大多数使用 Git 作为版本管理的技术人员来说,应该都接触过 GitHub.GitHub 就像技术人员的淘宝一 ...

  3. ckplayer html5 添加广告,ewebeditor下利用ckplayer增加html5 (mp4)全平台的支持

    学校数字化平台富文本编辑器一直用的ewebeditor,应该说非常的好,支持常用office文档的直接导入,极大的方便了老师们资料的上传,最近在规划整个数字化校园向全平台改版,框架采用bootstra ...

  4. 手机上安装FTP客户端软件(AndFTP),实现通过手机访问计算机FTP服务器

    服务器连接工具: IIS7服务器管理工具是一款windows全系下用于连接并操控基于windows和linux系统的VPS.VNC.FTP等远程服务器.云服务器的管理工具. 界面简单明了,操作易上手, ...

  5. pppoe linux软件,在Ubuntu 18.04上编译安装pppoe客户端软件

    PPPoE(以太网上的点对点协议Point-to-Point Protocol over Ethernet)是许多DSL Internet服务提供商使用的协议. RP-PPPoE是Linux的免费PP ...

  6. fileinput.js php,JS文件上传神器bootstrap fileinput的解析

    这篇文章主要介绍了JS文件上传神器Bootstrap FileInput,样式非常美观,并且支持上传文件预览,ajax同步或异步上传,拖曳文件上传等炫酷的功能,具有一定的参考价值,感兴趣的小伙伴们可以 ...

  7. 全平台生产力神器-utools

    记我记一次下载utools 的时候是有本机搜索软件.文件的需求,也用过一段时间的wox,但是后面用了utools 就果断弃了: 今日乘着给同事推荐这款软件的同时写个文安利下还没用过的同学 下载和安装 ...

  8. dd-wrt 去广告_如何在DD-WRT上使用Pixelserv删除广告

    dd-wrt 去广告 There are numerous ways to block advertisements in your browser, but what if you could bl ...

  9. 【Google Play】应用 “更新被拒“ 后续处理 ( 上传新版本后 , 一定要停用被拒的版本, 才可以通过审核 | 停用被拒的版本 | 送审 )

    Google Play 上架完整流程 系列文章目录 [Google Play]创建 Google 开发者账号 ( 注册邮箱账号 | 创建开发者账号 ) [Google Play]创建并设置应用 ( 访 ...

  10. Mac解压Rar,7z,Zip,Winrar?Mac解压缩软件测评,推荐Mac上免费好用的解压软件,高效解压神器帮您解决苹果电脑的解压缩问题

    Mac电脑自带的的Archive Utility无法解压rar格式,如何在Mac上解压Rar,7z呢?Mac上有没有像window一样能下载7zip,winrar这类的解压软件呢,肯定可以.但在主流的 ...

最新文章

  1. C#枚举类型和结构体
  2. 什么是Servlet?
  3. 怎样在谷歌浏览器上加载金山词霸的取词插件?
  4. 怎么在苹果Mac虚拟机上安装Win7
  5. jquery css 定义背景不重复
  6. centos akonadi mysql,MySQL数据库之在CentOS7上安装MySQL5.7
  7. LeetCode MySQL 1141. 查询近30天活跃用户数
  8. python爬电影_零基础Python爬虫实现(爬取最新电影排行)
  9. Python 操作 DB2 库_亲测可用
  10. CPU卡密钥管理系统
  11. Elasticsearch(036):es中批量操作之mget(批量查询)
  12. 识别到硬盘 计算机不显示盘符,Win10系统下移动硬盘可以识别但是不显示盘符的解决方法...
  13. BIM设计/工程设计图形工作站硬件配置方案详解
  14. 计算机自动维护有用吗,Win10怎么开启自动维护功能?系统自动维护有什么作用?...
  15. xftp无法显示远程文件夹
  16. 软件测试的工作流程是什么?
  17. Java中Set接口
  18. 排序-JAVA实现【四】堆排序
  19. 怎样选择适合您的EDI供应商?
  20. 用vs画出马来西亚国旗

热门文章

  1. 如何手动控制Mac的风扇
  2. linux做单臂路由,linux做单臂路由实现trunk 使vlan之间通信
  3. 一个华为人在华为工作十年的感悟 --徐家骏
  4. 【VALSE 2019 PPT】香港科技大学沈劭劼最新研究-《无人机视觉感知与导航》-总结
  5. [HTML] 百度搜索框的基本实现 源码
  6. [渝粤教育] 南通职业大学 艺术导论2021 参考 资料
  7. 用友u8系统管理服务器,用友U8服务软件建立新账套的教程
  8. 微信开发工具安装写入失败
  9. 详解3D结构光如何标定
  10. 爬虫初识(爬取dytt电影列表及下载地址)