Linux系统中的DNS服务一之 :高速缓存DNS

DNS简介:(IP地址太多我们不可能记住所有网站的IP,所以需要DNS来帮助我们简化这个过程)

即 相当于@   DNS:姓名     IP:家庭住址

 

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53

每个IP地址都可以有一个主机名,主机名由一个或多个字符串组成,字符串之间用小数点隔开。有了主机名,就不要死记硬背每台IP设备的IP地址,只要记住相对直观有意义的主机名就行了。这就是DNS协议的功能。

主机名到IP地址的映射有两种方式:

1)静态映射,每台设备上都配置主机到IP地址的映射,各设备独立维护自己的映射表,而且只供本设备使用;

2)动态映射,建立一套域名解析系统(DNS),只在专门的DNS服务器上配置主机到IP地址的映射,网络上需要使用主机名通信的设备,首先需要到DNS服务器查询主机所对应的IP地址

通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。在解析域名时,可以首先采用静态域名解析的方法,如果静态域名解析不成功,再采用动态域名解析的方法。可以将一些常用的域名放入静态域名解析表中,这样可以大大提高域名解析效率。

DNS的一个 服务:  高速缓存DNS

高速缓存DNS:DNS服务器可以高速缓存从其他DNS服务器收到的DNS记录,也可以在DNS客户服务中使用高速缓存。

高速缓存的作用:当我们访问请求解析过一个域名以后,这个解析记录就被放置在缓存中记忆了,以后有相同的解析请求的话,就直接从缓存中提供信息,这样会加快访问者的访问速度,应答速度!

让我们用实验来感受DNS高速缓存吧!:

实验环境:

虚拟机(server)作为DNS服务器

真机(Foundation148) 和 虚拟机(desktop)作测试;

第一步开启真机的路由功能:(使虚拟机能够通过真机来PING通其他网段的IP地址):

 

查看防火墙是否开启:(可以看到dead没有开启)

开启防火墙:(systemctl start firewalld.service)

开启真机路由功能:(firewall-cmd --add-masquerade)

将虚拟机server的网关设置为真机172.25.254.148:(利用图形界面nm-connection-editor 里面添加gateway就行。)

可以ping通114.114.114.114了 :

第二步:

我们需要将真机里面的/etc/resolve.conf 文件里面的域名解析服务器屏蔽掉,以防干扰实验结果!

屏蔽掉以后,加入我们的server虚拟机IP作为新的域名解析服务器!:

/etc/resolve.conf用来存放域名解析服务器信息:

可以看到之前的域名解析服务器(192.168.1.1......)

屏蔽掉,并且添加最新的serverDNS服务器:

可以看到此时,当我们使用dig命令查询DNS的相关信息:

(Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具):

可以看到dig不通!:

 

在虚拟机中操作:

这是因为我们虚拟机server上的DNS服务器还有没搭建好;

在server里面搭建DNS服务器:

首先得搭建好yum源,以便安装相关软件:(此处我们是用光驱挂载到/messi 目录上从而创建了一个本地yum源)

光驱/dev/sr0 挂载到了 /messi上供我们使用:(df命令查看设备挂载信息)

可以看到本地yum源配置完毕:

@关闭server的防火墙:

@给server虚拟机安装bind 软件(DNS):

bind (全称:The  Berkeley Internet Name Domain DNS),它是由伯克利大学实验室开发出来的一款DNS服务被我们广泛使用:

yum install bind -y #不提示信息直接安装bind

安装完bind后,开启named服务,并设置named服务为开机自启:

注:开启named的过程可能会出现,因为加密字符不够导致无法正常开启的情况(即卡在shell界面里),出现这种情况,需要我们不关闭当前shell的情况下,再开启一个shell随便输入一串字符,帮助系统获得加密字符数量!

编写配置文件( /etc/named.conf )

可以看到文件配置内容很多:

我们需要更改:以下信息:

第11行   :Listen-on port 53 { any; }; #指定DNS监听的端口和地址为任意

第17行   :allow-query   { any; };     #允许任意客户端进行DNS查询

第18行   :forwarders  { 114.114.114.114; };#向更高级的DNS服务器 114.114.114.114询问解析地址

第32行   :dnssec-validation no;   #关闭检测(正规DNS需要检测,我们需要改为no才能使用!)

更改完毕后,重启named服务:

注:当文件配置更改格式出现问题的时候重启服务会报错,需要我们通过系统日志查看错误问题,并且自行排错!

cat /var/log/messages #查看系统日志

 

测试端:(真机Foundation148)进行操作:

查看我们的DNS服务器设置:

查看是否DNS设置完毕,没有的话就屏蔽原有的DNS服务器,加入我们新建立的DNS服务器(server):172.25.254.48:

利用dig命令查看DNS信息:

此处我们dig www.baidu.com看看结果:

结果如下:

最下面可以看到应答时间为624msec(第一次解析耗时长!), DNS服务器为我们设定的server服务器(172.25.254.48)

因为我们已经缓存了www.baidu.com的DNS信息,所以下次询问时应答时间会显著缩短!!!

再dig www.baidu.com看看效果:(由624msec 缩减为了 36msec)

在另一个测试端desktop:

设定好 IP,网关:

配置DNS服务器文件:(加入serverDNS服务器)

dig www.baidu.com 查看效果:用时32msec很快了

再次dig 可以发现应答时间为0:

怎么样! DNS高速缓存速度还不错吧!

猜你喜欢

转载自blog.csdn.net/Asukaaaa/article/details/84314855
今日推荐