在树莓派上搭建dns缓存服务器

概述

最近一直在研究dns服务器,如果在本地搭建dns服务器我觉得没什么必要,因为我局域网中的机器不是特别多,但是搭建一个dns缓存服务器在树莓派上还是挺有用的,可以提高上网的速度。

测试一下没有安装缓存服务器时候dns解析速度

首先测试一下第一次解析www.bboysoul.cn的速度

 Bboysoul  ➜  ~ dig www.bboysoul.cn 

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.bboysoul.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16222
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.bboysoul.cn.       IN  A

;; ANSWER SECTION:
www.bboysoul.cn.    600 IN  CNAME   bboysoul.github.io.
bboysoul.github.io. 3600    IN  CNAME   sni.github.map.fastly.net.
sni.github.map.fastly.net. 600  IN  A   151.101.41.147

;; Query time: 106 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Tue Oct 31 14:26:37 CST 2017
;; MSG SIZE  rcvd: 120

106msec这是第一次进行dns解析时候的速度 下面是第二次解析速度

➜  ~ dig www.bboysoul.cn

; <<>> DiG 9.10.3-P4-Ubuntu <<>> www.bboysoul.cn
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47082
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.bboysoul.cn.       IN  A

;; ANSWER SECTION:
www.bboysoul.cn.    600 IN  CNAME   bboysoul.github.io.
bboysoul.github.io. 3401    IN  CNAME   sni.github.map.fastly.net.
sni.github.map.fastly.net. 600  IN  A   151.101.41.147

;; Query time: 9 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Tue Oct 31 14:29:57 CST 2017
;; MSG SIZE  rcvd: 120

只有9msec了,这说明自己电脑的的dns的缓存还是挺快的,那么树莓派上会有多快呢,下面来测试一下

搭建树莓派上的dns缓存服务器

首先安装dnsmasq,dnsmasq是一款dns服务器软件,相比bind我觉得配置相对来说简单了很多 sudo apt install dnsmasq 之后修改配置文件 vim /etc/dnsmasq.conf 首先去掉strict-order前面的注释,这个参数的含义是dnsmasq会严格按照resolv-file这个参数指定的文件中的dns服务器从上到下进行解析 接着指定resolv-file这个文件的位置 resolv-file=/etc/bboysoul_dns.conf 之后配置listen-address加上你的树莓派的地址,让局域网中的其他机器可以使用你的树莓派dns服务 我的是 listen-address=127.0.0.1,192.168.1.100 接着修改缓存的大小 cache-size=10000 因为主要是用来做缓存,所以最好大点缓存 之后保存文件就好了 接着增加dns服务器 新建我们刚才指定的resolv-file参数中的文件 touch /etc/bboysoul_dns.conf 在下面增加dns服务器列表

nameserver 127.0.0.1
nameserver 114.114.114.114
nameserver 114.114.115.115
nameserver 223.5.5.5
nameserver 223.6.6.6

首先第一个是本地地址我就不说了,第二个和第三个是114的公共dns,最后两个是阿里的公共dns 保存文件之后重启dnsmasq服务 sudo service dnsmasq restart

测试速度

首先测试第一次dig bboy.xin的速度 修改你自己电脑的默认dns服务器 vim /etc/resolv.conf 删除里面所有内容,然后加上 nameserver 192.168.1.100 之后dig

 Bboysoul  ➜  ~ dig bboy.xin     

; <<>> DiG 9.10.3-P4-Ubuntu <<>> bboy.xin
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46345
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;bboy.xin.          IN  A

;; AUTHORITY SECTION:
bboy.xin.       600 IN  SOA dns13.hichina.com. hostmaster.hichina.com. 2017063016 3600 1200 3600 360

;; Query time: 150 msec
;; SERVER: 192.168.1.100#53(192.168.1.100)
;; WHEN: Tue Oct 31 15:06:22 CST 2017
;; MSG SIZE  rcvd: 90

这是第一次dns请求,150msec是正常的 之后修改树莓派中的resolv.conf, 注意是树莓派中的 删除里面所有内容,然后加上 nameserver 192.168.1.100 接着测试

➜  ~ dig bboy.xin

; <<>> DiG 9.9.5-9+deb8u13-Raspbian <<>> bboy.xin
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55788
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;bboy.xin.          IN  A

;; Query time: 1 msec
;; SERVER: 192.168.1.100#53(192.168.1.100)
;; WHEN: Tue Oct 31 15:06:28 CST 2017
;; MSG SIZE  rcvd: 37

说明dns信息缓存下来了,而且速度还可以。

总结一下

这样做的意义何在,首先避免了dns劫持,还有当你电脑重启之后你电脑中的dns缓存会释放掉,但是树莓派上的不会,所以避免了第一次dns请求时间的浪费。尤其是请求国外网站的时候,速度就会体现出来了。一般来说由于树莓派IO的限制,可以稳定在30msec

注意在resolv.conf这个文件设置dns服务器不是永久的,重启之后就会被修改掉 如果你的系统中没有dig这个命令可以安装下面这个包 sudo apt-get install dnsutils

欢迎关注Bboysoul的博客www.bboysoul.com Have Fun

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大魏分享(微信公众号:david-share)

讲真,Ansible 可以管理Windows?

前言: 本文是我和李尧老师一起实验。李尧是红帽高级培训讲师,目前负责红帽中国区员工内部技术培训与认证。 一、Ansible能对windows做什么操作? Ans...

86650
来自专栏H2Cloud

支持插件的消息中间件【msg broker with plugin】

支持插件的消息中间件 msg broker with plugin Msg Broker概念: msg broker是实现application 之间互通讯的组...

56860
来自专栏张善友的专栏

STOMP协议介绍

STOMP,Streaming Text Orientated Message Protocol,是流文本定向消息协议,是一种为MOM(Message Orie...

44960
来自专栏葡萄城控件技术团队

Asp.Net MVC4入门指南(7):给电影表和模型添加新字段

在本节中,您将使用Entity Framework Code First来实现模型类上的操作。从而使得这些操作和变更,可以应用到数据库中。 默认情况下,就像您在...

205100
来自专栏DannyHoo的专栏

iOS开发中利用YYModel进行归档

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

19220
来自专栏MessageQueue

消息中间件中的一些概念

主题,从逻辑上讲一个Topic就是一个Queue,即一个队列;从存储上讲,一个Topic存储了一类相同的消息,是一类消息的集合。比如一个名称为trade.ord...

13030
来自专栏一场梦

分享11个表白网源码,不送女朋友!

22940
来自专栏即时通讯技术

一套高可用、易伸缩、高并发的IM群聊架构方案设计实践

本文原题为“一套高可用群聊消息系统实现”,由作者“于雨氏”授权整理和发布,内容有些许改动,作者博客地址:alexstocks.github.io。应作者要求,如...

13930
来自专栏向治洪

Android逆向分析(2) APK的打包与安装背后的故事

前言 上一次我们反编译了手Q,并遇到了Apktool反编译直接crash的问题,虽然笔者很想在这次解决这个问题,但在解决途中,发现该保护依赖于很多知识,所以本次...

40380
来自专栏Hongten

常用软件工具

Download: https://notepad-plus-plus.org/download/v7.5.6.html

11220

扫码关注云+社区

领取腾讯云代金券