[DNSTurbo] 优化本地 DNS 缓存记录中间件 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
finaldie
V2EX    分享创造

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

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

    前阵子统计了一把家里 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     Solana     869 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 22:49 PVG 06:49 LAX 14:49 JFK 17:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86