OpenWrt: OpenClash + AdGuardHome + MosDNS + IPv6 共存配置

OpenWrt: OpenClash + AdGuardHome + MosDNS + IPv6 共存配置

jojo100 11 2024-07-17

现在你拥有透明代理 + 去广告,再也不用给 shell 单独设置代理、给 npm / maven / pip 换源了。一次设置全设备享受,愉快冲浪吧!

前言

折腾了很久的最终配置,同时实现:

  • OpenClash 透明代理

  • 海外 v4 + 教育网 v6 双栈共存

  • MosDNS 防污染

  • AdGuard Home DNS 去广告

  • 802.11r 单 SSID 双频快速切换(将在另一篇 cover)

已相对稳定运行两个月。若有纰漏,敬请指正。

省流:53 端口 dnsmasq -> 7874 端口 OpenClash -> 5335 端口 AdGuard Home -> 5300 端口 MosDNS。

注:稳定运行 OpenClash + AdGuardHome + MosDNS 需至少 512MB 的内存,不推荐在低端设备上使用。256MB 内存的设备(在红米 AX6S 上测试)可以仅使用 OpenClash + MosDNS,利用 MosDNS 自带的广告过滤功能,经测试可以稳定运行。同时开 OpenClash + AdGuardHome 极易爆内存杀进程。

MosDNS 配置

MosDNS 是一个插件式 DNS 转发器。用户可以根据需要拼接插件,定制自己的 DNS 处理逻辑。

配置

MosDNS 采用插件化设计,可以完全自定义 DNS 处理逻辑、支持广告过滤、GeoIP 和 GeoSite 匹配,配置非常灵活也较为复杂,文档在这。省流可以直接使用 luci-app-mosdns 的内置预设配置,带有较完善的功能。

基本选项,不勾选“DNS 转发”(将手动设置转发逻辑)和“本地 DNS”(从 WAN 接口获取上游 DNS 服务器用于境内解析,若容易被运营商污染可以使用“自定义配置文件”并修改上游 DNS);设置一个合适的监听端口(如 5300),之后要将 AdGuard Home 的上游 DNS 设置为该地址。

高级设置中的内容按需更改。

1-vurm.avif

AdGuard Home 配置

AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。

安装

AdGuard Home(以下简称 AGH)是一个独立运行软件,拥有自己的控制台页面。若想通过 LuCI 进行一些配置,可以在 这个 GitHub 仓库 下载 luci-app-adguardhome。注意此仓库年久失修,不保证新版兼容性。在 AdGuard Home v0.107.29 和 OpenWrt eSir 2023v1 上测试正常。

2-kznx.avif

luci-app-adguardhome 的界面

若不需要 LuCI 界面,也可以直接通过 shell 安装。以下内容由 ChatGPT 翻译自 OpenWrt 官网

自 21.02 版本以来,有一个官方的 AdGuard Home 软件包可以通过 opkg 安装。

已确认 21.02 版本的 opkg 软件包也可在 19.07 上使用,但需要通过 SSH 或 SCP 传输正确的 ipk 文件,并手动使用 opkg 进行安装,因为该软件包不在 19.07 软件包存储库中。

当使用官方软件包时,所需依赖项(ca-bundle)将自动解决和安装。

opkg update

opkg install adguardhome

默认情况下,官方 OpenWrt 软件包使用以下路径和目录:

AdGuardHome 应用程序将被安装到 /usr/bin/AdGuardHome
主要 adguardhome.yaml 配置文件存储在 /etc/adguardhome.yaml 中。
默认工作目录是 /var/adguardhome(默认情况下,/var 是指向 /tmp 的符号链接)。
可以在 /etc/config/adguardhome 中配置工作目录。
提供了一个 init.d 脚本,在 /etc/init.d/adguardhome 处。
默认配置的工作目录意味着重启后查询日志和统计信息将丢失。为避免这种情况,请配置持久性存储路径(例如 /opt 或 /mnt),并相应地更新工作目录。

要使 AdGuard Home 在启动时自动启动并开始服务:

service adguardhome enable

service adguardhome start

拦截器设置

