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服务,再通过客户机测试,发现依然可以解析成功,到这里就说明我们的缓存服务器配置完成了。