你无法赋予哪怕是最好的机器以主动性,就像再好的压路机也不会种花一样。

沃尔特·李普曼(Walter Lippmann),作家

放开之后,疫情迅速清零,嗯,是把阴清零,所以笔者也未能幸免,在单位躲过两周后,在家年休时中招,到现在还一直在咳……身体感觉也比之前虚多了。所以目前还阴着的朋友,继续保护好自己,能不中招就别中。
言归正传,上期我们聊了关于去世界看看的方法,这次的内容来说说网页广告拦截。当然,拦截广告效果最好的是在浏览器中安装插件,可是每台电脑都要装插件太麻烦不是。如同看世界一样,每个设备分别安装客户端,再设置机场或节点,设备少倒还好,设备多的话,那就……所以能通过一个地方搞定的问题,我们就不要一个个设备来操作了。
首先上今天的主角——AdGuard Home。

AdGuard Home 仪表盘界面

图中是去年11月26日开始到现在的数据(DNS 查询数绝大多数是 OpenClash 整的本地广播和本地 ping),红色部分就是拦截掉的广告页面,一个半月拦截了17万多的广告页面。


如何安装 AdGuard Home

方法一:在 Openwrt 的管理界面打开“系统”→“软件包”,在筛选器中输入“adguardhome”,然后点“安装”即可。

方法二:下载安装包,然后解压到指定的路径并安装。该方法步骤比较复杂,当然复杂之后,会给我们带来一些好处,我们先来看看如何操作吧。先来到下载地址

下载好后,把文件传到 Openwrt 设备上,或者在 Openwrt 上直接下载,下载链接通过浏览器的右键获取。

通过 putty 之类的工具连接到 Openwrt,输入用户名密码后进入命令行界面。

先通过 cd 命令,把当前目录设置为你想要安装 AdGuardHome 的目录,如:


# 笔者是安装在 /opt 目录下的
cd /opt

然后输入:wget 文件链接地址,如:


wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.21/AdGuardHome_linux_amd64.tar.gz

如何下载下来的文件名不对,可以通过 mv 命令改名,或在下载时就指定文件名:


# 用 mv 改名
mv ffc1046a-77fd-4a0d-b150-272e2a5109d7?X-Amz-Algorithm=AWS4-HMAC-SHA256 AdGuardHome_linux_amd64.tar.gz
# 或者直接在下载时指定文件名
wget -O AdGuardHome_linux_amd64.tar.gz https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.107.21/AdGuardHome_linux_amd64.tar.gz

如果你刚才没有设置过当前目录,那么要把文件移动到你希望安装到的目录下,也是通过 mv 命令:


mv AdGuardHome_linux_amd64.tar.gz /opt

然后解压:


tar -zxvf AdGuardHome_linux_amd64.tar.gz

解压后会在当前目录出现一个名为“AdGuardHome”的目录,此时可以把 AdGuardHome 设置为可随机启动的服务。

AdGuardHome/AdGuardHome -s install

方法二的好处

刚才不是说,这么复杂的安装过程,但会为之后带来好处,那是什么好处呢?

  1. 指定目录安装。指定目录就意味着如果你的 Openwrt 系统所在的分区如果空间不足,可以把 AdGuardHome 安装到有足够空间的其他分区中。
  2. 重装方便。今后如果 Openwrt 刷机或重装,只需要把 AdGuardHome 的整个目录备份好,刷机后再把这个目录放回到指定的目录,就可以无损还原设置和日志,这样以后就不用在安装后重新设置了。

好处虽然不多,但能解决了软路由的痛点——空间和设置。

设置 AdGuard Home (直接上图)

常规设置:

DNS设置:

