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高速缓存速度还不错吧!