『软路由踩坑指南』 篇五:OpenWrt 旁路由进阶篇 SmartDNS+AdGuardHome 设置 DNS 分流、秒开网页、去广告_路由器_什么值得买
2023-7-4
| 2023-7-16
0  |  0 分钟
type
status
date
Jul 4, 2023 06:08 AM
slug
summary
tags
category
icon
password

『软路由踩坑指南』 篇五:OpenWrt 旁路由进阶篇 SmartDNS+AdGuardHome 设置 DNS 分流、秒开网页、去广告

2023-02-21 11:29:24 351 点赞 2769 收藏 163 评论

写在前面

1.iKuai +OpenWRT 做旁路由网络拓扑

前面几篇文章写完了,基本上折腾完了,以 ESXi 8.0 虚拟机为基础,安装作为 iKuai 主路由,负责拨号及 DHCP,OpenWRT 做旁路由。
今天搞定 SmartDNS+AdGuardHome 设置分流与去广告。SmartDNS 作为 DNS 管理并提供 DNS 缓存,实现国内国外 DNS 分流,彻底解决 DNS 污染问题、实现秒开网页。同时搭配 AdGuardHome 实现整个局域网去广告。
notion image

2.【AdGuardHome】有什么用?

作为著名广告拦截与反跟踪软件,可以将广告与追踪相关的域名屏蔽,同时不再需要安装任何客户端,包括 Windows、Mac、Android、iOS,下面我们说的是 OpenWrt 安装 AdGuard Home 设置全局广告拦截,教程开始之前,我先介绍一下 AdGuard Home 的工作原理。
AdGuard Home 的工作原理是在 DNS 的域名解析过程中拦截网页上的广告,目前支持 DNS over TLS 和 DNS over HTTPS,本教程讲解讲解如何配置 OpenWRT 的 AdGuardHome 实现 DNS 防污染加快网站解析速度 和 广告拦截。

3. 什么是 DNS?

开搞之前先搞清楚几个概念,便于折腾:
【客户端 (client)】:指在本地的电脑或者软件,而服务器 (server)就是在网上为客户端提供服务的电脑。client 是发出请求 (request)的一方,而服务器 (server) 响应它的请求并为其提供服务。
img
notion image
【域名系统 (Domain Name S ystem,缩写: DNS)】是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,是 Internet 上解决网上机器命名的一种系统,能够使人更方便地访问互联网。就像拜访朋友要先知道别人家怎么走一样,Internet 上当一台 主机要访问另外一台主机时,必须首先获知其地址。

4. 域名解析:

域名解析就像我们初次拜访朋友一样,首先要知道人家的门牌号,然后按照地址去找。在 Internet 上只知道某台机器的域名还是不够的,还要有办法去找到那台机器。寻找这台机器的任务由网上一种被称为域名服务器的设备来完成的,而完成这一任务的过程就称为域名解析。
可以用 IP 地址标识,并且可以通过 IP 地址被访问,但即使是将 32 位的二进制 IP 地址写成 4 个 0~255 的十位数形式,也依然太长、太难记。因此,人们发明了域名 (Domain Name),域名可将一个 IP 地址关联到一组有意义的字符上去。用户访问一个网站的时候,既可以输入该网站的 IP 地址,也可以输入其域名,对访问而言,两者是等价的。例如:微软公司的 Web 服务器的 IP 地址是 207.46.230.229,其对应的域名是 www.microsoft.com,不管用户在浏览器中输入的是 207.46.230.229 还是 www.microsoft.com,都可以访问其 Web 网站。

5.【53 端口】

