AdGuard Home 安装使用教程
原文链接:使用 Envoy 和 AdGuard Home 阻挡烦人的广告
通常我们使用网络时,宽带运营商会为我们分配一个 DNS 服务器。这个 DNS 通常是最快的,距离最近的服务器,但会有很多问题,比如:
- 访问某些网络服务很缓慢,比如 Apple 的 iCloud 服务。
- 比较担心安全问题,希望能通过设置 DNS 来保证你访问安全的网站。
- 厌烦了每当你输入一个不正确的网址,运营商总会给你跳转到一个充满广告的界面。
这个时候我们就需要自定义 DNS,自定义 DNS 不仅能够加快网页开启的速度,还能够提高浏览网页的安全性。更重要的一点是,如果你使用过 Google Chrome
,应该知道 Google 未来将会限制“拦截广告”的扩展,要想解决此问题只能装个全局的拦截广告软件或者直接从 DNS 服务器层面拦截广告(如果你不想换浏览器)。
AdGuard Home 是一款全网广告拦截与反跟踪软件,可以将广告与追踪相关的域名屏蔽,指向空的主机(DNS 黑洞)。简单来说它就是一个开源的公共 DNS 服务,使用 Go 语言开发,支持家长控制和广告过滤!关键是它还支持 DNS over TLS
和 DNS over HTTPS
,可以运行在 x86 Linux,树莓派上,也可以通过 Docker
部署在群晖 NAS 上。
1. AdGuard Home 安装
AdGuard Home 的安装方法根据你所使用的平台而有所不同,它的二进制文件位于 https://github.com/AdguardTeam/AdGuardHome/releases,可以根据自己的平台下载最新版本。MacOS 的安装方法如下:
# 下载 AdGuard Home
$ wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.98.1/AdGuardHome_MacOS.zip# 解压并进入 AdGuardHome_MacOS 目录
$ unzip AdGuardHome_MacOS.zip && cd AdGuardHome_MacOS# 将二进制文件拷贝到 $PATH
$ cp ./AdGuardHome /usr/local/bin/# 创建 Launch Daemon 的 plist 文件并启动服务
$ AdGuardHome -s install
现在就可以看到服务的配置和状态信息了:
$ sudo launchctl list AdGuardHome{"StandardOutPath" = "/var/log/AdGuardHome.stdout.log";"LimitLoadToSessionType" = "System";"StandardErrorPath" = "/var/log/AdGuardHome.stderr.log";"Label" = "AdGuardHome";"TimeOut" = 30;"OnDemand" = false;"LastExitStatus" = 0;"PID" = 1464;"Program" = "/usr/local/bin/AdGuardHome";"ProgramArguments" = ("/usr/local/bin/AdGuardHome";"-s";"run";);
};
plist 文件位于 /Library/LaunchDaemons/
目录下:
$ cat /Library/LaunchDaemons/AdGuardHome.plist<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd" >
<plist version='1.0'>
<dict>
<key>Label</key><string>AdGuardHome</string>
<key>ProgramArguments</key>
<array><string>/usr/local/bin/AdGuardHome</string><string>-s</string><string>run</string></array><key>WorkingDirectory</key><string>/Users/freya/Downloads/Compressed/AdGuardHome_MacOS</string>
<key>SessionCreate</key><false/>
<key>KeepAlive</key><true/>
<key>RunAtLoad</key><true/>
<key>Disabled</key><false/>
<key>StandardOutPath</key>
<string>/var/log/AdGuardHome.stdout.log</string>
<key>StandardErrorPath</key>
<string>/var/log/AdGuardHome.stderr.log</string>
</dict>
</plist>
对 Launch Daemon 不熟悉的同学可以参考 Mac OS X 的 Launch Daemon / Agent。
查看端口号:
$ sudo lsof -iTCP -sTCP:LISTEN -P -n|grep AdGuard
AdGuardHo 9990 root 3u IPv6 0xb76d091ec878f951 0t0 TCP *:3000 (LISTEN)
打开浏览器,输入网址 http://127.0.0.1:3000/
即可访问 AdGuard Home 的管理界面。
点击“开始配置”,然后设定网页管理界面和 DNS 服务的端口。
点击“下一步”设置用户名和密码。
最后点击“下一步”就大功告成了。
在仪表盘上,我们可以看到 DNS 查询次数、被过滤器拦截的网站、查询 DNS 请求的客户端地址等等信息。
现在再查看端口号,管理界面会变成你刚刚设定的端口,另外还会多出一个 DNS 服务的端口:
$ sudo lsof -iTCP -sTCP:LISTEN -P -n|grep AdGuard
AdGuardHo 10619 root 11u IPv6 0xb76d091eb6671751 0t0 TCP *:53 (LISTEN)
AdGuardHo 10619 root 12u IPv6 0xb76d091ebc3c7751 0t0 TCP *:5300 (LISTEN)$ sudo lsof -iUDP -P -n|grep AdGuard
AdGuardHo 10619 root 10u IPv6 0xb76d091eb89601c1 0t0 UDP *:53
2. 配置优化
默认的配置比较简单,为了更强力地拦截广告,我们可以对配置进行优化。
常规设置
勾选【使用过滤器和 Hosts 文件以拦截指定域名】、【使用 AdGuard 浏览安全网页服务】、【强制安全搜索】。如果你想拦截成人网站,也可以勾选【使用 AdGuard 家长控制服务】。
过滤器
虽然 AdGuard 本身提供了 AdGuard
、AdAway
的广告过滤规则,但在中国有点水土不服,如果要想更完美的实现广告屏蔽还需要自己添加规则,AdGuard 可以兼容 Adblock
的语法。最知名的过滤规则 EasyList 就是由 Adblock Plus 团队维护,过滤规则往往是一个 txt
文件,在文件的开头部分会显示规则的最后更新日期。
推荐广告过滤规则:
EasyList China : 国内网站广告过滤的主规则。
EasyPrivacy : EasyPrivacy 是隐私保护,不被跟踪。
CJX’s Annoyance List : 过滤烦人的自我推广,并补充EasyPrivacy隐私规则。
广告净化器规则 : 国内大部分视频网站的广告过滤。
I don’t care about cookies : 我不关心 Cookie 的问题,屏蔽网站的 cookies 相关的警告。
优酷网如果播放无限加载,那在自定义静态规则里加入一条规则 @@mp4.ts
(参考下图)。
上游 DNS 设置
官方默认使用 Cloudflare
的 DNS over HTTPS 作为上游服务器,在国内可能请求上游 DNS 延迟比较高,可以加上或替换国内的 DNS。我自己另外加了中科大的两组无污染 DNS,每次查询的时候会对所有的上游 DNS 同时查询,加速解析。
查询日志
在这个界面里可以看见所有设备的 DNS 查询日志,可以下载整个日志文件,也可以针对某个域名进行快速拦截和放行。
提升 QPS
有两个参数可以明显提升 QPS:
ratelimit
: DDoS 保护,客户端每秒接收的数据包数。建议禁用该参数(将值改为 0),默认值是 20。
blocked_response_ttl
: TTL 缓存时间,建议设置为 60
配置文件默认路径是 /usr/local/bin/AdGuardHome.yaml
3. 使用 Envoy 作为前端代理
其实到这里已经算是结束了,但本人有强迫症,我可不想将应用的管理界面设置为一些奇奇怪怪的非标准端口。有人或许会说:那你为什么不将管理界面设置为 80 或 443 端口啊?问得好,因为我的电脑上部署了各种奇奇怪怪的应用,80 端口只有一个,不够用的,只能考虑加个前端代理了。
作为一名云原生狂热信徒,当然是选 Envoy
了,虽然 Envoy 很难编译,但 Tetrate 的工程师(包括 Envoy 的核心贡献者和维护者)发起了一个 GetEnvoy 项目,目标是利用一套经过验证的构建工具来构建 Envoy,并通过常用的软件包管理器来分发,其中就包括 Homebrew
。我们可以直接通过 Homebrew 来安装:
$ brew tap tetratelabs/getenvoy
==> Tapping tetratelabs/getenvoy
Cloning into '/usr/local/Homebrew/Library/Taps/tetratelabs/homebrew-getenvoy'...
Tapped 1 formula.$ brew install envoy
==> Installing envoy from tetratelabs/getenvoy
==> Downloading ...
######################################################################## 100.0%
? /usr/local/Cellar/envoy/1.10.0: 3 files, 27.9MB, built in 13 seconds$ envoy --version
envoy version: e349fb6139e4b7a59a9a359be0ea45dd61e589c5/1.11.1/clean-getenvoy-930d4a5/RELEASE/BoringSSL
这是我的 envoy 配置文件:
static_resources:listeners:- address:# Tells Envoy to listen on 0.0.0.0:80socket_address:address: 0.0.0.0port_value: 80filter_chains:# Any requests received on this address are sent through this chain of filters- filters:# If the request is HTTP it will pass through this HTTP filter- name: envoy.http_connection_managertyped_config:"@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManagercodec_type: autostat_prefix: httpaccess_log:name: envoy.file_access_logtyped_config:"@type": type.googleapis.com/envoy.config.accesslog.v2.FileAccessLogpath: /dev/stdoutroute_config:name: search_routevirtual_hosts:- name: backenddomains:- "*"routes:- match:prefix: "/"route:cluster: adguardhttp_filters:- name: envoy.routertyped_config: {}clusters:- name: adguardconnect_timeout: 1stype: strict_dnsdns_lookup_family: V4_ONLYlb_policy: round_robinload_assignment:cluster_name: adguardendpoints:- lb_endpoints:- endpoint:address:socket_address:address: 127.0.0.1port_value: 5300
admin:access_log_path: "/dev/stdout"address:socket_address:address: 0.0.0.0port_value: 15001
创建 Launch Agent 的 plist 文件:
$ cat /Library/LaunchAgents/envoy.plist<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0"><dict><key>Label</key><string>envoy</string><key>ProgramArguments</key><array><string>/usr/local/bin/envoy</string><string>--config-path</string><string>/Users/freya/bin/front-proxy.yaml</string></array><key>StandardOutPath</key><string>/var/log/envoy.stdout.log</string><key>StandardErrorPath</key><string>/var/log/envoy.stderr.log</string><key>KeepAlive</key><true/><key>RunAtLoad</key><true/><key>Disabled</key><false/></dict>
</plist>
加载 envoy 服务:
$ sudo launchctl load /Library/LaunchAgents/envoy.plist
现在就可以在浏览器中通过 url http://127.0.0.1/
来访问 AdGuard Home 的管理界面啦~
后续如果还有其他不可描述的应用,它们的管理界面都可以根据不同的 url 路径加到 envoy 的后端中。更高级的玩法还可以接入 Prometheus
监控,envoy 的 metrics 路径是 /stats/prometheus
。
如果你很好奇为什么我的浏览器能够输出彩色的 metrics,请在公众号后台回复◉prometheus◉
最后,别忘了将 MacOS 的 DNS 设为 127.0.0.1
,这个就不用我教了吧?
微信公众号
扫一扫下面的二维码关注微信公众号,在公众号中回复◉加群◉即可加入我们的云原生交流群,和孙宏亮、张馆长、阳明等大佬一起探讨云原生技术
AdGuard Home 安装使用教程相关推荐
- centos7 mysql workbench_centOS下mysql workbench安装配置教程
本文为大家分享了mysql workbench安装配置教程,供大家参考,具体内容如下 step0:安装mysql 在按照workbench之前,先安装mysql.指令是 yum install mys ...
- geany怎么创建文件夹_教程详情|Geany怎么使用,Geany安装使用教程_234游戏网
Geany是利用GTK 2工具包开发的一个快速.轻巧的集成开发环境,具有良好的可移植性和通用性.安全性,广泛应用于各个行业.Geany具有语法高亮.代码折叠.代码自动完成等功能,非常适合开发人员使用. ...
- python3里的pillow怎么安装_“python安装pillow教程“python3.4怎么安装pil
"python安装pillow教程"python3.4怎么安装pil python安装pillow教程2020-10-09 03:37:02人已围观 如何在python3.6中装p ...
- Mac环境下Docker及Splash的安装运行教程
一.前言 由于最近使用Python爬虫框架scrapy练习爬虫,在爬取动态网页的时候,需要用到splash,进行对动态网页进行JavaScript渲染,但是使用splash又必须安装Docker.因为 ...
- kafka不使用自带zk_kafka 安装部署教程
kafka 安装部署教程 1. 下载 官网链接 http://kafka.apache.org/downloads 浙大源 http://mirrors.tuna.tsinghua.edu.cn/ap ...
- Matlab2013a安装简单教程以及遇到的问题解决(反复提示激活问题)
虽然说现在matlabr2018都出来了,但是有的时候还是需要这些老版本的matlab,最囧的时刻时不熟悉新版本而产生的障碍而导致使用2013版本的matlab. 今天在安装matlab时候,遇到了一 ...
- kangle web server源代码安装简明教程
kangle web server源代码安装简明教程 - kangle使用交流 - kangle软件 是一款高性能web服务器,反向代理服务器,提供虚拟主机管理系统及代理服务器,web服务器架设 - ...
- Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程!
Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程! 提取码均为0916 jdk-8u301-linux-x ...
- ENVI5.1安装破解教程
原文地址: ENVI5.1安装破解_百度经验 http://jingyan.baidu.com/article/020278118b5ded1bcd9ce57a.html ENVI5.1_x86_x6 ...
- mysql8.0.12插件_mysql 8.0.12 安装使用教程
记录了mysql 8.0.12 安装使用教程,供大家参考 Windows 首先从官网下载压缩包: 在安装目录解压缩: 进入压缩目录,在目录下新建my.ini,配置内容如下; [mysqld] # 设置 ...
最新文章
- 【OpenCV 4开发详解】Canny算法
- electron 托盘图标闪烁_从零到一,用 Electron 开发桌面效率工具
- CISCO PIX/ASA Failover 技术初步学习
- WINCE6.0+S3C6410睡眠和唤醒的实现
- docker 镜像重命名_Docker镜像管理(二)
- orange软件_Orange和戴尔技术公司合作 联合测试和开发5G和商业模式
- 如果编程替换成中文就会怎样? 程序员看了表示头疼
- HDFS与MapReduce
- apicloud mysql 登录_PHP+MySQL实现前台的登陆注册。
- asp.net 中的 主从 新增,修改,删除。
- 服务器主板阵列创建!创建磁盘阵列RAID0、RAID1图文方法
- caffe的python接口学习(7):绘制loss和accuracy曲线
- 流程图详解 new String(“abc“) 创建了几个字符串对象
- 为什么 fac_us=SystemCoreClock/8000000?
- 泛函分析笔记7:弱收敛与弱星收敛
- 《STL源码分析》学习笔记 — STL概论与版本简介
- ‘VBE6EXT.OLB’ 不能被加载
- 贝塞尔曲线想到的--真的很美,但是有时很丑
- 书论91 万经《分隶偶存》
- 28岁的IT人生反思