网络其他

关注公众号 jb51net

关闭
网络 > 网络其他 >

DNS缓存服务器配置详解

脚本之家

1、DNS缓存服务器作用
为了增加访问效率,计算机有域名缓存机制,当访问过某个网站并得到其IP后,会将其域名和IP缓存下来,下一次访问的时候,就不需要再请求域名服务器获取IP,直接使用缓存中的IP,提高了响应的速度。当然缓存是有有效时间的,当过了有效时间后,再次请求网站,还是需要先请求域名解析。

缓存DNS服务器并不在本地数据库保存任何资源记录,它仅仅缓存本地局域网内客户端的查询结果,从而起到加速查询请求和节省网络带宽的作用。

2、DNS查询的流程
(1)首先,客户端查询本地的DNS服务器。默认情况下,即/etc/resolv.conf文件中所列的第一个名称服务器。

(2)接着本地名称服务器会查询本地数据库和缓存,如果本地数据库中有该资源记录(该名称服务器对该域进行权威解析),则返回查询结果。

(3)如果没有,则查询缓存,看看缓存中是否有以前对该资源记录的查询结果,如有,则返回查询结果;如果仍然没有,则会向其他DNS服务器进行递归解析。

(4)进入递归解析,本地DNS服务器向根域DNS服务器(Root Nameserver)提出查询请求,

根域DNS服务器会返回域(TLD)DNS服务器地址(例如.com的DNS服务器地址);

本地DNS服务器再次向TLD Nameserver发出查询请求,TLD Nameserver会返回下一级域的DNS服务器地址;依此类推,直到查询到权威的名称服务器(Authoritative Nameserver);

(5)本地DNS服务器从Authoritative Nameserver获得查询结果,将查询结果返回给客户端,并在本地DNS服务器中缓存该查询结果,如果客户端再次提出同样的查询请求,本地DNS服务器直接从缓存中取得对于结果返回给客户端。

3、DNS缓存服务器配置
提示:本次配置是在centos7环境下进行的

(1)配置前的准备工作
1、配置好本地光盘yum源或者配置网络yum源

2、设置好防火墙开放TCP和UDP的53端口,或者直接关闭防火墙

centos7.x关闭防火墙方法:

systemctl stop firewalld.service

centos6.x防火墙关闭方法:

/etc/init.d/iptables stop或service iptables stop

3、关闭selinux

selinux临时关闭:setenforce 0

selinux永久关闭:sed –i“7s/enforcing/disabled/g”/etc/selinux/config

(2)安装下bind和bind-utils软件
[root@localhost ~]# yum install bind bind-utils

[root@localhost ~]# systemctl restart named.service    启动named服务

[root@localhost ~]# systemctl enable named.service    把named服务设置为开机自启

(3)修改主配置文件/etc/named.conf
[root@localhost ~]# vim /etc/named.conf

options {

        listen-on port 53 { any; };   表明DNS服务的地址和53号端口

        listen-on-v6 port 53 { none; };   的ipv6地址和端口,为了方便设置none禁用

        directory       "/var/named";

        dump-file       "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";

        allow-query     { any; };    允许哪些地址的客户端提出查询。

recursion yes;    

表明允许本DNS服务器进行递归解析,这里配置缓存服务器,需要将查询转发到其他DNS服务器,所以这里必须设置为yes

        dnssec-enable yes;

用来设置是否启用DNSSEC支持,DNS安全扩展(DNSSEC)提供了验证DNS数据由效性的。

        dnssec-validation no;    

指定在DNS查询过程中是否加密,为了加快效率这里设置为no

        forwarders { 192.168.115.120; };    这里设置的是主DNS的IP地址

当本地缓存中没有对应的解析时,将客户机的查询转发到哪些DNS服务器,可以添加多个DNS服务器的地址

        forward only;

表示服务器就只把客户机的查询转发到其他DNS服务器上去

};... ...

(4)重启服务
[root@localhost ~]# systemctl restart named.service

此时我们的缓存DNS服务器就已经配置完成了,接下来是测试阶段。

(5)测试配置是否成功
找一台客户机,把客户机DNS设置为我们的缓存服务器的IP地址,然后确保主DNS服务器和我们的缓存服务器named服务是启动的,然后使用客户机测试我们需要解析的域名和IP地址,发现解析成功。

      然后关闭主DNS的named服务,再通过客户机测试,发现依然可以解析成功,到这里就说明我们的缓存服务器配置完成了。