AGH 安装完成后从默认的 <路由器 ip>:3000 进入配置页面,设置 DNS 监听端口为 5335(或者其他你喜欢的)。每个设置选项的功能可以参照 这个链接,其实这个软件的大部分设置我们都用不到(AGH 甚至还有 DHCP 服务器功能),只需要在 过滤器-DNS黑名单 中添加黑名单拦截即可。
3-simt.avif

拦截规则非常消耗内存,低性能设备需要控制拦截器加载条数。256MB 内存设备推荐规则控制在 7 万条左右,只开启 anti-AD 即可。

DNS 设置

因为要共存 IPv6,注意取消勾选 禁用IPv6 地址的解析。可选择关闭缓存。**上游 DNS 服务器只填一个(如 127.0.0.1:5300),即 MosDNS 的监听地址。**其余全部保持默认即可。

4-nunw.avif

AGH 设置 – DNS 设置

5-ptfb.avif

AGH 设置 – DNS 设置

OpenClash 配置

一般固件都有打包,若无可查看 官方文档

首先确认使用版本,新版或旧版的界面可能有所不同。

6-dcmo.avif

OpenClash 基础操作若不会可以参考 这个教程

插件设置

基础设置,建议使用 Redir-Host,相较 Fake-IP 虽然理论速度慢但更加稳定,Fake-IP 可能存在 SSH 连接问题。不同模式可参照 官方文档(已过时)

7-kplx.avif

模式设置

流量控制设置,不勾选绕过大陆的原因是希望所有请求都走接下来的 AdGuard Home 和 MosDNS。

8-oopk.avif

流量控制设置

DNS 设置,选择“使用 dnsmasq 转发”将会在 OpenClash 启动时修改“网络-DHCP/DNS-基本设置-DNS 转发”的规则,将本机 53 端口的 DNS 请求转发到 OpenClash 监听的 7874(默认)端口,而在 OpenClash 关闭时将会删除这条规则。

9.avif
DNS 设置

重要,不勾选“代理 IPv6 流量”、勾选“允许 IPv6 类型 DNS 解析”。“允许 IPv6 类型 DNS 解析”实际上和“网络-DHCP/DNS-高级设置-禁止解析 IPv6 DNS 记录”是联动的设置项。

10.avif

IPv6 设置

覆写设置

DNS 设置,只勾选“自定义 DNS 服务器”,下方自定义上游服务器,在 NameServer、Fallback、Default-NameServer 三项中都启用 127.0.0.1:5335(AdGuard Home 的监听地址) 的 UDP 规则。

这种配置的一个缺点是 AdGuard Home 日志里看到的设备请求来源全是 127.0.0.1,但是无伤大雅。

11.avif
DNS 覆写设置

运行效果

去广告测试

可以用 Test Ad Block 或 AdBlock Tester 这两个网站检测去广告效果。

须知 AGH 这种 DNS 过滤器从原理上只能拦截识别为广告域名的请求,对于例如 YouTube 手机 App 端这种,广告和数据同域名的就无能为力了。而且 AGH 也没法像浏览器插件那样操纵网页 DOM 树,对于页面上碍眼的元素无能为力。但 AGH 胜在对终端用户完全透明,可以让家人无感知地享受到更清爽的网络环境。

以下是在红米 AX6000,AGH 加载约 10 万条规则、两个网站仅开启路由器 AdGuard Home 和开启路由器 AdGuard Home + 浏览器 uBlock Origin 的测试结果。Test Ad Block 这种非常吃规则数量的测试,AGH 加载规则过少,相较开启浏览器插件效果显著下降。但总体而言还是不错的,反正配都配了,总不能不用)差强人意吧。

12.avifAdBlock Tester 仅开启路由器 AdGuard Home 得分 47

13.avif

AdBlock Tester 开启路由器 AdGuard Home + 浏览器 uBlock Origin 得分 96

14.avif

Test Ad Block 仅开启路由器 AdGuard Home 过滤 16%

15.avifTest Ad Block 开启路由器 AdGuard Home + 浏览器 uBlock Origin 过滤 88%

原文:https://blog.riddma.com/article/openwrt-openclash-adguard-home-mosdns-ipv6-configuration/

转载不全,感谢原作者