Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

路由器 杨海雄 4周前 (04-17) 329次浏览 0个评论
文章目录[隐藏]

DNS 解析工作流程

DNS 优化的原则

  1. 需要被代理的域名、必须在远端代理服务器上进行解析、才能得到最合适的解析结果。
  2. 在本地对需要代理的域名进行 DNS 解析,只不过是为了让 Surge/Clash 等软件能够基于 IP 分流(Surge/Clash 的 TUN/TAP 会直接返回 Fake IP、本地 DNS 解析的结果根本不会暴露给外部)罢了。

Fake-IP(增强)模式

  1. 客户端进行通讯时会先进行 DNS 查询目标 IP 地址,拿到查询结果后再尝试进行连接。
  2. Fake-IP 模式在客户端发起 DNS 请求时会立即返回一个保留地址(198.18.0.1/16),同时向上游 DNS 服务器查询结果,如果判定返回结果为污染或者命中代理规则,则直接发送域名至代理服务器进行远端解析。
  3. 此时客户端立即向 Fake-IP 发起的请求会被快速响应,节约了一次本地向 DNS 服务器查询的时间。
  4. 因为采用 fake-ip 模式,DNS 是在远端 airport 托管服务器进行解析,openclash 的 DNS 只配置 nameserver 组进行查询规则匹配即可。
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

准备

  1. Openclash 插件核心更新到最新版
  2. Adguar Home 插件核心更新到最新版

正文

Openclash + MoDNS + Adguard 设置

  1. Openwrt 网络设置 -> 防火墙
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

  2. Openwrt 网络设置 -> 接口 -> 选择 LAN 口修改
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

  3. Openwrt 修改 DHCP/DNS 的常规设置
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

  4. 修改 MosDNS
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

  5. Openclash 插件设置
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

  6. Adguard Home 设置
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
    Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

  7. 关闭浏览器安全 DNS 功能

Openclash 开发者自定义配置

目的:实现 国内流量完全不走 Clash 核心
在使用此配置组合时,发现即便是 DNS 解析国内域名返回的时非 FakeIP,但流量依旧走 OpenClash 内核
Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
如上图,baidu 也通过 openclash 访问
因此在网上搜索,参考了这个博客:https://songchenwen.com/tproxy-split-by-dns
虽然 DNS 分流方式和论坛中的方式略有差异,但思路可以借鉴。
其中关键的配置调整如下:
首先:插件设置 – 模式设置 – 运行模式 必须 切换到 Fake-IP(增强)模式,其他方式即便修改了防火墙规则,也无法使国内流量避开 OpenClash 流量转发
然后:在 插件设置 – 开发者选项 中替换为附件中的脚本。
脚本主要的逻辑:删除 Openclash 创建的规则,删除成功后,即可实现只对 Fakeip 的流量通过 OpenClash 转发

OpenClash NFTables 默认规则如下,红框为对 TCP 流量的默认转发规则
Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

由于我的 OpenWRT 为22.03.5 版本,防火墙默认实现改为了 NFTables,
我按照博客中实现的思路 使用 NFTables 命令删除了 OpenClash 创建的规则
注意:由于删除了默认转发规则,部分直连 IP 且需要代理的应用会上网海淘失败,因此需要对个别不需要 DNS 解析直接上网海淘的应用特殊处理,如:****电报。

由于我的 OpenWRT 版本使用的是非 Iptables 防火墙,Iptables 命令我没有做测试,仅做参考(有朋友已经测试通过了),
如果导致无法正常代理 science,删除自定义规则重新启动 OpenClash 即可恢复。

按如上步骤删除规则并配置好,通过 MosDns 解析的国内 IP 流量将不会通过 OpenClash 转发,体现在 Openclash 的控制面板中查看不到国内的流量,理论上性能会有所提升,同时路由器也可以正常开启使用 Ipv6。

具体你可以看一下 OpenClash 的启动日志,如果是 NFTables 会有相应提示,否则应该是 Iptables
Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程

Modns 安装

opkg update
opkg install curl

sh -c "$(curl -ksS https://raw.githubusercontent.com/sbwml/luci-app-mosdns/v5/install.sh)"

问题 1:AdGuardHome 未运行未重定向这时候在后台 ssh 执行

用 ssh 登录 openwrt 后,输入下面的代码回车即可,无需重启 openwrt

chmod 755 /etc/init.d/AdGuardHome service AdGuardHome restart

问题 2:AdGuardHome 运行中未重定向 核心版本:v0.102.0 没有配置文件 no core 没有核心

这时候登录 http://192.168.2.1:3000/install.html 进行配置既可。,注意 ip 改成你自己的 ip。 网页端口改 所有 3000 dns 服务 所有 55 你也可以自己改 默认的 53 端口已经被占用

配置成功后会有如下提示:

配置您的设备 为保证 AdGuard Home 可以开始正常工作,您需要在设备上对其进行配置。AdGuard Home DNS 服务器正在监听以下地址: 127.0.0.1:55 192.168.0.50:55 192.168.2.1:55 [::1]:55 [fdad:ca6e:cd0b::1]:55 恭喜 AdGuardHome 运行中已重定向

这时候在 openwrt 后台查看 AdGuardHome 已经正常运行了。

回到 openwrt 下的 AdGuardHome 管理界面,刷新后重新尝试更新核心文件后启动 AdGuardHome 服务即可。

转载自恩山,结合了本人在使用过程中,做了部分调整,以做记录


杨海雄 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Openwrt 旁路由 + MoDNS + Openclash + Adguard Home 配置教程
喜欢 (0)

您必须 登录 才能发表评论!