爱意满满的作品展示区。
finaldie

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

  •  
  •   finaldie ·
    finaldie · Jan 12, 2017 · 4517 views
    This topic created in 3586 days ago, the information mentioned may be changed or developed.

    前阵子统计了一把家里 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 replies  •  2017-01-14 13:42:27 +08:00
    zhs227
    zhs227
    Jan 12, 2017❤️1
    1
    视频赞一下,像大片一样。
    finaldie
    finaldie
    OP
    Jan 12, 2017
    2
    @zhs227 有幸早年积累了一些视频制作经验 谢谢能够喜欢 :D
    missdeer
    missdeer
    Jan 12, 2017
    3
    不是很懂,跟直接在 Raspberry Pi 上开一个 dnsmasq 有什么区别?
    finaldie
    finaldie
    OP
    Jan 12, 2017
    4
    @missdeer dnsmasq 是必要的, 但侧重点不一样 :) dnsmasq 更关心记录正确性, 和有效性(live detection), 不根据其他 dimension 做优化, 比如 latency :)
    zococx
    zococx
    Jan 12, 2017
    5
    歪个楼,楼主视频里终端用的什么字体?是 Mac 自带的不?
    finaldie
    finaldie
    OP
    Jan 12, 2017
    6
    @zococx 字体叫: Monaco, Mac 自带 :)
    pango
    pango
    Jan 12, 2017
    7
    遍历一边所有上游 DNS 返回的 A/AAAA 记录,然后选择 latency 最小的? 那这样的话,首次访问岂不是要浪费很多时间?
    nicholaswan
    nicholaswan
    Jan 12, 2017
    8
    请教下搭建在国内或者国外的 VPS 上有作用吗?
    heiybb
    heiybb
    Jan 12, 2017 via Android
    9
    视频好赞哈哈
    sorcerer
    sorcerer
    Jan 12, 2017 via iPhone
    10
    如何让这个和 chinadns dnsmasq 搭配使用
    NovemberEleven
    NovemberEleven
    Jan 12, 2017
    11
    大片
    finaldie
    finaldie
    OP
    Jan 12, 2017❤️2
    12
    @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
    masir
    Jan 12, 2017 via Android
    13
    视频做的不错哦~
    finaldie
    finaldie
    OP
    Jan 13, 2017
    14
    @NovemberEleven @masir 多谢多谢 :D
    mwylaoma
    mwylaoma
    Jan 13, 2017❤️1
    15
    @finaldie Building src/services/dns ... src/cache.cpp:5:18: fatal error: ares.h: No such file or directory
    ubuntu Build 出错
    finaldie
    finaldie
    OP
    Jan 13, 2017
    16
    @mwylaoma 溜掉了 fetch submodule 的步骤 :)
    ```
    git submodule update --init --recursive
    ```

    然后重试 build 即可, 因为 dns client service 是一个 submodule :)
    finaldie
    finaldie
    OP
    Jan 13, 2017
    17
    @mwylaoma 纠正一下, 不是 submodule 的问题, 是漏掉了安装 libc-ares-dev, 已经更新了 readme, 多谢指正 :)
    mwylaoma
    mwylaoma
    Jan 13, 2017
    18
    @finaldie 我试试
    mwylaoma
    mwylaoma
    Jan 13, 2017
    19
    @finaldie 可以 Build 了,但是启动后,好像获取到不 DNS 请求结果
    mwylaoma
    mwylaoma
    Jan 13, 2017
    20
    @finaldie 53 端口没有开启,只是启动了 7759 端口
    finaldie
    finaldie
    OP
    Jan 14, 2017 via iPhone
    21
    @mwylaoma 基本两种可能, 1 )启动时忘记加 sudo 2 )已经有 53 端口的进程存在了 :)从 log 里可以看出端倪,如果还有问题,可以考虑 open 个 issue ,贴上详细的 log 和系统端口信息 : D
    mwylaoma
    mwylaoma
    Jan 14, 2017
    22
    @finaldie 有加 sudo , 53 端口 bind 占用了,杀掉,但是还是不行,有空我再试试,不行的话,再开 issue
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2094 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 51ms · UTC 02:46 · PVG 10:46 · LAX 18:46 · JFK 21:46
    ♥ Do have faith in what you're doing.