美文网首页linux 我用 LinuxLinux学习之路
在树莓派上搭建dns缓存服务器

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

作者: bboysoul | 来源:发表于2017-10-31 16:12 被阅读181次

    概述

    最近一直在研究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

    相关文章

      网友评论

        本文标题:在树莓派上搭建dns缓存服务器

        本文链接:https://www.haomeiwen.com/subject/vadbpxtx.html