53 端口是为 (Domain Name Server(DNS 域名服务器) 服务器所开放的端口,主要用于域名解析,DNS 服务在 NT 系统中使用的最为广泛。通过 DNS 服务器可以实现域名与 IP 地址之间的转换,只要记住域名就可以快速访问网站。

6.DNSMASQ DNS 服务器

OpenWrt 默认使用的是 DNSMASQ 来管理 DNS 默认监管的 53 端口。我们这些上网的设备发出的 DNS 请求都是先到这里,然后再通过 DNS 转发 (在常规设置中可以更改) 送到网关,最后到运营商等 DNS 服务器进行查询。
DNSMASQ 是一个轻量级的 DNS 和 DHCP 服务器,大约 200 多 KB,并且完整的包含了 DNS 服务器和 DHCP 服务器功能,非常适合 flash 空间有限的嵌入式系统。DNSMASQ 作为 OpenWrt 默认的 DNS 服务器和转发器,接收 Client 的 DNS 查询请求,并回复 DNS 查询结果。查询的结果可以来自本地缓存和公共 DNS 服务器,如果本地缓存没有记录,DNSMASQ 会将请求转发到公共的 DNS 服务器,并将公共的 DNS 解析的结果回复到请求的设备。
那 SmartDNS 和 DNSMASQ 有什么区别?我们为何又这么折腾呢?
SMARTDNS 在设计上并不是替换 DNSMASQ 的,SMARTDNS 主要功能集中在 DNS 解析增强上,增强部分有:
多上游服务器并发请求,对结果进行测速后,返回最佳结果;address,ipset 域名匹配采用高效算法,查询匹配更加快速高效,路由器设备依然高效。域名匹配支持忽略特定域名,可单独匹配 IPv4, IPV6,支持多样化定制。针对广告屏蔽功能做增强,返回 SOA,屏蔽广告效果更佳;IPV4,IPV6 双栈 IP 优选机制,在双网情况下,选择最快的网络通讯。支持最新的 TLS, HTTPS 协议,提供安全的 DNS 查询能力。ECS 支持,是查询结果更佳准确。域名 TTL 可指定,使访问更快速。高速缓存机制,使访问更快速。第二 DNS 支持自定义更多行为。
notion image

7. 拟实现的 DNS 转发流程

设置最核心的部分就是 DNS 转发端口的衔接,而我们要做的就是把 DNSMASQ、Adguardhome、SmartDNS 三个插件里的 DNS 服务器功能分成三个层级,实现层层转发。依次是第一级 DNSMASQ,第二级 Adguardhome,第三级 SmartDNS。
客户端 DNS 请求流程简单来说就是:
【客户端 (client)】国内请求】→
→192.168.1.1:53→192.168.2.1:53(DNSMASQ)→192.168.2.1:5351(Adguardhome)→192.168.2.1:6053 (SmartDNS 缓存)→上游国内 DNS 公共服务器→返回最快 DNS 给客户端
【客户端 (client)】国外请求→
→192.168.1.1:53→192.168.2.1:53(DNSMASQ)→192.168.2.1:5351(Adguardhome)→192.168.2.1:5335 (SmartDNS 缓存)→上游国外 DNS 公共服务器→返回最快 DNS 客户端
经过设置之后,openWrt 的默认 DNS 服务器为 DNSMASQ,本地的 DNS 由 openWrt 的 SmartDNS 负责解析缓存,DNSMASQ 作为最底层的 DNS 服务器,只担任转发功能。
notion image

一、OpenWrt 基本设置

1. 配置 OpenWrt 的 lan 口设置

IPv4 地址:为 OpenWrt 的网关,也是我们管理 OpenWrt 的地址,这里设置为 192.168.50.2。
子网掩码:和 ikuai 一致保证同一个网段。
IPv4 网关:指向 ikuai 的网关。保证 OpenWrt 的上网数据传输到 ikuai 再传输到外网。
使用自定义的 DNS 服务器:首先设置一个自定义的 DNS,这里我们先设置一个能用的 DNS 即可,保证我们在设置过程中可以上网,后面设置好了,可以将 DNS 改为由 OpenWrt 代理,即输入 OpenWrt 的网关改成 192.168.50.2。
notion image

2. 关闭 DHCP 服务,统一由 ikuai 分配

notion image
楼主的电信网络没有 IPv6 服务,全部使用的是 IPv4 的服务,禁用掉 IPv6 服务。
notion image

3.lan 高级设置

lan 口高级设置里不勾选 IPv6,勾选【开启开机自动运行】和【强制链路】:
notion image

4.Turbo ACC 加速

开启【Turbo ACC 加速】,如果前面已经开启了,检查网络内的【Turbo ACC 加速】设置是否正确:
只开启前三个即可,DNS 缓存后面由 SmartDNS 来管理。如果开启了会产生冲突,冲突了就会不生效,关闭 Turbo ACC 网络加速设置的 DNS 加速。
notion image

5. 防火墙设置

①基本设置

打开 openwrt 的防火墙, SYN-flood 防御、丢弃无效数据包起不起用都可。下面启用 FullCone-NAT、入站数据、出站数据、转发都设置为接受。
下面 lan 口开启:IP 动态伪装。
notion image

②防火墙自定义规则

notion image
一般 openwrt 防火墙默认有以几条规则,若没有,加上
iptables -t nat -A PREROUTING -p udp —dport 53 -j REDIRECT —to-ports 53
iptables -t nat -A PREROUTING -p tcp —dport 53 -j REDIRECT —to-ports 53
[-n “$(command -v ip6tables)” ] && ip6tables -t nat -A PREROUTING -p udp —dport 53 -j REDIRECT —to-ports 53
[-n “$(command -v ip6tables)” ] && ip6tables -t nat -A PREROUTING -p tcp —dport 53 -j REDIRECT —to-ports 53

③加入回程旁路由统一转发代码

自定义规则里再加入下面一条规则,如果现在使用的网卡是 eth1 或者 eth2,这里同样修改为 eth1 或者 eth2。
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
如果不加会导致我们广告屏蔽等功能失效,原理大概如下:
家里的上网设备对外发送一个上网请求数据包,向外发一个包,先发到旁路由 openwrt(192.168.50.2),如果不加这条规则,旁路由并没有修改这个包的源地址 (192.168.50.XX),这个包由旁路由 openwrt 转发给 ikuai 主路由(192.168.50.1) 再到外网。外网回应的数据包,到了 ikuai 主路由 (192.168.50.1),主路由一查 NAT 表,发现是设备(192.168.50.XX) 的,就直接发给设备了,这个数据 (包含广告),没有经过 openwrt(192.168.50.2) 处理。我们加上这条命令后,回程返回的数据包会先回到 openwrt 进行处理,再返给设备。
需要设置情况:
ikuai 主路由开 DHCP(未指向 openwrt 旁路由网关),openwrt 旁路由关 DHCP,旁路由只有 LAN 口工作,其他设备需设置静态网关为旁路由,需要设置。ikuai 主路由开 DHCP(未指向 openwrt 旁路由网关),openwrt 旁路由开 DHCP(强制模式开),旁路由只有 LAN 口工作,其他设备通过强制 DHCP 获取旁路由网关,需要设置。ikuai 主路由开 DHCP(指向 openwrt 旁路由网关),openwrt 旁路由关 DHCP,旁路由只有 LAN 口工作,需要设置。ikuai 主路由关 DHCP,openwrt 旁路由开 DHCP,openwrt 旁路由只有 LAN 口工作,需要设置。
不需要设置的情况:
openwrt 旁路由 WAN LAN 共用 eth0,不用设置。ikuai 单臂路由情况,openwrt 作为拨号路由 (有拨号就有 WAN 口),不用设置。

二、ikuai 的 DNS 设置

回到 ikuai 进行简单设置,这一步将 ikuai 的 DNS 设置为 openwrt 代理:
网关:设置为 openwrt 的网关:192.168.50.2
这样上网设备发出的数据,到达 ikuai,ikuai 会发送到 openwrt 进行一番处理,然后在发送到外网。回程的数据,ikuai 也会发送到 openwrt 进行一番处理,然后转发到各个设备。
DNS:设置为 openwrt 代理:192.168.50.2
notion image

三、安装 SmartDNS

安装:在 istore 中输入 SmartDNS ,查找软件包安装即可,一般 openwrt 都带有这个服务,这个就不多说了。
notion image
在服务中打开 SmartDNS:
notion image

四、SmartDNS 设置

1.SmartDNS 基础设置

基本设置→SmartDNS 勾选启用→服务器组名称:china→端口默认【6053】→开启 TCP 服务器→勾选双栈 IP 优选→勾选域名预加载→勾选缓存过期服务→重定向默认「无」→缓存大小设为:1000000→域名 TTL 最大值设为:3600→勾选启动→保存 & 应用。
notion image
【双栈 IP 优选】:应注意自己的设备是否完全支持 IPv6,尤其是网络运营商是否支持
【重定向】:一定不要选择,后面我们用 Adguard Home 进行重定向。还有就是一些版本的 SmartDNS,没有重定向功能,改成了自动设置 DNSMASQ,如果是这个版本注意不要点自动设置 DNSMASQ 。因为我自己是用的 IPV4 公网,这里 IPV6 的两项设置不勾选,如果用 IPV6 勾选此两项。
【停用 HTTPS 地址解析】:如果下面上游路由器添加 HTTPS 协议的话,停用 HTTPS 地址解析这一项不要勾选。
notion image
【缓存大小】:可根据需求填入,这里填入的数字是指缓存的条数,楼主写了个十万「100000」,自己可以多写几条。
【域名 TTL】:是指缓存的时间,也就是 DNS 在本地保留生效的时间,留空则根据上游服务器告知的时间缓存,但是如果低于最小值,则按照最小值在缓存之内防止短时间多次查询,如果时间过长则按照最大值缓存防止失效。域名 TTL 可根据自己需求需求填入,最小值填入「300」、域名 TTL 最大值填入「3600」。域名 TTL 最大值如果我们这里填入 3600,意思是缓存一个小时。同样如果填入 864000,意思就是系统会帮我们缓存十天。
notion image

2.SmartDNS 配置上游服务器

配置参考规则
smartdns 提供了域名缓存机制:对查询的域名,进行缓存,缓存时间符合 DNS TTL 规范。
①为提高缓存命中率,适当增大 cache 的记录数、通过 cache-size 来设置缓存记录数。内存大的情况下,可适当调大。可以提高 cache 效率,加快访问速度
②适当设置最小 TTL 值:通过 rr-ttl-min` 将最低 DNS TTL 时间设置为一个合理值,延长缓存时间。建议是超时时间设置在 10~30 分钟,避免服务器域名变化时,查询到失效域名。
③开启域名预获取功能:通过来启用域名预先获取功能,提高查询命中率。
配合上述 ttl 超时时间,smartdns 将在域名 ttl 即将超时使,再次发送查询请求,并缓存查询结果供后续使用。频繁访问的域名将会持续缓存。此功能将在空闲时消耗更多的 CPU。
④数量方面:SmartDNS 有测速机制,在配置上游服务器时,建议配置多个上游 DNS 服务器,包含多个不同区域的服务器,但总数建议在 10 个左右。
⑤隐私方面:默认情况下,SmartDNS 会将请求发送到所有配置的 DNS 服务器,若上游 DNS 服务器使用 DNS,或记录日志,将会导致隐私泄漏。所以在配置的时候要考虑:
配置使用可信的 DNS 服务器。优先使用 TLS 查询。设置上游 DNS 服务器组。
⑥IOS 系统解析缓慢问题怎么解决?
IOS14 开始,苹果支持了 DNS HTTPS (TYPE65) 记录的解析,此功能用于快速 DNS 查询和解决 HTTPS 链接相关的问题,但当前还是草案,另外会导致广告屏蔽等功能失效,建议通过如下配置关闭 TYPE65 记录查询。
force-qtype-SOA 65
按照以上规则我们开始进行配置
这里将 DNS 分别进行分组,当浏览国内网页时使用国内 DNS,在访问国外网站时自动使用国外 DNS。点新增开始下一步:
notion image

①添加国内 DNS 服务器

按照以下设置分别将下面的国内 DNS 插入进去,注意这里我们使用了国内国外分流,国内国外不宜添加过多,添加之前可以在网上测试下 DNS 的速度,国内国外各添加十条就够了。DNS 测试网站
DNS 服务器名称:自己随便定义
服务器组:china(自己随便定义,这个是国内组的意思)
端口:default(默认端口)
类型:udp(国内统一填写)

②添加添加运营商的 DNS(隶属于国内组)

首先添加电信运营商给的 DNS。这样在查询的时候会优先查询。打开 ikuai wan 口拨号页面,查看供应商给的 DNS,可以看到电信供应商给了两个 DNS:
notion image
将两个 DNS 复制出来,在 SmartDNS 分别添加上去。
116.228.111.118180.168.255.18
notion image
添加完成,将上面的 DNS 删掉,尽量保证电信供应商的排在第 1、2 位置。
notion image
关于 DNS,可以到 dns.ip.cn 查询:

③添加国内 DNS 服务器:

阿里公共 DNS:223.5.5.5,223.6.6.6 类型选择:UDP
阿里加密 DNS:aliDNS_ip/DNS-query 类型选择:https
阿里加密 DNS:DNS.aliDNS.com/DNS-query 类型选择:https
腾讯公共 DNS+:119.29.29.29 类型选择:UDP
腾讯加密 DNS:doh.pub/DNS-query 类型选择:https
腾讯加密 DNS:sm2.doh.pub/DNS-query 类型选择:https
百度公共 DNS:180.76.76.76 类型选择:UDP
华为云公共 DNS :122.112.208.1,139.9.23.90 类型选择:UDP
114 公共 DNS:114.114.114.114,114.114.115.115 类型选择:UDP
OpenerDNS:42.120.21.30 类型选择:UDP
DNS 派 电信 / 移动 / 铁通:101.226.4.6,218.30.118.6 类型选择:UDP
DNS 派 联通:123.125.81.6,140.207.198.6 类型选择:UDP
notion image
添加完成:
notion image

④添加国外 DNS 服务器

下面进行添加国外 DNS,国外 DNS 协议要添加 UDP、TCP 和 TLS 三种协议。
服务器组选择:guowai
添加一项额外的服务器参数 (从默认服务器组排除),填入:
  • exclude-default-group
下面搜集了这些常见的国外 DNS:
Google DNS:8.8.8.8,8.8.4.4 类型选择:tls(UDPTCP 也可以加入)Google 加密 DNS:dns.google/dns-query 类型选择:httpsGoogle 加密 DNS:dns.google 类型选择:tlsCloudFlare:1.1.1.1 类型选择:tls(UDPTCP 也可以加入)IBM Quad9:9.9.9.9 类型选择:tls(UDPTCP 也可以加入)IBM Quad9:doh.opendns.com/dns-query 类型选择:httpsNorton ConnectSafe:199.85.126.10 199.85.127.10 类型选择:UDP威瑞信:64.6.64.6 64.6.65.6 类型选择:UDPComodo** 安全 DNS:** 8.26.56.2 68.20.247.20 类型选择:UDPDNS Watch: 84.200.69.80 84.200.70.40 类型选择:UDPOpenDNS:208.67.222.222,208.67.220.220 类型选择:tls(UDPTCP 也可以加入)韩国电信 DNS:168.126.63.1,168.126.63.2 类型选择:tls(UDPTCP 也可以加入)V2EX DNS:199.91.73.222,178.79.131.110 类型选择:tls(UDPTCP 也可以加入)
notion image
有的版本的 SmartDNS 是有从默认服务器组排除这个选项的,如果有这个选项,国外的 DNS 服务器在添加的时候,勾选就可以了。这样就可以把国内组进行分开,访问国内网站的时候使用国内 DNS,使用国外网站的时候,选择国外的 DNS 服务器。
notion image
添加完成:
notion image

⑤设置第二 DNS 服务器

启用第二 DNS 服务器,端口默认「5335」,因为很多插件的 DNS 服务中用的就是 5335 端口,这里设置后好了之后,直接选用即可。
服务器组我们选择上面的国外分组,其他的对照设置。
启用→开启「TCP 服务器」→本地端口设为 5335→服务器组: guowa→勾选跳过测速→勾选跳过 address 规则→勾选跳过双栈优选→勾选跳过 cache→启用——保存 & 应用
notion image
下面四项勾选,第二 DNS 服务器设置完毕。
notion image

⑥SmartDNS 自定义设置

在 SmartDNS 自定义中添加下面两项分组信息,其他的删掉即可,只保留主体部分:
bind:6053 -group china
bind:5335 -group guowai
notion image
SmartDNS 自定义备份
Add custom settings here.

set log level

log-level [level], level=fatal, error, warn, notice, info, debug

log-level error

log-size k,m,g

log-size 128k

log-file /var/log/smartDNS.log

log-num 2

List of hosts that supply bogus NX domain results

bogus-nxdomain [ip/subnet]

bind:6053 -group china
bind:5335 -group guowai

五、配置 AdGuard Home

1.AdGuard Home WEB 端设置

在服务里打开 AdGuard Home,可以看到基本设置、日志、手动设置三个选项。前两个是 wed 端可视设置,手动设置就是通过命令进行设置。
首先看第一项基础设置
notion image

①更新核心

首先更新核心版本,现在可以看到红色的状态是未运行和未重定向,如果特殊上网正常的话是可以更新的,点击检查更新,更新核心:
notion image

②手动更新核心

如果因为网络问题无法更新,那只能手动更新了。打开 AdGuardHome,找到点击右下角,作者编译好的最新的版本。
notion image
打开列表,找到自己对应的版本,一般 X86 64 位平台选择换个版本即可。
notion image
下载打开压缩包,第一个 AdGuardHome 就是核心文件,我们只用到这一个就可以了。
notion image
我们打开 winSCP,电脑上没有的可以去下载安装下:
notion image
安装完成后,新建连接。输入主机名,openwrt 的 IP 地址,端口号不用该,输入用户名和密码,连接。
notion image
点击【打开目录】,路径输入 / usr/bin/AdGuardHome/,确定打开。
notion image
将刚才下载的复制粘贴进来:
notion image
右击属性,分配权限,权限和下面一样就可以了。
notion image
这时可以看到核心已经有了。
notion image

2. 重定向方式:

更新完核心之后可以看到,重定向选项,重定向方式有【作为 DNSMASQ 的上游服务器】、【重定向 53 端口到 Adguardhome】、【使用 53 端口替换 DNSMASQ 】3 种选择,这里先选择无,就是先不重定向,等到后面设置好了,我们再开启。
先来捋一下,AdGuard Home 的上级 DNS 服务器是 SmartDNS,这点是肯定的,我们主要是要理清 DNSMASQ 和 Adguardhome 之间的关系。而 DNSMASQ 和 Adguardhome 的上下级关系关系就是通过重定向来实现的。
关于三种重定向方式的区别。从下面 luci-app-adguardhome 的作者注释来看,【作为 DNSMASQ 的上游服务器】是最稳定的方式,就采用这个就好了,效果其实都一样,不要折腾,越折腾莫名其妙的问题越多。
作为 dnsmasq 的上游服务器 (在 AGH 中统计到的 ip 都为 127.0.0.1,代价就是没法统计局域网客户端,都显示 127.0.0.1 了,无法统计客户端及对应调整设置,基本上无影响,但是酸酸乳 plus 正常)重定向 53 端口到 AdGuardHome(ipv6 需要开启 ipv6 nat redirect 否则如果客户端使用 ipv6 过滤无效,不以 dnsmasq 为上游酸酸乳 plus 失效)使用 53 端口替换 dnsmasq (需要设置 AGH 的 dnsip 为 0.0.0.0, AGH 和 dnsmasq 的端口将被交换,不以 dnsmasq 为上游酸酸乳 plus 失效)
notion image
然后勾选【详细日志】、【开机后网络准备好时重启】、【在关机时备份工作目录文件】所有的选项,保存启动 AdGuard Home。
notion image

3.AdGuard Home web 端配置

这时可以看到,AdGuard Home 已经运行,但是还有一个红色的未重定向,这是正常的。
后打开下面框选的位置,打开 AdGuard Home 的 web 配置页面。
notion image
也可以直接输入旁路由地址:端口号,楼主旁路由地址是 192.168.50.2,可以直接输入 192.168.50.2:3000 进行配置。会出来个网页。点击开始配置进入下一步:
notion image

①端口设置

网页管理界面——监听接口——所有接口,端口号设置为默认的 3000。也可以设置成其他的,这个只要不和现用的其他端口冲突即可。
DNS 服务器——监听接口——所有接口,端口号设置为 5351。(这个可以随便设置一个,同样也是不冲突就行)
notion image

②网页管理界面登录密码

配置 AdGuard Home 的网页管理界面登录密码,输入常用的账户密码即可。
notion image
点击进入下一步,检查有没有问题,可以把这些内容保存下来,省的以后忘记或者后面设置忘记了。
为保证 AdGuard Home 可以开始正常工作,您需要在设备上对其进行配置。AdGuard Home DNS 服务器正在监听以下地址:
  • 127.0.0.1:5351
  • 172.17.0.1:5351
  • 192.168.50.2:5351
  • [::1]:5351
  • [fe80::62be:b4ff:fe09:c9f%br-lan]:5351

③设置 AdGuard Home 的上游 DNS 服务器

首先【常规设置】
常规设置里【使用过滤器和 Hosts 文件以拦截指定域名】勾选开启,其他选择关闭。不要问为什么,问就是稳定优先,已经够用,开了会出 bug,网页崩溃、显示不全、打不开等种种问题。
notion image
日志和统计大家根据自己的喜好设置就可以了,这个没多大影响。
notion image
notion image
再打开【DNS 设置】页面,设置 AdGuard Home 的上游 DNS 服务器:
notion image
前面我们已经在在 SmartDNS 设置了国内 DNS 端口为端口默认【6053】
notion image
SmartDNS 第二 DNS 服务器(国外 DNS)的端口为【5335】
notion image
这时候我们就要将 AdGuard Home 的上游 DNS 服务器设置为 SmartDNS,将 AdGuard Home 过滤后的 DNS 请求再转发给 SmartDNS。
上游 DNS 服务器设置为:
127.0.0.1:6053
127.0.0.1:5335
至于为何是 127.0.0.1 ?
127.0.0.1 是一个特殊用途的 IPv4 地址,称为 localhost环回地址 。所有计算机都使用此地址作为自己的地址,但它不会像真实 IP 地址那样让计算机与其他设备通信。
。 的任何数据包都不应该离开计算机 (主机),发送它 —— 而不是被发送到本地网络或互联网,它只是被自己 “环回”,并且发送数据包的计算机成为接收者。localhost 只是默认情况下引用 127.0.0.1 的简写,就是当做本地主机的总 127.0.0.1 来用。
下面 DNS 的查询方式有负载均衡、并行请求、最快的 IP 地址三种,楼主还是建议选择并行请求,上面我们设置过了 DNS 全部放到了 smartdns 里面缓存,Adguardhome 会向 smartdns 缓存库里并行查询,smartdnsDNS 本身具有返回最快 dns 的功能,也会向 Adguardhome 返回最快的 DNS。
列一下三种方式的区别(恩山大佬的分享):
负载均衡:一次查询一台服务器。 AdGuard Home 将使用加权随机算法来选择服务器,以便更频繁地使用最快的服务器。具体使用感受是,去视频 app 广告迅速,微博国际版登陆 5 秒广告可以去除,图片加载速度较快。存在的问题是,仪表盘平均处理时间较长,80-120ms 之间。并行请求:通过同时查询所有上游服务器,使用并行请求以加速解析。最老的模式,在添加本地 DNS 地址的情况下,去视频 app 广告迅速,微博国际版登陆 5 秒广告可以去除,仪表盘平均处理时间较短,可以保持在 5-8ms 之间。存在问题是,图片加载速度受影响,偶尔会加载慢,存在些许不稳定因素。最快的 IP 地址:查询所有 DNS 服务器并返回所有响应中速度最快的 IP 地址。因必须等待全部 DNS 服务器均有所回应,因而会降低 DNS 查询的速度,但同时此举将会改善总体的连接。本模式据说是 Smart DNS 的功能一样。对比上述模式没有区别,和并行模式并无态度啊去吧。存在问题是,仪表盘处理时间超长,1000ms 以上……
notion image
接下来到 Adguardhome 的网页控制面板中,将 Bootstrap DNS 服务器设为 127.0.0.1:6053。
notion image

④DNS 服务配置

速度限制:0
notion image

⑤DNS 缓存配置

这里都空着即可,采用上游 DNS 服务器,也就是让 SmartDNS 来管理这些,如果设置会产生冲突。
notion image

3.DNS 黑名单设置

将阻止匹配 DNS 拦截清单的域名,这里添加的清单就是一种在线的 TXT 文件,而且是有专人维护的。可能是公司或者是大神来维护。而 TXT 文件里面就是一条一条网站信息。
notion image
添加黑名单,这里可以从列表中添加,也可以添加自定义名单,列表中是 Adguardhome 收集和维护的一些名单,可以直接使用。自定义名单是从网上找一些大神为爱发电分享的名单。
notion image
其中列表名单里这一条推荐使用,其他的可以去找一些网络大神分享的名单,搜索 Adguardhome 规则。
notion image

4. 黑名单推荐

AdGuard 默认的内置规则里很多选择,规则一定不要搞太多,一两个综合性的规则列表就已足够覆盖大部分情况,如果同时使用,这些规则可能会冲突,出现很多莫名其妙的问题,使用几个自己用的顺手的就可以了。有的规则带有两个或者两个以上的源头,可以留着以后失效之后使用。【】后面就是规则地址,使用前请自行在列表地址前面加上 https:// 前缀。
1.【EasyList China+EasyList 去除国际国内网页中大多数广告,包括不需要的框架、图像和对象】easylist-downloads.adblockplus.org/easylistchina+easylist.txt
2.【EasyList 去除国际网页中大多数广告,包括不需要的框架、图像和对象】easylist-downloads.adblockplus.org/easylist.txt
3.【Easylist China 针对国内的补充规则】 easylist-downloads.adblockplus.org/easylistchina.txt
4.【HalfLife 合并规则,合并自 EasylistChina、EasylistLite、CJX’sAnnoyance 】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad-pc.txt
5.【HalfLife 合并规则,合并自 EasylistChina、EasylistLite、CJX’sAnnoyance 】raw.githubusercontent.com/o0HalfLife0o/list/master/ad-pc.txt
6.【ad-pc.txt 推荐桌面端,合并自乘风视频广告过滤规则、Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance,以及补充的一些规则】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad-pc.txt
7.【ad-pc.txt 推荐桌面端,合并自乘风视频广告过滤规则、Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance,以及补充的一些规则】raw.githubusercontent.com/o0HalfLife0o/list/master/ad-pc.txt
8.【ad-mo.txt 合并自 Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad-mo.txt
9.【ad-mo.txt 合并自 Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance】raw.githubusercontent.com/o0HalfLife0o/list/master/ad-mo.txt
10.【ad1 合并自乘风视频广告过滤规则、EasylistChina、EasylistLite、CJX’sAnnoyance,以及补充的一些规则】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad.txt
11.【ad1 合并自乘风视频广告过滤规则、EasylistChina、EasylistLite、CJX’sAnnoyance,以及补充的一些规则】raw.githubusercontent.com/o0HalfLife0o/list/master/ad.txt
12.【ad2.txt 合并自乘风视频广告过滤规则、EasylistChina、EasylistLite、CJX’sAnnoyance】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad2.txt
13.【ad2.txt 合并自乘风视频广告过滤规则、EasylistChina、EasylistLite、CJX’sAnnoyance】raw.githubusercontent.com/o0HalfLife0o/list/master/ad2.txt
14.【ad3.txt 合并自乘风视频广告过滤规则、EasylistChina、EasylistLite、CJX’sAnnoyance、EasyPrivacy】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad3.txt
15.【ad3.txt 合并自乘风视频广告过滤规则、EasylistChina、EasylistLite、CJX’sAnnoyance、EasyPrivacy】raw.githubusercontent.com/o0HalfLife0o/list/master/ad3.txt
16.【ad-edentw.txt 合并自 Adblock Warning Removal List、ABP filters、anti-adblock-killer-filters】cdn.jsdelivr.net/gh/o0HalfLife0o/list@master/ad-edentw.txt
17.【ad-edentw.txt 合并自 Adblock Warning Removal List、ABP filters、anti-adblock-killer-filters】raw.githubusercontent.com/o0HalfLife0o/list/master/ad-edentw.txt
18.【anti-AD 规则目前中文区命中率最高的广告过滤列表,实现了精确的广告屏蔽和隐私保护,屏蔽广告域名、电视广告、APP 内置广告,同时屏蔽了一些日志收集、大数据统计等涉及个人隐私信息的站点,能够保护个人隐私不被偷偷上传】raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/anti-ad-easylist.txt
19.【anti-AD 规则目前中文区命中率最高的广告过滤列表,实现了精确的广告屏蔽和隐私保护,屏蔽广告域名、电视广告、APP 内置广告,同时屏蔽了一些日志收集、大数据统计等涉及个人隐私信息的站点,能够保护个人隐私不被偷偷上传】raw.githubusercontent.com/privacy-protection-tools/anti-AD/master/adblock-for-DNSMASQ.conf
20.【Anti-AD CDN 加速】anti-ad.net/easylist.txt
21.【Anti-AD CDN 加速】cdn.jsdelivr.net/gh/privacy-protection-tools/anti-AD@master/anti-ad-easylist.txt
22.【adgk 手机去广告规则】raw.githubusercontent.com/banbendalao/ADgk/master/ADgk.txt
23.【Youtube 去广告】sdwz.icu/TQtFq
24.【大圣净化】cdn.jsdelivr.net/gh/jdlingyu/ad-wars@master/hosts
25.【澳门皇家赌场及恶意广告主机列表】raw.githubusercontent.com/Goooler/1024_hosts/master/hosts
26.【adgk 手机去广告规则】raw.githubusercontent.com/banbendalao/ADgk/master/ADgk.txt
27.【EasyPrivacy 去跟踪 从网络上完全删除所有形式的跟踪,包括 Web 错误、跟踪脚本和信息收集,从而保护您的个人数据】easylist-downloads.adblockplus.org/easyprivacy.txt
28.【Adbyby】raw.githubusercontent.com/adbyby/xwhyc-rules/master/lazy.txt
29.【Adbyby CDN 加速】cdn.jsdelivr.net/gh/adbyby/xwhyc-rules@master/lazy.txt
30.【Adbyby video】raw.githubusercontent.com/adbyby/xwhyc-rules/master/video.txt
31.【CDN 加速列表】cdn.jsdelivr.net/gh/adbyby/xwhyc-rules@master/video.txt
32.【ADH 去广告拦截】raw.githubusercontent.com/BlueSkyXN/AdGuardHomeRules/master/all.txt
33.【其他大神推荐,3 个随便选一个即可】
链接:cats-team.github.io/AdRules/DNS.txt
链接:gitlab.com/cats-team/adrules/-/raw/main/DNS.txt
链接:adrules.top/DNS.txt

5. 白名单推荐

有误杀可尝试使用白名单,添加到 Adguardhome 的允许清单 (不保证一定能解决问题),下面的地址请自己加上 https:// 前缀。
cats-team.github.io/AdRules/allow-domains-list.txtgitlab.com/cats-team/adrules/-/raw/main/allow-domains-list.txtadrules.top/allow-domains-list.txt
notion image
  1. 自定义规则
也可以添加你的规则列表,在允许清单里加上这个网址,这个网站就可以使用了,相当于给这个网站开了一个特权。
notion image
ADGUARD 过滤语法规则,一行一回车,常用的就是第一二条。手动添加和接触拦截。直接复制,然后将里面的网址替换掉就可以了。
||example.org^ – 拦截 example.org 域名及其所有子域名
@@||example.org^ – 放行 example.org 及其所有子域名
比如我们要放行值得买网站及其子域名,只要添加一行代码就可以了,用于访问个别网站时候有 BUG 时快速添加。
@@||post.smzdm.com^
notion image

7.Adguardhome 重定向【作为 DNSMASQ 上游服务器】

回到基本设置,会看到 Adguardhome 运行中、已重定向。
notion image
【作为 DNSMASQ 上游服务器】,可以看到前面的重定向变成了 5351 重定向,这个也就是 AdGuard Home 的 DNS 监听端口,如果你设置成 8336、8338 或者其他,这里显示的就是你设置的端口值。选择【作为 DNSMASQ 的上游服务器】,这样设置之后 Adguardhome 变成了 DNSMASQ 的上级 DNS 服务器。
notion image

六、DNSMASQ 设置

最后一步设置 DNSMASQ。打开网络——DHCP/DNS,可以看到 DNSMASQ 服务,主要是解除 DNSMASQ 的 DNS 功能,只保留转发功能,让 DNSMASQ 作为 AdGuard Home 的下级服务生效。
我们到 DNSMASQ 看下目前的状态,在【网络】→【DHCP/DNS】→DNS 转发,可以看到,DNS 转发内已经自动设置成了 127.0.0.1#5351。如果转发路径不对,就强制改成 127.0.0.1#5351。
notion image

2.HOSTS 和解析文件

这里忽略掉解析文件,不用 DNSMASQ 的解析。
【/etc/hosts】是记录本地配置的域名和 IP 的映射的文件,是域名解析 (如 ping,http 访问) 时域名的第一解析方式。DNSMASQ 可以选择加载 /etc/hosts 到本地缓存,也可以选择不加载。
如果选择加载:当客户端 (client) 设备的 DNS 请求的域名正好在 /etc/hosts 中的情况下,DNSMASQ 直接回复 /etc/hosts 域名对应的 IP 地址。
如果选择不加载:DNSMASQ 则会将请求转发到公共的 DNS 服务器去解析,而不是使用 /etc/hosts 中的记录,通过 —no-hosts 选项可以选择是否加载 /etc/hosts 内容作为 DNSMASQ 的 DNS 的本地缓存。
【/etc/resolv.conf】该文件主要记录 DNS 的 Name Server,对于没在 /etc/hosts 记录的域名,系统向 Name Server 发起 DNS 请求,从而解析域名。
notion image

3. 高级设置

前半部分保持默认即可:
notion image
同样在在【网络】→【DHCP/DNS】高级设置里面 DNSMASQ 还是在监听 53 端口。DNS 查询缓存的大小设置为 0。不使用 DNSMASQ 的 DNS 缓存。点击保存生效。
notion image
到这里整个设置完成了,从 DNSMASQ→AdGuard home→SmartDNS 设置好了。DNSMASQ 监听本地【53 端口】,将请求转发到 AdGuard Home 监听的【5351 端口】,然后 AdGuard Home 再转发到 SmartDNS 查询最快的 DNS,然后提交给 DNSMASQ,然后发送到 ikuai 主路由。回程数据首先发送到 ikuai,然后经过 SmartDNS 交给 AdGuard home 进行处理,返回到 DNSMASQ,然后发送回设备。
查询流程:
notion image
进入配置网页,仪表盘里你会发现已经开始 DNS 查询和广告拦截了。这里我们看到客户端拦截列表里看到的全部都是 127.0.0.1 的数据。我们前面在重定向模式中选择了【作为 DNSMASQ 上游服务器】, DNS 请求第一步经过 DNSMASQ,然后才到 Adguardhome,所以 Adguardhome 接受到的都是 53 端口的 DNS 请求,这时候 Adguardhome 自是无法区分是哪个客户端发过来的请求,所以才出现了后台拦截的全都是 127.0.0.1 的数据。这里小伙伴不需要纠结,影响不大,稳定第一。
notion image

4.AdGuard Home 手动设置代码:

如果懒得设置也可以使用别人的代码,不过容易出问题,最好的方法就是自己花个十几分钟设置一下。本次设置的代码如下:
bind_host: 0.0.0.0 bind_port: 3000 users: - name: root password: $2a10HUb1IkETLPc/b.pgaWHQoeV5NplfV auth_attempts: 5 block_auth_min: 15 http_proxy: "“language:”" theme: auto de_pprof: false web_session_ttl: 720 dns: bind_hosts: - 0.0.0.0 port: 5351 statistics_interval: 1 querylog_enabled: true querylog_file_enabled: true querylog_interval: 2160h querylog_size_memory: 1000 anonymize_client_ip: false protection_enabled: true blocking_mode: default blocking_ipv4: "“blocking_ipv6:”" blocked_response_ttl: 10 parental_block_host: family-block.dns.adguard.com safebrowsing_block_host: standard-block.dns.adguard.com ratelimit: 0 ratelimit_whitelist: [] refuse_any: true utream_dns: - 127.0.0.1:6053 - 127.0.0.1:5335 utream_dns_file: "" bootstrap_dns: - 127.0.0.1:6053 all_servers: true fastest_addr: false fastest_timeout: 1s allowed_clients: [] disallowed_clients: [] blocked_hosts: - version.bind - id.server - hostname.bind trusted_proxies: - 127.0.0.0/8 - ::1/128 cache_size: 0 cache_ttl_min: 0 cache_ttl_x: 0 cache_optimistic: false bogus_nxdoin: [] aaaa_disabled: true enable_dnssec: true edns_client_subnet: true x_goroutines: 300 handle_ddr: true iet: [] iet_file: "" filtering_enabled: true filters_update_interval: 24 parental_enabled: false safesearch_enabled: false safebrowsing_enabled: false safebrowsing_cache_size: 1048576 safesearch_cache_size: 1048576 parental_cache_size: 1048576 cache_time: 30 rewrites: [] blocked_services: [] utream_timeout: 10s private_networks: [] use_private_ptr_resolvers: true local_ptr_utreams: [] use_dns64: false dns64_prefixes: [] serve_http3: false use_http3_utreams: false tls: enabled: false server_name: "" force_htt: false port_htt: 443 port_dns_over_tls: 853 port_dns_over_quic: 853 port_dnscrypt: 0 dnscrypt_config_file: "" allow_unencrypted_doh: false certificate_chain: "“private_key:”" certificate_path: "“private_key_path:”" strict_sni_check: false filters: - enabled: true url: htt://raw.githubusercontent.com/o0HalfLife0o/list/ster/ad-pc.txt name: 【ad-pc.txt】推荐桌面端,合并自乘风视频广告过滤规则、Easylist、EasylistChina、EasyPrivacy、CJX’sAnnoyance,以及补充的一些规则; id: 1676121231 - enabled: true url: htt://raw.githubusercontent.com/banbendalao/ADgk/ster/ADgk.txt name: 【adgk 手机去广告规则】 id: 1676121232 - enabled: true url: htt://sdwz.icu/TQtFq name: 【Youtube 去广告】 id: 1676121233 - enabled: true url: htt://cdn.jsdelivr.net/gh/jdlingyu/ad-wars@ster/hosts name: 【大圣净化】 id: 1676121234 - enabled: true url: htt://raw.githubusercontent.com/Goooler/_hosts/ster/hosts name: 【host 及澳门皇家赌场及恶意广告主机列表】 id: 1676121235 - enabled: true url: htt://adguardteam.github.io/HostlistsRegistry/assets/filter_21.txt name: ‘CHN: anti-AD’ id: 1676121236 whitelist_filters: [] user_rules: - ‘@@||jd.com^’ - ‘@@||smzdm.com^’ - ‘@@||post.smzdm.com^’ dhcp: enabled: false interface_name: "" local_doin_name: lan dhcpv4: gateway_ip: "“subnet_sk:”" range_start: "“range_end:”" lease_duration: 86400 icmp_timeout_msec: 1000 options: [] dhcpv6: range_start: "" lease_duration: 86400 ra_slaac_only: false ra_allow_slaac: false clients: runtime_sources: whois: true arp: true rdns: true dhcp: true hosts: true persistent: [] log_file: "" log_x_backu: 0 log_x_size: 100 log_x_age: 3 log_compress: false log_localtime: false verbose: false os: group: "“user:”" rlimit_nofile: 0 sche_version: 14

5. 如何修改 Adguardhome 密码

如果直接使用上面的代码可能导致主页登录不上去,可以看到代码里面是有一段加密的密码的,这里就需要我们去改一下密码,然后保存生效。
notion image
在 Adguardhome 的基础设置页面,翻到最下面,可以看到有一个功能框,选择改变网页登录密码,点添加。
notion image
可以看到网页上出现了一个改变网页登录密码的框,这里输入密码点载入计算模块,点计算即可生成新密码。
notion image
将生成的新密码复制到自定义设置里去粘贴一下就可以用新密码登录了。
notion image

七、验证已经生效?

采用命令测试最快 IP,如果返回多个说明没有设置成功。
nslookup www.taobao.com 127.0.0.1:6053 返回的是国内最快的 IP
nslookup www.taobao.com 127.0.0.1:5335 返回的是国外最快的 IP
nslookup www.baidu.com 127.0.0.1:6053 返回的是国内最快的 IP
nslookup www.baidu.com 127.0.0.1:5335 返回的是国外最快的 IP
notion image

小结

好了今天《OpenWrt 旁路由模式下的 SmartDNS+AdGuardHome 设置分流与去广告》就完成了。下一篇会继续折腾《个人域名、DDNS 动态解析、公网 IP:通过 ikuai 软路由端口映射高速访问内部网络
★ 以上就是本期的全部内容了,有疑问或补充~ 欢迎评论区留言~~ 感兴趣的朋友,关注一下不迷路
notion image

往期相关文章

notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
notion image
> 本文由简悦 SimpRead 转码
技术折腾
  • openwrt
  • 路由
  • PVE 世界常见的存储格式,qcow2/raw/vmdk_pve 存储管理_natsusao 的博客 - CSDN 博客解决 openwrt 旁路由访问国内网络慢的问题
    目录