1.DNS: Domain Name System,域名系统。 万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网。他主要负责把域名和IP的相互转换,DNS运行与TCP|UDP的53端口上。
2.高速缓存DNS:DNS服务器可以高速缓存从其他DNS服务器收到的DNS记录,也可以在DNS客户服务中使用高速缓存,将其作为DNS客户端保存在最近的查询过程中得到的信息高速缓存的方法
3.高速缓冲DNS的作用:当一个主机第一次访问一个网页的时候,该主机的DNS服务器以从远处的服务器拿到数据,并进行高速缓存;这样在主机或者其他主机进行下一次访问的时候,可以直接从该主机的高速缓存中直接获取,这样的方式叫做高速缓存
4.具体介绍
(1)DNS资源记录:
DNS区域采用资源记录的形式存储信息,每条资源记录均具有一个类型,表明其保留的数据类型
A:名称到IPv的地址
AAAA:名称到IPv6的地址
CNAME:名称到“规范名称”(包含A/AAAA 记录的另一个名称)
PTR:IPv4/IPv6地址到名称
MX:用于名称的邮件交换器(向何处发送其电子邮件)
NS:域名的名称服务器
SOA:“授权起始”,DNS区域的信息(管理信息)
(2)DNS排错:
它显示来自DNS查看的详细信息,其中包括为什么查询失败:
NOOERROR:查询成功
NXDOMAIN:DNS服务器提示不存在这样的名称
SERVFAIL:DNS服务器停机或DNSSEC响应验证失败
REFUSED:DNS服务器拒绝回答(也许是出于访问控制原因)
(3)dig输出的部分内容
标题指出关于查询和答案的信息,其中包括响应状态和设置的任何特殊标记(aa表示权威答案,等等)
QUESTION:提出实际的DNS查询
ANSWER:响应(如果有)
AUTHORITY:负责域/区域的名称服务器
ADDITIONAL:提供的其他信息,通常是关于名称服务器
底部的注释指出发送查询的递归名称服务器以及获得响应所花费的时间
(4)/etc/named.conf的语法
//或#至行末尾是注释;/与/之间的文本也是注释(可以跨越多行)
指令必须以分号结束(;)
许多指令认为地址匹配列表放在大括号中,以CIDR表示法表示的IP地址或子网列表中,或者命名的ACL中(例如any;[所有主机]和none;[无主机])
文件以options块开始,其中包含控制named如何运作的指令
zone块控制named如何查对于其具有权威性的跟名称服务器和区域
(5)一些重要的options指令
listen-on控制named侦听的IPv4
listen-on-v6控制named侦听的IPv6地址
allow-query控制哪些客户端可以向DNS服务器询问信息
forwarders包含DNS查询将转发到的名称服务器的列表(而不是直接联系外部名称的服务器,在设有防火墙的情况中很有用)
所有这些指令会将打括号中以分号分隔的元素视为地址匹配列表
如:
listen-on {any:};
allow-query {127.0.0.1;10.0.0.0/8};
(6)DNS查找
户端上的Stub解析器将 查询发送至/etc/resolv.conf中的名称服务器
如果名称服务器对于请求的信息具有权威性,会将权威答案发送至客户端,否则如果名称服务器在其缓存中有请求的信息,则会将非权威答案发送至客户端
如果缓存只能该没有信息,名称服务器将搜索权威名称服务器以查找信息,从根区域开始,按照DNS层次结构向下搜索,直至对于信息具有权威性的名称服务器,以此为客户端获得答案。在此情况中名称服务器将信息传递至客户端并在自己的缓存中保留一个副本,以备以后查找。
www.baidu.com 三级域名组成,顶级域名.,一级域名是.com,二级域名是baidu.com
实验
高速缓存DNS的搭建:
<1>首先配置好网络,使虚拟机可以正确连接网络(具体的可以查看博客中《看运维大佬如何花样配置Linux网络》)
-1-首先在真机中输入以下命令
[root@foundation66 ~]# sysctl -a | grep ip_forward ##查看内核路由是否开启,没有开启,要开启
[root@foundation66 ~]# systemctl start firewalld ##打开防火墙
[root@foundation66 ~]# firewall-cmd --add-masquerade ##对防火墙进行伪装,开启路由
[root@foundation66 ~]# ping www.baidu.com ##试图在真机中连接防火墙
-2-在另外一台虚拟机中输入以下命令
[root@dns-server ~]# cd /etc/sysconfig/network-scripts ##进入网络配置文件
[root@dns-server network-scripts]# ls ##查看目录下的网络
[root@dns-server network-scripts]# vim ifcfg-eth0 ##更改网络的内容
[root@dns-server network-scripts]# systemctl restart network
##使其生效(无法生效可以尝试关闭NetworkManager再开启,或者重启)
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPADDR=172.25.254.166
PREFIX=24
GATEWAY=172.25.254.66
[root@client_sshd network-scripts]# ping 114.114.114.114 ##试图连接114.114.114.114,发现可以连接
<2>如果在此客户机机上安装过yum源,则不需要安装,如果没有安装,则需要安装(安装时需要关闭设置共享yum源的主机的防火墙),接着安装bind
[root@dns-server ~]# yum clean all ##清除原有yum缓存
[root@dns-server ~]# yum repolist ##列出仓库信息
[root@dns-server ~]# yum install bind -y ##本机已经安装过bind,所以输入此命令会显示已经安装过
[root@dns-server ~]# systemctl stop firewalld
[root@dns-server ~]# systemctl disable firewalld
[root@dns-server ~]# systemctl start named ##开启named服务
[root@dns-server ~]# ls -ld /etc/rndc.key ##开启named服务后可以看到此文件生成
注意:如果开启named服务比较缓慢,说明加密字符不够,此时应该重新开启一个shell界面,随便输入一行字符串既可
<4>在测试机上配置相应解析文件
[root@dns2-server ~]# vim /etc/resolv.conf
在配置文件中的域名中增加客户机ip
nameserver 172.25.254.166
<5>在测试端尝试解析www.baidu.com,报错没有服务可以到达
[root@dns2-server ~]# dig www.baidu.com
<6>解决服务没有到达的报错主要可能是三个问题,防火墙,服务是否开启,网络是否连通(前面已经进行查询)。如果三者都没有问题,那就是主配置文件中有问题
[root@dns-server ~]# systemctl status firewalld
[root@dns-server ~]# systemctl status named
查看端口是否指向dns服务器的ip,发现其53端口指向不是dns服务器的ip:
[root@dns-server ~]# netstat -antlupe | grep named
注意:
1.回环接口对外是不开放的,没有开放的ip为主机的ip,让53端口对外开放到什么接口上,哪个就开放(在哪个ip上开启哪个接口)
2.antlupe:a代表所有的,p代表进程名称,e代表扩展信息,这些都会在使用netstat -antlupe命令时显示出来
3.在使用netstat -antlupe命令时,加上n表示不做解析,会比较快(antlupe);不加n表示做解析,会比较慢(atlupe)。
<7>会发现端口的指向有问题,此时可以先用rpm -qc命令查看bind的配置文件,然后编辑服务配置文件并重启服务
[root@dns-server ~]# rpm -qc bind
[root@dns-server ~]# vim /etc/named.conf ##进入服务的主配置文件
[root@dns-server ~]# systemctl restart named ##重启服务
配置文件中更改的内容如下:
将listen-on port 53 { 127.0.0.1; };《设置端口只对127.0.0.1打开》更改成listen-on port 53 { any; };《设置端口对所有人打开》
更改前:
更改后:
<8>在测试机再次尝试解析 www.baidu.com,报错拒绝访问
[root@dns2-server ~]# dig www.baidu.com
[root@dns-server ~]# vim /etc/named.conf
[root@dns-server ~]# systemctl restart named
配置文件中更改的内容如下:
将allow-query { localhost; };《只允许本地用户使用dns》更改成allow-query { any; };《即允许所有人使用dns》
更改前:
更改后:
<10>在测试机再次尝试解析www.baidu.com,报错SERVFAIL
[root@dns2-server ~]# dig www.baidu.com
[root@dns-server ~]# vim /etc/named.conf
[root@dns-server ~]# systemctl restart named
配置文件中添加以下内容:
forwarders {114.114.114.114;};《设置将dns请求转发到哪个服务器》
并建议将dnssec-validation yes;《启动DNSSEC确认》更改成dnssec-validation no;
<12>在客户机上解析 www.taobao.com,发现所用时间为233毫秒
[root@dns-server network-scripts]# dig www.taobao.com
<13>在测试机上解析www.taobao.com,发现所用时间为0毫秒,说明进行了高速缓存
[root@dns2-server~ ]# dig www.taobao.com
注意(可能出现的问题):
1.在安装本地yum源时,如果发生报错无法连接,则有可能是设置共享yum的主机的防火墙没有关闭,关闭后既可。
2.如果是虚拟机无法连接网络,可能是因为重启后没有在真机查看内核路由(可以不查看),开启防火墙,开启路由(伪装)。
3.如果在解析过程中,如果在主配置文件中有些内容没有修改,但却能连接成功,原因是因为设置了网关,将服务机中的网关注释掉,再进行,等到最后再次报错时,开启网关既可。
4.使用dig命令时,无法连接,检查三个部分既可,一是防火墙,二是服务开启与否,三是网络是否可以连通
补充:
1.查看所有链接文件的文件并查看其权限
[root@client_sshd ~]# cd /etc/systemd/system/multi-user.target.wants/ ##进入文件中
[root@client_sshd multi-user.target.wants]# ls ##查看所有的链接文件
[root@client_sshd multi-user.target.wants]# ll ##查看链接文件的属性
ifconifg enp0s25 172.25.254.28/24