我使用的“上游 DNS 服务器”(“#”是注释):


#塔梯子用(可以不用)
#[::1]:7874
#127.0.0.1:7874
#[::1]:33053
#127.0.0.1:33053
#国内DoT【推荐】:
tls://dns.alidns.com
tls://dot.pub
tls://dot.360.cn
#国内DoH【建议】:
#https://dns.alidns.com/dns-query
#https://doh.pub/dns-query
#https://doh.360.cn
#IPv6:
tcp://[2001:dc7:1000::1]:53
#tcp://[2400:3200:baba::1]:53
#tcp://[2400:3200::1]:53
#IPv4:
#tcp://223.5.5.5
#tcp://223.6.6.6
#tcp://1.2.4.8
#tcp://114.114.114.114
#国外DoT:
#tls://1.1.1.1
#tls://dns.google

加密设置:

客户端设置:

一般不设置,除非你有特定的设备不过滤广告,那么在“客户端设置”中添加该设备的 IP 地址,进行相关的设置。

DHCP 设置:

正常情况下,DHCP 服务会由 dnsmasq 应用提供,可以显示在 Openwrt 管理页面的首页,所以在 AdGuardHome 里一般不启用。

自定义过滤规则:

如果你想手动拦截或放行某个地址,那么可以在这里设置,规则设置方法在页面中的范例,这里不再赘述。想更详细地了解,可以点击页面中提供的“了解更多”链接,内容是英文,看示例就行了,实在看不懂的地方就用机翻吧。
为什么要先说这个,因为还有个进阶的,比如笔者家和单位都使用了 AdGuardHome,需要的自定义过滤规则一样,那么笔者每次改设置,都需要分别进家和单位的两个 AdGuardHome 更改,这就是重复劳动了,能不能改一个地方,两边都能在更新后生效,答案是有的——“DNS 拦截列表” & “DNS 允许列表”。

DNS 拦截列表:

现在的 AdGuardHome 开始自带一些第三方的阻止列表,所以不用费劲的去寻找第三方的阻止列表了。

DNS 允许列表:

图中69个规则的就是我自己做的在线允许列表

界面与阻止列表一样,其实你把列表设在哪里效果都一样。当然,还是尽可能按规矩来。

阻止和允许列表必须为在线地址,笔者是在 github.com 创建的项目,通过“raw”地址就能使用了。需要更新时,直接上 github 改一遍就可以了。

DNS 重写:

如果你要把内网设备通过自定义的域名来访问,那么在这里添加一个 DNS 重写。如:用“abc.com”来访问 IP 地址为192.168.1.1,就在这里添加:

已阻止的服务:

这里有国内外热门的网站和服务,一般需要用到的是企业内部吧,禁止某些网站和服务。

至此,AdGuardHome 已经在正常工作了,还有疑问吗?回复来交流吧。

与 OpenClash 配合:

其实笔者之前走了不少弯路,最后才发现原来根本什么都不用做。在知乎中看到过,把 AdGuardHome 的上游服务器设置为127.0.0.1:7874端口以使DNS 查询通过 OpenClash 来分流。但每次开和关 OpenClash 都要重新设置 AdGuardHome 的上游服务器,太麻烦了。于是把 AdGuardHome 的上游服务器设置为 dnsmasq 的127.0.0.1:33053(33053是笔者设置 dnsmasq 的 DNS 监听端口),OpenClash 则可以自动劫持 dnsmasq,那就不用来回改 AdGuardHome 的上游服务器地址了。只是这样做中间多了道关卡,多了个程序转发,延时有微秒级的增加,好处是省事省力。
后来在一次无意中,打开了 OpenClash,但忘记把 AdGuardHome 的上游服务器设置为 dnsmasq 的端口,却发现还是可以去世界看看。于是,AdGuardHome 与 OpenClash 无接触配合方法诞生了。至于原理,笔者分析应该是 OpenClash 会设置防火墙规则,真正使分流生效的就是防火墙规则,所以不需要更改 AdGuardHome 的上游服务器就能实现内外分流。


软路由可以干什么之五介绍完了,感谢耐心阅读。本篇主题:广告拦截。设置的重点为“DNS 阻止列表”和“DNS 允许列表”,就是哪些地址是我不想要的,哪些地址是我想要的。

如果还有什么疑问,可以给在评论区留言与笔者交流哦。敬请期待下一篇《安装和使用软路由【进阶篇】——软路由可以干什么?(六)》。

安装和使用软路由【进阶篇】——软路由可以干什么?(五)
Tagged on:     

发表回复

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据