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

2017 年 1 月 12 日
 finaldie

前阵子统计了一把家里 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 :) 希望能够帮到大家.

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

然后重试 build 即可, 因为 dns client service 是一个 submodule :)
finaldie
2017 年 1 月 13 日
@mwylaoma 纠正一下, 不是 submodule 的问题, 是漏掉了安装 libc-ares-dev, 已经更新了 readme, 多谢指正 :)
mwylaoma
2017 年 1 月 13 日
@finaldie 我试试
mwylaoma
2017 年 1 月 13 日
@finaldie 可以 Build 了,但是启动后,好像获取到不 DNS 请求结果
mwylaoma
2017 年 1 月 13 日
@finaldie 53 端口没有开启,只是启动了 7759 端口

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/334015

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX