V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
finaldie
V2EX  ›  分享创造

[DNSTurbo] 优化本地 DNS 缓存记录中间件

  •  
  •   finaldie ·
    finaldie · 2017-01-12 03:15:40 +08:00 · 3070 次点击
    这是一个创建于 2667 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前阵子统计了一把家里 DNS 缓存记录的情况, 即使在更换 geo-based DNS, 也依然会有 20%-30%的记录存在 latency 较高的情况, 于是做了一个 DNS 中间件, 专门用于检测并清理掉这些 latency 较高的记录, 从而一定程度上起到加速上网的效果. 感兴趣的朋友不妨先看看下面的宣传片.

    Trailer:
    Youtube: https://www.youtube.com/watch?v=2u_-Wl7sDdA
    Youku: http://v.youku.com/v_show/id_XMTk3NDE2NDUwOA==.html?spm=a2hfx.8251854.recordContent.DL~DD~5~5~1~3~A.jJzKYU

    项目地址: https://github.com/finaldie/DNSTurbo

    目前我的部署方案是放在家中一台 Raspberry Pi 中, 所有的设备的 DNS server 都指向这台 Raspberry Pi :) 希望能够帮到大家.

    22 条回复    2017-01-14 13:42:27 +08:00
    zhs227
        1
    zhs227  
       2017-01-12 04:14:58 +08:00   ❤️ 1
    视频赞一下,像大片一样。
    finaldie
        2
    finaldie  
    OP
       2017-01-12 06:41:18 +08:00
    @zhs227 有幸早年积累了一些视频制作经验 谢谢能够喜欢 :D
    missdeer
        3
    missdeer  
       2017-01-12 09:04:43 +08:00
    不是很懂,跟直接在 Raspberry Pi 上开一个 dnsmasq 有什么区别?
    finaldie
        4
    finaldie  
    OP
       2017-01-12 09:16:36 +08:00
    @missdeer dnsmasq 是必要的, 但侧重点不一样 :) dnsmasq 更关心记录正确性, 和有效性(live detection), 不根据其他 dimension 做优化, 比如 latency :)
    zococx
        5
    zococx  
       2017-01-12 09:27:07 +08:00
    歪个楼,楼主视频里终端用的什么字体?是 Mac 自带的不?
    finaldie
        6
    finaldie  
    OP
       2017-01-12 09:42:08 +08:00
    @zococx 字体叫: Monaco, Mac 自带 :)
    pango
        7
    pango  
       2017-01-12 11:31:44 +08:00
    遍历一边所有上游 DNS 返回的 A/AAAA 记录,然后选择 latency 最小的? 那这样的话,首次访问岂不是要浪费很多时间?
    nicholaswan
        8
    nicholaswan  
       2017-01-12 12:47:45 +08:00
    请教下搭建在国内或者国外的 VPS 上有作用吗?
    heiybb
        9
    heiybb  
       2017-01-12 12:56:41 +08:00 via Android
    视频好赞哈哈
    sorcerer
        10
    sorcerer  
       2017-01-12 13:10:21 +08:00 via iPhone
    如何让这个和 chinadns dnsmasq 搭配使用
    NovemberEleven
        11
    NovemberEleven  
       2017-01-12 18:34:36 +08:00
    大片
    finaldie
        12
    finaldie  
    OP
       2017-01-12 18:52:31 +08:00   ❤️ 2
    @pango 这里假设首次访问是在没有任何 latency 信息的情况, 所有的记录会直接 bypass 到下游, 不会有任何 delay, 但 ttl 会被相应的调整, 当 latency 记录被周期性加入时, ttl 窗口也会相应的 scale up :)

    @nicholaswan 有的, 但前提是访问流量也是要经过这台 vps 转发 :)

    @heiybb 谢谢 :D

    @sorcerer 参考拓扑: browser --> DNSTurbo --> chinadns|dnsmasq, 不过目前 DNSTurbo 的上游 server 地址是通过 load /etc/resolv.conf 进行设置, 所以如果上游地址与 dnsmasq 所在地址不一致, 就会造成问题, 所以暂时需要分装在不同的机器上. 我后面会增加一个配置项来自由配置上游 :D
    masir
        13
    masir  
       2017-01-12 21:53:10 +08:00 via Android
    视频做的不错哦~
    finaldie
        14
    finaldie  
    OP
       2017-01-13 10:39:03 +08:00
    @NovemberEleven @masir 多谢多谢 :D
    mwylaoma
        15
    mwylaoma  
       2017-01-13 13:27:27 +08:00   ❤️ 1
    @finaldie Building src/services/dns ... src/cache.cpp:5:18: fatal error: ares.h: No such file or directory
    ubuntu Build 出错
    finaldie
        16
    finaldie  
    OP
       2017-01-13 14:50:49 +08:00
    @mwylaoma 溜掉了 fetch submodule 的步骤 :)
    ```
    git submodule update --init --recursive
    ```

    然后重试 build 即可, 因为 dns client service 是一个 submodule :)
    finaldie
        17
    finaldie  
    OP
       2017-01-13 15:00:34 +08:00
    @mwylaoma 纠正一下, 不是 submodule 的问题, 是漏掉了安装 libc-ares-dev, 已经更新了 readme, 多谢指正 :)
    mwylaoma
        18
    mwylaoma  
       2017-01-13 16:55:15 +08:00
    @finaldie 我试试
    mwylaoma
        19
    mwylaoma  
       2017-01-13 17:10:58 +08:00
    @finaldie 可以 Build 了,但是启动后,好像获取到不 DNS 请求结果
    mwylaoma
        20
    mwylaoma  
       2017-01-13 18:01:00 +08:00
    @finaldie 53 端口没有开启,只是启动了 7759 端口
    finaldie
        21
    finaldie  
    OP
       2017-01-14 00:59:30 +08:00 via iPhone
    @mwylaoma 基本两种可能, 1 )启动时忘记加 sudo 2 )已经有 53 端口的进程存在了 :)从 log 里可以看出端倪,如果还有问题,可以考虑 open 个 issue ,贴上详细的 log 和系统端口信息 : D
    mwylaoma
        22
    mwylaoma  
       2017-01-14 13:42:27 +08:00
    @finaldie 有加 sudo , 53 端口 bind 占用了,杀掉,但是还是不行,有空我再试试,不行的话,再开 issue
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2055 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 16:05 · PVG 00:05 · LAX 09:05 · JFK 12:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.