V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
icesof
V2EX  ›  DNS

AdGuard Home 支持 prefetch-domain 么

  •  
  •   icesof · 2020-12-16 15:50:51 +08:00 · 7227 次点击
    这是一个创建于 1440 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前用的 smartDNS,我最满意的几个功能之一就是 prefetch-domain 。不知道是否相关功能,或者去提 request ?

    如果暂时没有这个功能,只能修改端口把 AdGuard Home 做成 5353 之类的,然后 smartDNS 做前端。坏处是,把 AdGuard Home 监控的功能废了

    35 条回复    2021-02-23 11:49:26 +08:00
    Sekai
        1
    Sekai  
       2020-12-16 15:58:21 +08:00
    你是说 DNS 缓存么,最新版有,可以设缓存大小,还有覆盖最小最大 TTL 值。
    icesof
        2
    icesof  
    OP
       2020-12-16 16:12:13 +08:00
    @Sekai 不是缓存,是 TTL 即将到期前的 auto fetch 机制,我理解

    如果是 TTL 到期,缓存变成 invalid 后,如果缺少 prefetch 机制,下次的客户端请求会比较慢,反应的是 DNS 请求时间,会出去若干个峰值

    smartdns 的解释
    Domain name pre-fetch, more faster to access popular websites.
    wysnylc
        3
    wysnylc  
       2020-12-16 16:20:57 +08:00
    去提 feature
    icesof
        4
    icesof  
    OP
       2020-12-16 16:36:32 +08:00
    @wysnylc 谢谢,已提
    INTEL2333
        5
    INTEL2333  
       2020-12-16 16:37:00 +08:00 via Android
    不支持,顺带 smartdns 做上游不能很好的解决你的问题么?国内公共 dns 解析时间已经够短了,用户自己没必要预加载吧?
    icesof
        6
    icesof  
    OP
       2020-12-16 17:16:38 +08:00
    @INTEL2333

    解析时间不是问题,关键是返回的 IP 。
    1. 基本上的应用,都是选第一个 IP,如果能工作就工作,并没有选最优的
    2. 我试过,alidns,dnspod 各自对自家域支持的最好,运营商属于准第一梯队。(不提 移动宽带 or 非知名域名的一些小手段了)

    另外还有几个内部的 ip 需要做解析。

    我试试 smart 做上游,去验证下,AdGuard Home 的 Blocked DNS list 工作的如何
    weifan
        7
    weifan  
       2020-12-16 17:28:02 +08:00
    要是能隔个几个小时自动缓存下之前所访问的域名的 dns 记录就完美了,现在的缓存也知识解决了第一次访问慢的问题。
    icesof
        8
    icesof  
    OP
       2020-12-16 17:52:20 +08:00
    @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
    INTEL2333
        9
    INTEL2333  
       2020-12-16 18:55:49 +08:00 via Android
    @icesof 关于①和②,ip 选优 adghome 不是带了咩?至于#6 我没看出来有常用域名预加载这个需求。至于内部 ip 嘛 adghome 里面有覆写,自定义规则里也能用 hosts 的写法
    icesof
        10
    icesof  
    OP
       2020-12-16 19:28:20 +08:00
    @INTEL2333 关于①和②,我以为你说的国内 dns 解析是完全排除 adghome/ smartdns 的情况

    #6,可以理解为一个生产系统,响应时间尽量拉平,不要经常出尖峰值的点,个人追求。

    相对来说,我看重的。共同的东西有很多,有几个亮点
    adghome, web interface (修改不用 ssh 上) + monitor
    smartdns, Domain name pre-fetch
    Sekai
        11
    Sekai  
       2020-12-16 20:53:55 +08:00
    @icesof 明白了,那的确是没有,不过把 AdH 作为上游也同样可以监控和审计啊,如果还想做局域网级别的监控,那也没办法了……我现在用的 AdH+coredns,其实感觉也很好了。另外请教下用 smartDNS 怎么做分流?它刚开源的时候我用过,不过分流好像支持不太好,不知道现在怎样了。如果是在 AdH 上做分流,那还是算了……
    weifan
        12
    weifan  
       2020-12-16 23:18:10 +08:00
    @icesof 刚看了下,好像是有我说的功能。昨天装上没注意了!不过他这个 TTL 不懂设置多大比较合适。
    icesof
        13
    icesof  
    OP
       2020-12-16 23:49:30 +08:00
    @Sekai
    我暂时没用到分流,不过搜了下,你可以看看 https://github.com/pymumu/smartdns/issues/575 huifukejian 的回复
    icesof
        14
    icesof  
    OP
       2020-12-16 23:53:02 +08:00
    @weifan 我倒是有个想法,cached entity 直接 persistence 到 tmpfs 然后写个 python 循环一圈的去调 dig,脚本放 crontab 好了

    ttl 还是默认好了。。 没想法
    Sekai
        15
    Sekai  
       2020-12-17 01:06:50 +08:00
    @icesof 谢谢,折腾无止境……
    weifan
        16
    weifan  
       2020-12-17 09:40:07 +08:00
    weifan
        17
    weifan  
       2020-12-17 09:42:42 +08:00
    @icesof 那 “DNS 缓存配置” 那边不设置,直接默认么。我设置了两分钟😂不过好像没啥感觉
    icesof
        18
    icesof  
    OP
       2020-12-17 11:59:43 +08:00
    @weifan 要测的,我是钢铁直男感觉来的比较慢
    Sekai
        19
    Sekai  
       2020-12-17 12:06:07 +08:00
    @weifan 对。。但这个太粗暴了,感觉很对不起 agh (其实是担心影响性能),作为上流我想弄得简单些
    tankren
        20
    tankren  
       2020-12-17 12:19:30 +08:00
    unbound 支持
    LEXUGE
        21
    LEXUGE  
       2020-12-17 22:23:21 +08:00
    https://github.com/LEXUGE/dcompass

    dcompass 默认 lazy_load,请求一次后在过期后仍会使用最近一次 cache,并且再次发起请求在后台更新
    yyysuo
        22
    yyysuo  
       2020-12-18 15:22:30 +08:00
    把 smartdns 作为 Adguard Home 上游,然后开 cache-persist,这个比域名预加载好用多了。
    weifan
        23
    weifan  
       2020-12-31 09:46:13 +08:00
    https://ae05.alicdn.com/kf/H7b370eec378f42249252faf704748f39e.png

    处理时间有点长,有没有办法优化一下?
    icesof
        24
    icesof  
    OP
       2020-12-31 11:14:44 +08:00
    @weifan 我也发现了,不过我是在跑在树莓 3B 上,性能有点弱。

    现在 samrtdns 做上游,Adguard 只做 DNS block,统计
    weifan
        25
    weifan  
       2020-12-31 14:10:58 +08:00
    @icesof smartdns 做分流,adg 做去广告和统计么
    icesof
        26
    icesof  
    OP
       2020-12-31 14:54:57 +08:00
    @weifan smartdns 有 prefetch-domain 的功能,会在 DNS 过期前重新刷新

    adg 就你提的两条
    weifan
        27
    weifan  
       2021-01-02 14:16:09 +08:00
    @icesof 感受到了你说的 prefetch-domain 功能了!

    用了段时间 adg,它的 dns 查询是被动的,不管怎么样,第一次都很慢,设置 ttl 似乎没效果,还是有第一次的问题。

    如果服务器能根据每个域名的 TTL,在过期前主动去查询一遍,那就完美了。

    简单测了下,对比运营商,adg 第一次全都几百毫秒,在过期前 1~2 毫秒;而运营商能查询的全是 5 毫秒( Facebook 应该是污染,无法查询,Google 也是 5 毫秒)


    访问一个网站,请求的域名好几个,第一次都几百毫秒,那速度就慢很多了😂
    szpunk
        28
    szpunk  
       2021-01-03 22:03:39 +08:00
    @weifan AGH 只是个 forwarder,速度完全却决于上游(忽略去广告那点延迟)。所以你的说法完全不成立,既然运营商查 5 ms 你就设置运营商为上游啊,Google 同理,有现成的分流文件。

    https://pic.downk.cc/item/5ff1ce483ffa7d37b3ee58d6.png
    bclerdx
        30
    bclerdx  
       2021-01-29 22:23:49 +08:00
    @szpunk 你的意思是说上游 DNS 服务器查询速度快的话,那么打开网页速度就快,加载网页速度就快,对?
    billytom
        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 都有。。这软件不会这么烂吧
    billytom
        32
    billytom  
       2021-01-30 00:40:15 +08:00
    @weifan 我也感受到 ADGH 的性能很差,转发居然能搞个 3000 多 ms,还要是刚访问完 1-2 分钟的域名,我已经设置好 cache 了。到上游 DNS 的访问延迟也就 5ms,不知道是软件本身就哪么烂还是设置问题
    icesof
        33
    icesof  
    OP
       2021-02-23 11:35:53 +08:00
    @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
    * 上海电信光纤到户,改桥接,路由器拨号
    icesof
        34
    icesof  
    OP
       2021-02-23 11:39:15 +08:00
    速度上,还是 smartdns 快。adguard 做 DNS block,一般性去广告,家里小米设备的广告访问都被 block,看着后台日志就很开心
    billytom
        35
    billytom  
       2021-02-23 11:49:26 +08:00 via iPhone
    @icesof 奇怪你加的是哪个屏蔽服务?我这里没能屏蔽小米官方呢,我加了 easylist china
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2552 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:48 · PVG 23:48 · LAX 07:48 · JFK 10:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.