之前用的 smartDNS,我最满意的几个功能之一就是 prefetch-domain 。不知道是否相关功能,或者去提 request ?
如果暂时没有这个功能,只能修改端口把 AdGuard Home 做成 5353 之类的,然后 smartDNS 做前端。坏处是,把 AdGuard Home 监控的功能废了
1
Sekai 2020-12-16 15:58:21 +08:00
你是说 DNS 缓存么,最新版有,可以设缓存大小,还有覆盖最小最大 TTL 值。
|
2
icesof OP @Sekai 不是缓存,是 TTL 即将到期前的 auto fetch 机制,我理解
如果是 TTL 到期,缓存变成 invalid 后,如果缺少 prefetch 机制,下次的客户端请求会比较慢,反应的是 DNS 请求时间,会出去若干个峰值 smartdns 的解释 Domain name pre-fetch, more faster to access popular websites. |
3
wysnylc 2020-12-16 16:20:57 +08:00
去提 feature
|
5
INTEL2333 2020-12-16 16:37:00 +08:00 via Android
不支持,顺带 smartdns 做上游不能很好的解决你的问题么?国内公共 dns 解析时间已经够短了,用户自己没必要预加载吧?
|
6
icesof OP @INTEL2333
解析时间不是问题,关键是返回的 IP 。 1. 基本上的应用,都是选第一个 IP,如果能工作就工作,并没有选最优的 2. 我试过,alidns,dnspod 各自对自家域支持的最好,运营商属于准第一梯队。(不提 移动宽带 or 非知名域名的一些小手段了) 另外还有几个内部的 ip 需要做解析。 我试试 smart 做上游,去验证下,AdGuard Home 的 Blocked DNS list 工作的如何 |
7
weifan 2020-12-16 17:28:02 +08:00
要是能隔个几个小时自动缓存下之前所访问的域名的 dns 记录就完美了,现在的缓存也知识解决了第一次访问慢的问题。
|
8
icesof OP @weifan
看到的解决思路如下,理解是 lazy load When the local DNS cache expires, Adguard Home can continue answer with the IP in the local cache results with 1 TTL, while a new DNS query is made to update the cache. If client can still connect to the server by using the old results, then that's great and reduces the time waiting for DNS query. And if not, after a short TTL, the new DNS result can be sent to client and reconnect again. https://github.com/AdguardTeam/AdGuardHome/issues/2145 |
9
INTEL2333 2020-12-16 18:55:49 +08:00 via Android
@icesof 关于①和②,ip 选优 adghome 不是带了咩?至于#6 我没看出来有常用域名预加载这个需求。至于内部 ip 嘛 adghome 里面有覆写,自定义规则里也能用 hosts 的写法
|
10
icesof OP @INTEL2333 关于①和②,我以为你说的国内 dns 解析是完全排除 adghome/ smartdns 的情况
#6,可以理解为一个生产系统,响应时间尽量拉平,不要经常出尖峰值的点,个人追求。 相对来说,我看重的。共同的东西有很多,有几个亮点 adghome, web interface (修改不用 ssh 上) + monitor smartdns, Domain name pre-fetch |
11
Sekai 2020-12-16 20:53:55 +08:00
@icesof 明白了,那的确是没有,不过把 AdH 作为上游也同样可以监控和审计啊,如果还想做局域网级别的监控,那也没办法了……我现在用的 AdH+coredns,其实感觉也很好了。另外请教下用 smartDNS 怎么做分流?它刚开源的时候我用过,不过分流好像支持不太好,不知道现在怎样了。如果是在 AdH 上做分流,那还是算了……
|
13
icesof OP |
14
icesof OP @weifan 我倒是有个想法,cached entity 直接 persistence 到 tmpfs 然后写个 python 循环一圈的去调 dig,脚本放 crontab 好了
ttl 还是默认好了。。 没想法 |
16
weifan 2020-12-17 09:40:07 +08:00
@Sekai `github.com/hezhijie0327/GFWList2AGH` 这个分流还行
|
20
tankren 2020-12-17 12:19:30 +08:00
unbound 支持
|
21
LEXUGE 2020-12-17 22:23:21 +08:00
|
22
yyysuo 2020-12-18 15:22:30 +08:00
把 smartdns 作为 Adguard Home 上游,然后开 cache-persist,这个比域名预加载好用多了。
|
23
weifan 2020-12-31 09:46:13 +08:00
|
24
icesof OP |
26
icesof OP |
27
weifan 2021-01-02 14:16:09 +08:00
@icesof 感受到了你说的 prefetch-domain 功能了!
用了段时间 adg,它的 dns 查询是被动的,不管怎么样,第一次都很慢,设置 ttl 似乎没效果,还是有第一次的问题。 如果服务器能根据每个域名的 TTL,在过期前主动去查询一遍,那就完美了。 简单测了下,对比运营商,adg 第一次全都几百毫秒,在过期前 1~2 毫秒;而运营商能查询的全是 5 毫秒( Facebook 应该是污染,无法查询,Google 也是 5 毫秒) 访问一个网站,请求的域名好几个,第一次都几百毫秒,那速度就慢很多了😂 |
28
szpunk 2021-01-03 22:03:39 +08:00
@weifan AGH 只是个 forwarder,速度完全却决于上游(忽略去广告那点延迟)。所以你的说法完全不成立,既然运营商查 5 ms 你就设置运营商为上游啊,Google 同理,有现成的分流文件。
https://pic.downk.cc/item/5ff1ce483ffa7d37b3ee58d6.png |
29
weifan 2021-01-05 09:41:03 +08:00
|
31
billytom 2021-01-30 00:38:50 +08:00
@szpunk 我这里测试下来,Adguardhome 的性能很有问题,到 119.29.29 的延迟 5ms,然后就一个 119.29.29.29 和 223.5.5.5 的查询,经常用时 1000 多甚至 3000ms,而且那个域名还是刚访问完几十秒。 已经设置了 16MB 的 cache 和 1800,3600 的 ttl 。不知道是什么问题。。 除非访问本地 smartdns 的有 0.1ms ,其它只要转发国内 dns 服务商的,一般都 2-300ms,经常性偶尔的 1000 多 3000ms 都有。。这软件不会这么烂吧
|
32
billytom 2021-01-30 00:40:15 +08:00
@weifan 我也感受到 ADGH 的性能很差,转发居然能搞个 3000 多 ms,还要是刚访问完 1-2 分钟的域名,我已经设置好 cache 了。到上游 DNS 的访问延迟也就 5ms,不知道是软件本身就哪么烂还是设置问题
|
33
icesof OP @billytom 我自己的环境,adguard home 监听 53, 再搭一个 smartdns 监听 5353 作为 adguard 的唯一上游。多外部 DNS,用 smartdns 配置。
使用 Domain Name Speed Benchmark ( https://www.grc.com/dns/benchmark.htm) ,对比 dnspod & alidns 在缓存的部分是明显快的。 其他: * adguard home, smartdns 安装在树莓派 3B * 上海电信光纤到户,改桥接,路由器拨号 |
34
icesof OP 速度上,还是 smartdns 快。adguard 做 DNS block,一般性去广告,家里小米设备的广告访问都被 block,看着后台日志就很开心
|