前阵子统计了一把家里 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 :) 希望能够帮到大家.
1
zhs227 2017-01-12 04:14:58 +08:00 1
视频赞一下,像大片一样。
|
3
missdeer 2017-01-12 09:04:43 +08:00
不是很懂,跟直接在 Raspberry Pi 上开一个 dnsmasq 有什么区别?
|
4
finaldie OP @missdeer dnsmasq 是必要的, 但侧重点不一样 :) dnsmasq 更关心记录正确性, 和有效性(live detection), 不根据其他 dimension 做优化, 比如 latency :)
|
5
zococx 2017-01-12 09:27:07 +08:00
歪个楼,楼主视频里终端用的什么字体?是 Mac 自带的不?
|
7
pango 2017-01-12 11:31:44 +08:00
遍历一边所有上游 DNS 返回的 A/AAAA 记录,然后选择 latency 最小的? 那这样的话,首次访问岂不是要浪费很多时间?
|
8
nicholaswan 2017-01-12 12:47:45 +08:00
请教下搭建在国内或者国外的 VPS 上有作用吗?
|
9
heiybb 2017-01-12 12:56:41 +08:00 via Android
视频好赞哈哈
|
10
sorcerer 2017-01-12 13:10:21 +08:00 via iPhone
如何让这个和 chinadns dnsmasq 搭配使用
|
11
NovemberEleven 2017-01-12 18:34:36 +08:00
大片
|
12
finaldie OP @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 |
13
masir 2017-01-12 21:53:10 +08:00 via Android
视频做的不错哦~
|
14
finaldie OP @NovemberEleven @masir 多谢多谢 :D
|
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 出错 |
16
finaldie OP @mwylaoma 溜掉了 fetch submodule 的步骤 :)
``` git submodule update --init --recursive ``` 然后重试 build 即可, 因为 dns client service 是一个 submodule :) |
17
finaldie OP @mwylaoma 纠正一下, 不是 submodule 的问题, 是漏掉了安装 libc-ares-dev, 已经更新了 readme, 多谢指正 :)
|
21
finaldie OP @mwylaoma 基本两种可能, 1 )启动时忘记加 sudo 2 )已经有 53 端口的进程存在了 :)从 log 里可以看出端倪,如果还有问题,可以考虑 open 个 issue ,贴上详细的 log 和系统端口信息 : D
|
22
mwylaoma 2017-01-14 13:42:27 +08:00
@finaldie 有加 sudo , 53 端口 bind 占用了,杀掉,但是还是不行,有空我再试试,不行的话,再开 issue
|