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

有没有智能自建缓存式 dns 解析方式啊

  •  
  •   dvbs2000 · 15 天前 · 1390 次点击

    其实每个人日常访问的域名非常有限 并不需要海量域名全部解析正确

    比如可不可以在 openwrt 里自建一个 dns 当访问一个域名,就从各种不同渠道比较访问体验,智能把最好体验的解析结果存到本地长期缓存。 用几天,基本上就是最适合自己的体验最好的缓存库 一旦访问速度异常或变慢,就把这个过程再智能处理一遍,再存到本地长期缓存

    指望各种第三方 dns 服务,感觉越来越不靠谱了 有时候会出奇怪的问题

    20 条回复    2024-05-19 20:51:02 +08:00
    asdgsdg98
        1
    asdgsdg98  
       15 天前
    没见过,DNS 优选类的用过adguardhome和smartdns,最后均放弃
    Tsing2
        2
    Tsing2  
       15 天前
    我回忆起以前见过一个项目,这项目本身不是 DNS ,而是一个监听并劫持 DNS 流量的服务,安装在出口路由器上,它不仅能缓存所有监听到的 A 记录,还会实时地 ping 那些 A 记录的目的 IP ,把当时速度最快的那个 IP 改写到 A 记录里返回给客户端。
    因为有点年头了,项目名早忘了,简单搜了下,没找到那个项目,知道的大佬们可以帮我回忆一下
    wheat0r
        3
    wheat0r  
       15 天前
    adguard home / mosdns / smartdns
    搜索引擎会给你答案
    “其实每个人日常访问的域名非常有限 并不需要海量域名全部解析正确”,这个逻辑是不正确的。首先我们并不知道我们访问的应用、网站究竟在用哪些域名,我们对域名规模没有预期。其次,1k 个域名和 100k 个域名,一般来说解析的逻辑是一样的,解析的消耗也是差不多的。
    dvbs2000
        4
    dvbs2000  
    OP
       15 天前
    @wheat0r 其实多点少点无所谓,哪怕几百万个几千万个,本地缓存也不是问题。

    我的智能解析的意思 当访问某个网站时,openwrt 后台通过查询不同的 dns ,得到最优结果,无感知的存入本地缓存,后面就直接读缓存了(知道出现故障,再重新这个流程)
    wheat0r
        5
    wheat0r  
       15 天前
    @wheat0r #3 实际上早就有很多人抱怨 adguard home 不能主动刷新 dns 缓存,迫使用户使用乐观缓存。乐观缓存的问题是面对基于 dns 的高可用非常无力。
    另一个问题,dns 缓存服务器可以确定 dns 解析的时间消耗,但是无法得知实际的访问速度,dns 甚至不知道你访问的协议。

    完整实现起来,应该要有一个抓包组件抓取用户的所有流量拿到用户实际访问的端口,交由一个延迟测量组件持续探测端口的响应时间,一旦响应时间超过阈值,通知 dns 缓存组件刷新缓存。
    ashuai
        6
    ashuai  
       15 天前
    @asdgsdg98 #1 为啥放弃 adguard home ?我挂在 win 的 htpc 上,把 pc 的 dns 指过去,用着很稳定啊,一度都忘了这个东西的存在
    dvbs2000
        7
    dvbs2000  
    OP
       15 天前
    @wheat0r 对的 dns 缓存里面应该有访问的体验数据,包括访问延时和带宽数据。 而不是单纯的 dns 解析速度 。 尤其现在各种 cdn 情况其实很复杂。
    wheat0r
        8
    wheat0r  
       15 天前
    @dvbs2000 #7 家庭用户自建 dns 服务器,一般都是利用路由器、开发板之类的设备,这些东西如果需要持续抓包、解析,可能会力不从心,用户也会很少。
    另一方面,这类的功能,商用的链路负载均衡器理论上是可以实现的,要花钱。
    yyysuo
        9
    yyysuo  
       15 天前
    smartdns 就能实现你的需求,有过期缓存功能,有过期缓存预取功能(自动后台更新缓存的域名解析结果),还能把缓存保存到磁盘,断电不丢缓存,哦,对了,smartdns 祖传的优选 ip 的功能也是有的。
    dvbs2000
        10
    dvbs2000  
    OP
       15 天前
    @yyysuo 不错 正在测试 感谢!
    asdgsdg98
        11
    asdgsdg98  
       15 天前
    @ashuai 是很稳定,但是并行解析并没有更快,而优选 IP 显著变慢,可以分流但是不好用,要么开两个要么用规则,最后随着抛弃软路由把 agh 也下了
    povsister
        12
    povsister  
       15 天前
    优先用运营商 DNS ,有需求的再考虑自己用其他 DNS 分流
    ixinshang
        13
    ixinshang  
       15 天前   ❤️ 1
    哎 遇到过 运营商的 DNS 给解析到 127.0.0.1 就不怎么用运营商的了
    charley008
        14
    charley008  
       15 天前
    我有一个域名只有 ipv6 ,没有 ipv4 ,偶尔会出现无法访问,ping 一下显示无 A 记录。adguard home 该如何设置才能避免每次不要 A 记录,只要 AAAA 记录。DNSQuerySniffer 查到每次出现这个错误就是因为返回没有 A 记录。
    dingdangnao
        15
    dingdangnao  
       15 天前
    在服务器上搭了 adguardhome
    jqknono
        16
    jqknono  
       15 天前   ❤️ 1
    怎么定义"访问体验"?

    - 域名解析最快的不一定 ping 最快
    - ping 最快的不一定 connect 最快
    - 延迟低的不一定带宽大
    - 网页只有一个 dns, 但后边调用的 dns 无数

    最后就是只能用运营商的 dns, 服务山优化体验都是根据地域来, 也就是你什么都不做就可以得到墙内的最好体验了.

    就是因为又是软路由, 又是规则分流, 又是自建 dns 才降低了家里的墙内体验.

    爱搞这些的都少都被家人质疑过.
    yyysuo
        17
    yyysuo  
       15 天前
    @charley008 这题我会呀,过滤器-自定义过滤规则,添加如下:
    ||你的域名^$dnstype=A,dnsrewrite=NOERROR
    yjxjn
        18
    yjxjn  
       14 天前
    直接用 MOSDNS ,比 SMARTDNS 要好,SDNS 有的,他都有。最主要的防止 DNS 泄露这点就完胜 SDNS
    iphoneXr
        19
    iphoneXr  
       13 天前
    我觉得 AdGuard Home 可以实现一部分你的需求 :
    在 DNS 设置--DNS 缓存配置 里面 可以开启乐观缓存:即使条目过期,也让 AdGuard Home 从缓存中响应,并尝试刷新他们。 还可以把缓存到的 TTL 给延长,比如正常 ttl 是 60s ,可以延长到 1h 或者更久,减少对外的 dns 请求次数。

    至于 “dns 缓存里面应该有访问的体验数据,包括访问延时和带宽数据。” 我玩过 Panabit NTM 产品,通过抓包分析交换机镜像端口的 全网进出口流量,可以做到分析内网的请求延时等等情况,但是这个东西很重,分析任务需要的资源很多,我觉得不应该集合作为 DNS 产品的功能去。
    frankilla
        20
    frankilla  
       12 天前
    @asdgsdg98 #1 +1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2483 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 07:17 · PVG 15:17 · LAX 00:17 · JFK 03:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.