前言
折腾了很久的最终配置,同时实现:
- 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 和 luci-app-mosdns 软件包。本文所用版本:mosdns v5.1.3、luci-app-mosdns v5.1.3。
配置
MosDNS 采用插件化设计,可以完全自定义 DNS 处理逻辑、支持广告过滤、GeoIP 和 GeoSite 匹配,配置非常灵活也较为复杂,文档在这。省流可以直接使用 luci-app-mosdns 的内置预设配置,带有较完善的功能。
基本选项,不勾选“DNS 转发”(将手动设置转发逻辑)和“本地 DNS”(从 WAN 接口获取上游 DNS 服务器用于境内解析,若容易被运营商污染可以使用“自定义配置文件”并修改上游 DNS);设置一个合适的监听端口(如 5300),之后要将 AdGuard Home 的上游 DNS 设置为该地址。
高级设置中的内容按需更改。
AdGuard Home 配置
AdGuard Home 是一款全网广告拦截与反跟踪软件。在您将其安装完毕后,它将保护您所有家用设备,同时您不再需要安装任何客户端软件。随着物联网与连接设备的兴起,掌控您自己的整个网络环境变得越来越重要。
安装
AdGuard Home(以下简称 AGH)是一个独立运行软件,拥有自己的控制台页面。若想通过 LuCI 进行一些配置,可以在 这个 GitHub 仓库 下载 luci-app-adguardhome
。注意此仓库年久失修,不保证新版兼容性。在 AdGuard Home v0.107.29 和 OpenWrt eSir 2023v1 上测试正常。
若不需要 LuCI 界面,也可以直接通过 shell 安装。以下内容由 ChatGPT 翻译自 OpenWrt 官网:
自 21.02 版本以来,有一个官方的 AdGuard Home 软件包可以通过 opkg 安装。
已确认 21.02 版本的 opkg 软件包也可在 19.07 上使用,但需要通过 SSH 或 SCP 传输正确的 ipk 文件,并手动使用 opkg 进行安装,因为该软件包不在 19.07 软件包存储库中。
当使用官方软件包时,所需依赖项(ca-bundle)将自动解决和安装。
1opkg update 2opkg 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 在启动时自动启动并开始服务:
1service adguardhome enable 2service adguardhome start
拦截器设置
AGH 安装完成后从默认的 <路由器 ip>:3000
进入配置页面,设置 DNS 监听端口为 5335(或者其他你喜欢的)。每个设置选项的功能可以参照 这个链接,其实这个软件的大部分设置我们都用不到(AGH 甚至还有 DHCP 服务器功能),只需要在 过滤器-DNS黑名单
中添加黑名单拦截即可。
拦截规则非常消耗内存,低性能设备需要控制拦截器加载条数。256MB 内存设备推荐规则控制在 7 万条左右,只开启 anti-AD 即可。
DNS 设置
因为要共存 IPv6,注意取消勾选 禁用IPv6 地址的解析
。可选择关闭缓存。**上游 DNS 服务器只填一个(如 127.0.0.1:5300
),即 MosDNS 的监听地址。**其余全部保持默认即可。
OpenClash 配置
安装
一般固件都有 打包,若无可查看 官方文档。
首先确认使用版本,新版或旧版的界面可能有所不同。
OpenClash 基础操作若不会可以参考 这个教程。
设置
插件设置
基础设置,建议使用 Redir-Host,相较 Fake-IP 虽然理论速度慢但更加稳定,Fake-IP 可能存在 SSH 连接问题。不同模式可参照 官方文档(已过时)。
流量控制设置,不勾选绕过大陆的原因是希望所有请求都走接下来的 AdGuard Home 和 MosDNS。
DNS 设置,选择“使用 dnsmasq 转发”将会在 OpenClash 启动时修改“网络-DHCP/DNS-基本设置-DNS 转发”的规则,将本机 53 端口的 DNS 请求转发到 OpenClash 监听的 7874(默认)端口,而在 OpenClash 关闭时将会删除这条规则。
重要,不勾选“代理 IPv6 流量”、勾选“允许 IPv6 类型 DNS 解析”。“允许 IPv6 类型 DNS 解析”实际上和“网络-DHCP/DNS-高级设置-禁止解析 IPv6 DNS 记录”是联动的设置项。
覆写设置
DNS 设置,只勾选“自定义 DNS 服务器”,下方自定义上游服务器,在 NameServer、Fallback、Default-NameServer 三项中都只启用 127.0.0.1:5335(AdGuard Home 的监听地址)
的 UDP 规则。
这种配置的一个缺点是 AdGuard Home 日志里看到的设备请求来源全是 127.0.0.1
,但是无伤大雅。
运行效果
去广告测试
可以用 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 加载规则过少,相较开启浏览器插件效果显著下降。但总体而言还是不 错的,反正配都配了,总不能不用)差强人意吧。
性能测试
走这么一套下来还是能跑满千兆带宽。
南大这个速度很低,应该是他们服务器的瓶颈。
别说油管 8K 了,哪天开 16K 都稳稳的。
我的软路由是 OpenWrt 虚拟机,CPU 是 16C32T 的 AMD EPYC 7282,分了 4 个核心(线程)给 OpenWrt。内存是 2GB、存储是 8GB。这个配置纯纯 overkill,实际上 Zen2 这么强(相对于软路由而言)的架构只需要单核 + 512MB 内存就够了。
现在你拥有透明代理 + 去广告,再也不用给 shell 单独设置代理、给 npm / maven / pip 换源了。一次设置全设备享受,愉快冲浪吧!
以上。