adguardhome 分流查询

2022-06-28 17:09:51 +08:00
 FakNoCNName

简介

由于各种各样的原因,对 AdGuardHome 产生了一种需求:

  1. 大多数域名使用国内 dns 查询
  2. 国外域名,尤其是梯子相关域名,使用国外 dns 查询

上面这种应用场景暂时叫他分流。

为了满足上面这种 dns 分流查询,改了 AdGuardHome 和 dnsproxy 的源码,编译升级以后下午用了几个小时。

目前配置了 quic://dns-unfiltered.adguard.comhttps://dns.cloudflare.com/dns-query 这两个 dns 服务商,首次查询耗时 >200ms ,后面一段时间走缓存,总体体验还可以。

源码改的比较粗糙,放在了自建的 gitlab 上,暂时不打算提 PR ,回头提个 issue 看社区有什么反馈。

其它

有人有相同需求的话可以下载使用:

https://wwm.lanzouq.com/iOB6q0727uwj
密码:biub

目前只编译了 Debian/Ubuntu 的版本,没编译 Centos/Radhat 的。

文件里面有使用说明。

2176 次点击
所在节点    分享创造
15 条回复
dcty
2022-06-28 17:13:48 +08:00
话说,这个分流功能不是官方就实现了吗?
DAPTX4869
2022-06-28 17:21:03 +08:00
v2ray 有这个功能, 配合加强规则用还行
FakNoCNName
2022-06-28 17:37:03 +08:00
@dcty dnsproxy 源码里面标的 TODO ,没有其它介绍的地方,不知道怎么配置

@DAPTX4869 不一样,AdGuardHome 我当成过滤广告的 DNS 服务器用,目前所有的工作、家庭设备都用他,用 v2ray 和 clash 还得再装软件。
PMR
2022-06-28 17:51:12 +08:00
用途有限

大多数 proxy 都是将 dns 请求发到远端 在本地请求无劫持的 dns 没意义 还访问不到近 proxy 的 cdn 节点
FakNoCNName
2022-06-28 18:01:40 +08:00
@PMR 嗯,这功能并不是强需求,只不过最近遇到一些场景有这个会很方便。

分流原因:
1. 获取正确的解析结果,国外的服务用国外的 dns 解析
2. 保护隐私,避免黑名单上的域名使用国内 dns ,避免被国内 dns 服务商记录
dcty
2022-06-28 18:11:00 +08:00
dcty
2022-06-28 18:15:40 +08:00
另外,mosdns 可以试一下,也挺方便
bearboss
2022-06-28 20:46:36 +08:00
用 mosdns 做 adh 的上级就好了
FakNoCNName
2022-06-28 21:15:42 +08:00
@dcty
@bearboss

多谢了,看了下功能挺多的,不过目前不太想增加一层,弄得网络逻辑越来越复杂。
ihipop
2022-06-28 22:01:06 +08:00
adguard 自带的分流功能,你改源码去实现?
missdeer
2022-06-28 22:52:50 +08:00
来来来,又到了魔改版 coredns 砸人场子的时候了 https://github.com/missdeer/coredns_custom_build 长期跟随上游更新,提供诸多流行软硬件平台预编译包,放心使用
sbilly
2022-06-29 11:43:09 +08:00
smartdns + adguardhome

1. smartdns 主要做分流、负载均衡(选择最快的解析结果)
2. adguardhome 主要做缓存、过滤
FrankAdler
2022-06-29 12:50:05 +08:00
可以说说实现原理吗,内置了一个 gfwlist ?
FakNoCNName
2022-06-29 14:29:59 +08:00
@FrankAdler 不是内置,是读取的文件。

1. 启动读取配置
2. 处理配置
2.1 域名过滤器:根据配置读取 gfwlist 或 yaml 加载白名单域名,这些域名放到 map 里面做过滤器(可以考虑树,不过一切从简)
2.2 dns 列表:根据配置加载上游 dns ,并和过滤器关联,作为分流 dns
3. 分流查询:
dns 查询时,过滤器中存在的域名使用分流 dns 做上游进行解析,过滤器中不存在的域名使用全局配置。
20180410rx
2022-07-01 10:33:41 +08:00
adguardhome 自带分流,这是我整的规则
https://github.com/rxvb/adguardhome_upstream_dns
国内域名使用 tls://120.53.53.53 查询,其他的会用境外服务器查询。
smartdns 也有分流功能,我也整了 https://github.com/rxvb/smartdns_rules

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/862748

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX