之前使用 OpenClash 自带的分流,总感觉打开国内网站很慢,例如京东经常加载半天,微信图片也加载半天,遂在网上研究了下,得到现在的 DNS 分流方案 AdGuardHome+OpenClash+MosDNS ,现在完全不会影响国内网站,上网体验非常丝滑
目前我是使用的旁路由方案,主路由是爱快,负责拨号上网,旁路由是 OpenWrt ,负责科学以及 DNS 服务器。IPv4 这边网关以及 DNS 都指向 OpenWrt ,打开 IPv6 ,开启 DHCPv6 ,但是不开启 IPv6 DNS ,DNS 复用 IPv4 的,IPv6 的网关使用默认配置,也就是指向爱快。
数据流向是 AdGuardHome -> OpenClash -> MosDNS
DNS 主入口直接用 AdGuardHome ,彻底弃用 OpenWrt 自带的 dnsmasq ,具体配置是使用 53 端囗替换 dnsmasq ,这样广告拦截效率更高,广告可以在第一道关卡就被拦截,不用流转多道
OpenClash 的 NameServer 、FallBack 、Default-NameServer 都只设置一个上游,就是 MosDNS
MosDNS 负责最终的分流以及 DSN 缓存,配置好国内 DNS 服务器以及远程 DNS 服务器,有一个关键选项要开启,远程 DNS 首选 IPv4 ,这样对于需要代理的国外域名就只会返回 IPv4
这套配置的核心思想是对于国内域名使用 IPv6 进行访问,网关直接就到爱快主路由,摆脱 OpenClash 对于国内网站的影响,目前国内主流网站 IPv6 建设基本已经非常完善,使用 IPv6 完全没有问题,如果没有 IPv6 也会自动 fallback 到 IPv4 。需要代理的国外域名,由于只有 IPv4 ,网关指向 OpenWrt ,就会被 OpenClash 代理到。
虽然是分流了,但是 DNS 泄露检测不通过,这个目前还在研究
![]() |
1
Ipsum 7 天前 via Android
我感觉 ADG-Mos-clash 更好点。或者自己写个 gfw2adg 软件,mos 都可以扔了。
|
![]() |
2
EGOISTK21 7 天前
我是这样的,ADG-Mos-tun2socks-代理客户端
|
![]() |
3
chinni 7 天前
其实 dns 没必要这么复杂, 最上游用 udpme 直接转发到 8.8.8.8 就可以了。 然后 要去广告的话前面套一层任意支持全广告的 dns 上游设置为 udpme 。
|
![]() |
5
Laoz666 7 天前
现在 op 都是 fake ip 了 你多转一道都没必要 你觉得慢只是你没设置好 和 dns 没关系
|
![]() |
10
Ipsum 7 天前
@xuxiake #9 过 clash 的不是 fake ip ? real ip 多少有点小问题,比如同时挂在 cf 下面的网站。现在比较完美点的方案是 fakeip 持久化,过 clash 的都是 fakeip 返回,主路由做个 198 的静态就行了。
|
11
Xopher 7 天前 via iPhone
open clash 太难用,用 nikiniki ,自己写的配置文件,感觉够用
|
![]() |
12
terrancesiu 7 天前
其实 adh 就够了,前提是你去境外 dns 都走的是隧道,然后使用 8.8.8.8 或者其他支持 edns 的公共 dns ,最后在 adh 里填写一个你的 isp 的 ip ,基本上解析就非常好了。比如我在阿里云广州配置的 adh ,使用 8.8.8.8 解析的 taobao 就是广州电信的,jd 也是,腾讯也是广东省内,但是 google 都是解析到 sea 了,最后改成 surfshark 的境外 dns 后,国内依旧非常近,google 都解析到了 hkg 。
|
![]() |
13
docx 7 天前 via iPhone
套娃这是……代理环境就解决了 DNS ,其它都不需要
|
![]() |
14
crysislinux 7 天前 via Android
@terrancesiu 确实,我感觉 Google 的 edns 还是挺准的,作为一个 fallback 还是够用了。
|
![]() |
15
MYDB 7 天前 via iPhone
dns 泄漏管它干啥,虽然苍蝇不叮无缝的蛋了,但是人总会优先吃无缝的蛋或者处理腐烂的蛋
|
17
sxwsuieyqwe11 7 天前 via iPhone
我只用 AdGuardHome ,其实它也能分流国内外 dns 请求。
|
![]() |
18
Mystery0 6 天前
我之前是用 adh -> mosdns 的方案,但是 mosdns 每次要改分流都要登路由器去修改(自定义配置文件的方案无法启动,不知道为什么),现在换成了 adh -> singbox 的方案,singbox 单独开了个端口入站用来配置出站规则,dns 如果有需要调整的直接远程改 singbox 模板( openwrt 、mac 、Android 我用的模板不一样但是里面大部分规则一样,区别主要是包名、进程名这些不同平台的支持差异)然后拉了自动重启就行了
因为我自己要用公司的 vpn ,(相关请求理论上不走 singbox ,如果走了 singbox 就指定网卡出去)所以不能用 fakeip ,其他还有一些就是在家访问公司 vpn (公司我放了个树莓派,与家里组网,在家里就让 singbox 走 tailscale 网卡走到树莓派然后代理出去) |
![]() |
19
383394544 6 天前
怎麼不在 iKuai 上做 dns 分流,只把需要代理的流量交給 openwrt ?這樣國內上網會更快
|
![]() |
20
SenLief 6 天前
其实 dns 分流没必要那么详细,因为大部分人使用的网站就那么多,大部分在访问一次缓存后就就非常快了,全部代理都没什么问题的。
|
![]() |
21
TossPig 6 天前
我也分享一下我的方案
`agh 192.168.1.53:53 -> mosdns 192.168.1.53:5353 -> clash 192.168.1.8:53` 我是旁路由模式 需要翻墙的域名会被解析为 22.0.0.0/8,这样除了 tg 其他设备都可以局域网内透明翻墙 dhcp 下发静态路由 22.0.0.0/8 gw 192.168.1.8 路由器中也配置静态路由 22.0.0.0/8 到 192.168.1.8 (主要是 andriod 不支持 dhcp 下发路由) agh 总体分两路 1. 127.0.0.1,192.168.1.1 、192.168.1.8 、192.168.1.53 来源的直接用公共上游 doh 或者 dot 2. 其他上游用 127.0.0.1:5353 也就是 mosdns mosdns 的规则比较多总体思路就是 需要特殊处理的的域名丢给 clash 或者其他一些解析器 不用特殊的丢给 agh 因为来源是 127.0.0.1 ,所有 agh 会用公共上游 mosdns 的主要作用是读取各种域名规则,还有就是 ros 不支持内网的 ptr 反查,也靠 mosdns ,要不然每次 nslookup 的时候`服务器`显示个 unkown 我就很难受 ![]() ``` PS C:\Users\ts> nslookup baidu.com 服务器: dns.ts.internal Address: 192.168.1.53 名称: baidu.com Addresses: 182.61.244.181 182.61.201.211 ``` 用了快一年了,很方便,临时要控制某个域名的出口 agh 网页里面调整一下就好 agh 的日志功能也能很方便的找到某个域名走的哪个远程地址,不用去路由器上慢慢抓包,统计功能也可靠了 室友打游戏的延迟也只有 18~23 了 对路由器系统没要求特别要求,支持 dhcp option 配置和绑定静态 IP 就行。很方便我在 ros ,openwrt 、爱快之间来回切换 ![]() |
22
weicools 6 天前
openwrt 一个搞定,嫌旁路由麻烦
|
23
sentivcn 6 天前
一个 ADG 就搞定了,干嘛还要套来套去
|
![]() |
24
miaomiao888 6 天前
太复杂了,一个 MOS 就搞定,兼顾去广告、分流、防污染。
|
![]() |
25
fengyaochen 6 天前
装那么多怎么可能快
|
![]() |
26
wm5d8b 6 天前 via Android
用 MosDNS ,域名清单怎么维护更新呢?
全部指向一个 upstream ,又有 cdn 问题 |
![]() |
27
DAPTX4869 6 天前
个人方案是 adg -> smartdns, adg 的分流麻烦, 还没法设置代理
|
![]() |
28
Ch3n4y 6 天前
跟我方案完全一致,哈哈
|
![]() |
29
vitoegg 6 天前
因为 openclash 或者 nikki 都是通过 fake ip filter 来实现绕过中国大陆了,感觉更简单的玩法是 dnsmasq - mosdns - openclash/nikki 。
Dnsmasq 转发到 MosDNS ,MosDNS 根据域名分流不同的 DNS (需要代理的域名分配 openclash/nikki dns ),OpenClash/Nikki 设置成绕过中国大陆且取消掉 DNS 劫持。 这样都是使用自带的配置,操作简单,数据流清晰。 |
32
xuxiake OP @miaomiao888 AdGuardHome 广告过滤、可视化查询日志还是方便些
|
![]() |
33
Serino 6 天前
dns:
enable: true prefer-h3: true listen: :53053 ipv6: true enhanced-mode: redir-host proxy-server-nameserver: - 国内 DNS nameserver: - 国内 DNS nameserver-policy: 'geosite:private,microsoft@cn,category-games@cn,geolocation-cn': - 运营商 DNS 'geosite:!cn': - 国外 DNS 我猜楼主估计用了 fallback 什么的。 不用搞那么复杂啊。去看下 Mihimo 的文档 ( https://wiki.metacubex.one/config/dns/diagram/#_3 ),就会发现,命中了需要代理的规则的网址,是直接发送域名到代理服务器的,不是发送解析到的 IP 。解析 IP ,主要是为了后面判断是走直连还是代理,如果是走代理,就把域名(是的,还是发送域名而不是解析出来的 IP )发送给远端代理服务器。 网上好些做教程的估计都没看过官方文档,各种半桶水,我还见过说不用 fake-ip 肯定 DNS 泄露的,简直一派胡言。基本上我看到说有 DNSleak 的,都是因为不看文档只看各种半桶水教程并且 DNS 用了 fallback 。 按我上面这个简单的 DNS 设置,就能有很好的分流效果,那些 DNSleak 也不会检测出国内旗子。 如果要进阶一点,建议起 3 个 agh 的 docker ,分别做国内、运营商、国外 DNS ,而不是把 agh 放在 clash 之前。 本地缓存做好了,甚至都不需要追求 fake-ip ,还能避免很多奇奇怪怪的问题。 |
34
xuxiake OP @sxwsuieyqwe11 AdGuardHome 分流好像还是稍微有点麻烦
|
39
xiaoke 6 天前
我用 dae+adguard+mosdns
|
![]() |
42
yangfan1999 6 天前 ![]() 用 ikuai + openwrt 做透明代理,即使旁路由故障也不影响国内网络访问。参考的是这篇文档: https://www.jackiewu.top/article/best-alternative-solution-for-transparent-gateway
|
44
sxwsuieyqwe11 6 天前 via iPhone
@xuxiake 配置 upstream_dns_file 就可以了,具体参考 https://github.com/Leev1s/FAK-DNS
|
![]() |
45
huizai2022 6 天前
我直接 2 个 AdGuardHome 一个国内 一个国外
|
46
BlackSas 6 天前
|
![]() |
47
NGUTHONG 6 天前
我觉得有点太复杂了,流量路径上设这么多关卡还都是全局配置,但凡一个插件出问题家里网络不就炸了吗
|
![]() |
49
GotKiCry 6 天前
现在是 SmartDNS <- MosDNS <- Adh <- ShellCrash
之前用 MosDNS <- Adh <- ShellCrash 总是会遇到网页加载慢或者第一次打不开第二次刷新就打开的情况,一直找不到什么问题,换成 SmartDNS 请求 MosDNS 做分流后就没啥问题了 |
![]() |
52
likeflower 6 天前
C 规则前面插入
- GEOSITE,CN,DIRECT - GEOIP,CN,DIRECT,no-resolve |
![]() |
53
hiyoi 6 天前 via Android
目前用 agh -> paopaodns ,自建的 paopaodns 内部就有 mosdns 分流了,这样保证无污染。代理使用 nikki ,关闭 dns 劫持,开启 ipv4 代理,按需选要代理的设备,模式用 tproxy ,不用 fakeip(问题太多),mihomo 配置只保留一组 nameserver 指向 agh 就行了。
稳定运行 1 年多了。 |
54
hjj0529 6 天前
之前我也用这个方案,后来发现 docker 容器里面部署的 vpn 不好使,技术太菜,没找出原因,干脆不搞了。
|
55
lozt 6 天前 via Android
我自己家里现在用的是 adguardhome -> mihomo(redir-host),mihomo 里配置的上游 dns 默认国外的,policy 里配置 cn 的域名就走国内。似乎也还行- -,没太关注性能
|
56
linhongjun 6 天前
不知道你们天天都在干嘛 搞这么复杂
|
![]() |
57
starrys 5 天前
@Serino #33 dns.fallback 具体是有什么问题?
我的理解是,clash 会并发地向 dns.nameserver 与 dns.fallback 这两组 DNS 服务器发出 DNS 请求,关键问题来了,『需要等待 dns.fallback 中的服务器返回 DNS 结果后,才能决定使用哪一组 DNS 服务器的结果』,然而,网上流传的配置里面的 dns.fallback 服务器往往是国外的 DoH/DoT 、是比较慢的,这就明显拖慢上网速度。 看我理解的对吗? https://clash.wiki/configuration/configuration-reference.html |
![]() |
58
xpn282 5 天前
我是觉得不用搞那么复杂,OpenClash 的 dns 分流系统足够使用了,就看你怎么写咯,我的就很简单,一切正常,我是用 redir-host 模式:
dns: nameserver: - 运营商 dns nameserver-policy: geosite:gfw: - 国外 dns 以上的意思是:gfw 黑名单域名使用国外 dns 解析,其余的都用运营商 dns 解析,我觉得够用了,简单实用,不需要搞 fallback 之类的。 当然还可以根据自己的需求修改合适自己的分流方案。 比如国内域名用国内 dns ,其余的全部用国外 dns 。 另外还可以给国外 dns 做一层代理,实现代理 dns 解析,防止在 redir-host 模式下,直接使用国外 dns 的时候被污染,导致访问 GitHub 之类的异常。 我个人觉得 OpenClash 的 dns 系统足以应对 dns 分流,不需要借助其他工具,就看你怎么写怎么玩咯。 |
60
xuxiake OP @linhongjun 反正就是折腾嘛[狗头]
|
64
Ruslan 5 天前
我真的不是很理解你们喜欢多套一个 adh 的操作...
无论是 smartdns 还是 mosdns 搭一个 anti-ad 反广告规则一样能 dns 反广告的,多套一层 adh 我唯一的感想就是变慢了。 adh 那个可以搭配浏览器规则的特性更是多余...除了有个好看的 UI 我始终没感受到 adh 的优势。 |
![]() |
65
SakuraYuki 5 天前
我是懒狗,直接 surge 接管网络,不需要代理的设备直接走主路由,需要代理的设备走 surge 网关,surge 内部规则设置好,国外走 snell 服务器的默认 dns ,国内用运营商和阿里 dns
|
66
orluna 5 天前
op 问一下是 adh 上游设置为 openclash 吗
|
69
janzwong 5 天前
@Mystery0 自定义配置要去看日志,分析是卡在哪个加载环节了,我目前就是 adg+自定义 mosdns+openclash ,国内 realip 国外 fakeip ,adg 开缓存。昨天尝试研究了一下 adg->singbox ,最新的 1.12 版本实在是没研究明白,暂时放弃了。
|
![]() |
70
xpn282 5 天前
|
![]() |
71
Autonomous 4 天前
这段时间折腾下来我明白了一个道理:系统越复杂,越容易出问题。所以为了鲁棒性,就一个 AdGuard Home 就好了
|
![]() |
72
charley008 4 天前
我想问一下,mosdns 上游假如是比如 223.5.5.5 ,会不会被限流?阿里与腾讯的 dns 不是已经限流了吗?我就那么点设备每个月 dns 查询都超过 1000w 。
|
73
xuxiake OP @charley008 国内 DNS 服务器我用的电信运营商的 DNS ,应该不会存在这个问题,而且 mosdns 可以设置缓存
|