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

2017-01-12 03:15:40 +08:00
 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 :) 希望能够帮到大家.

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

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

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

https://www.v2ex.com/t/334015

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

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

© 2021 V2EX