由于各种各样的原因,对 AdGuardHome 产生了一种需求:
上面这种应用场景暂时叫他分流。
为了满足上面这种 dns 分流查询,改了 AdGuardHome 和 dnsproxy 的源码,编译升级以后下午用了几个小时。
目前配置了 quic://dns-unfiltered.adguard.com
和 https://dns.cloudflare.com/dns-query
这两个 dns 服务商,首次查询耗时 >200ms
,后面一段时间走缓存,总体体验还可以。
源码改的比较粗糙,放在了自建的 gitlab 上,暂时不打算提 PR ,回头提个 issue 看社区有什么反馈。
有人有相同需求的话可以下载使用:
https://wwm.lanzouq.com/iOB6q0727uwj
密码:biub
目前只编译了 Debian/Ubuntu 的版本,没编译 Centos/Radhat 的。
文件里面有使用说明。
1
dcty 2022-06-28 17:13:48 +08:00 via Android
话说,这个分流功能不是官方就实现了吗?
|
2
DAPTX4869 2022-06-28 17:21:03 +08:00
v2ray 有这个功能, 配合加强规则用还行
|
3
FakNoCNName OP |
4
PMR 2022-06-28 17:51:12 +08:00
用途有限
大多数 proxy 都是将 dns 请求发到远端 在本地请求无劫持的 dns 没意义 还访问不到近 proxy 的 cdn 节点 |
5
FakNoCNName OP @PMR 嗯,这功能并不是强需求,只不过最近遇到一些场景有这个会很方便。
分流原因: 1. 获取正确的解析结果,国外的服务用国外的 dns 解析 2. 保护隐私,避免黑名单上的域名使用国内 dns ,避免被国内 dns 服务商记录 |
6
dcty 2022-06-28 18:11:00 +08:00 via Android 1
|
7
dcty 2022-06-28 18:15:40 +08:00 via Android 1
另外,mosdns 可以试一下,也挺方便
|
8
bearboss 2022-06-28 20:46:36 +08:00 1
用 mosdns 做 adh 的上级就好了
|
9
FakNoCNName OP |
10
ihipop 2022-06-28 22:01:06 +08:00 via Android
adguard 自带的分流功能,你改源码去实现?
|
11
missdeer 2022-06-28 22:52:50 +08:00 1
来来来,又到了魔改版 coredns 砸人场子的时候了 https://github.com/missdeer/coredns_custom_build 长期跟随上游更新,提供诸多流行软硬件平台预编译包,放心使用
|
12
sbilly 2022-06-29 11:43:09 +08:00 1
smartdns + adguardhome
1. smartdns 主要做分流、负载均衡(选择最快的解析结果) 2. adguardhome 主要做缓存、过滤 |
13
FrankAdler 2022-06-29 12:50:05 +08:00
可以说说实现原理吗,内置了一个 gfwlist ?
|
14
FakNoCNName OP @FrankAdler 不是内置,是读取的文件。
1. 启动读取配置 2. 处理配置 2.1 域名过滤器:根据配置读取 gfwlist 或 yaml 加载白名单域名,这些域名放到 map 里面做过滤器(可以考虑树,不过一切从简) 2.2 dns 列表:根据配置加载上游 dns ,并和过滤器关联,作为分流 dns 3. 分流查询: dns 查询时,过滤器中存在的域名使用分流 dns 做上游进行解析,过滤器中不存在的域名使用全局配置。 |
15
20180410rx 2022-07-01 10:33:41 +08:00 via Android 1
adguardhome 自带分流,这是我整的规则
https://github.com/rxvb/adguardhome_upstream_dns 国内域名使用 tls://120.53.53.53 查询,其他的会用境外服务器查询。 smartdns 也有分流功能,我也整了 https://github.com/rxvb/smartdns_rules |