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

file


本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux。linux

「运维之美」是一个有情怀、有态度,专一于 Linux 运维相关技术文章分享的公众号。公众号致力于为广大运维工做者分享各种技术文章和发布最前沿的科技信息。公众号的核心理念是:分享,咱们认为只有分享才能使咱们的团体更强大。若是你想第一时间获取最新技术文章,欢迎关注咱们!git

公众号做者 Mike,一个月薪 3000 的杂工。从事 IT 相关工做 15+ 年,热衷于互联网技术领域,认同开源文化,对运维相关技术有本身独特的看法。很愿意将本身积累的经验、心得、技能与你们分享交流,篇篇干货不要错过哟。若是你想联系到我,可关注公众号获取相关信息。github


什么是 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 HTTPSdocker

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

AdGuard Home 的主要功能介绍浏览器

  • 拦截随处可见的广告
  • 注重隐私保护
  • 家庭保护模式
  • 自定义过滤规则

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

安装 AdGuard Home

AdGuard Home 使用 Golang 开发,具备良好的原生跨平台性。它能够部署在 X86 架构的各类操做系统上,也能够部署在树莓派上,甚至你还能够借助 Docker 部署在群晖 NAS 上。安全

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

这里咱们以 Linux 系统为例,其它系统可参考官方帮助文档:https://github.com/AdguardTeam/AdGuardHome/wiki/Getting-Started#installation 。服务器

# 下载并解压 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://easylist-downloads.adblockplus.org/easylistchina.txt

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

连接:https://easylist-downloads.adblockplus.org/easyprivacy.txt

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

连接:https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt

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

连接:http://tools.yiclear.com/ChinaList2.0.txt

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

连接:https://www.i-dont-care-about-cookies.eu/abp/

除了使用已有的过滤规则外,固然你也能够根据本身的需求自定义过滤规则,要自定义过滤规则其实也很简单。

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

||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


相关文章
相关标签/搜索