Linux从入门到精通——DNS的配置

1.DNS的基础

   域名系统英文Domain Name System,缩写DNS)是互联网的一项服务。它作为将域名IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCPUDP端口53[1]。

   

DNS系统中,常见的资源记录类型有:

  • 主机记录(A记录):RFC 1035定义,A记录是用于名称解析的重要记录,它将特定的主机名映射到对应主机的IP地址上。
  • 别名记录(CNAME记录): RFC 1035定义,CNAME记录用于将某个别名指向到某个A记录上,这样就不需要再为某个新名字另外创建一条新的A记录。
  • IPv6主机记录(AAAA记录): RFC 3596定义,与A记录对应,用于将特定的主机名映射到一个主机的IPv6地址。
  • 服务位置记录(SRV记录): RFC 2782定义,用于定义提供特定服务的服务器的位置,如主机(hostname),端口(port number)等。
  • NAPTR记录:RFC 3403定义,它提供了正则表达式方式去映射一个域名。NAPTR记录非常著名的一个应用是用于ENUM查询。

 

2.DNS的配置的环境

   rhel7.3

   关闭防火墙

   准备一个可以上网的主机、至少一个虚拟机

 

3.虚拟机网络的配置

   因为虚拟机是新搭建的,因此需要配置网络服务、yum仓库

 

   (1)搭建网络

   vim /etc/sysconfig/network-scripts/ifcfg-eth0

配置网络 IPADDR、NETMASK等信息

   vim /etc/sysconfig/network

配置网关  GATEWAY=172.25.254.1 ##想要虚拟机上网的话,将网关设定为真机的ip,然后在真机上开通地址伪装功能(相当于变成了路由器),关闭防火墙,虚拟机ping 百度,可以ping通则虚拟机就可以上网了。

   vim /etc/resolv.conf

配置DNS解析  nameserver 114.114.114.114

 

   (2)配置yum源

   vim /etc/yum.repos.d/rhel3.repo

[rhel7.3]

name=rhel7.3

baseurl=http://172.25.254.1/rhel7.3

gpgcheck=0

enable=1

   yum clean all

   yum repolist

 

  测试:ping 172.25.254.1

 

4.虚拟机的DNS的设置

   在刚开始的时候虚拟机如果ping 百度的ip的时候是可以ping通的;但是如果ping www.baidu.com 则会显示不知道,因此需要设置DNS

   vim /etc/resolv.conf

nameserver 114.114.114.114   ##意思是,出现一个不知道的域名的时候,去询问 114.114.114.114

   设定完DNS之后,再ping www.baidu.com的时候就可以ping通了。

 

5.DNS的高速缓存

   什么是高速缓存?第一台主机通过自身设定的DNS访问一个未访问的网址的时候,当这个DNS主机也没有访问过的时候,就会通过DNS主机的配置的 /etc/resolv.conf 里面的配置的DNS出去访问,然后会将访问的信息缓存下来。接下来其他的主机(自身设定的DNS)接着访问这个网址时候,DNS主机就会从缓存里面读取,而不用接着出去找。这就节省了DNS在域名解析的过程中的时间

 

   网络优化:把外部的DNS设置成内部的高速缓存,只有第一个人在访问第一个未知的网址的时候,速度会相对的比较慢。

 

   假设:我的真机为DNS高速缓存,两个虚拟机设置DNS为真机的IP

   在真机上:

    yum install -y bind.x86_64   ##下载DNS

    vim /etc/named.conf   ##修改配置文件如下

 

   systemctl restart named

   systemctl stop firewalld.service

 

   在虚拟机上:

   vim /etc/resolv.conf

nameserver 172.25.254.1   ##将真机的IP设置为虚拟机的DNS

 

   测试:

   (1)现在真机上ping www.baidu.com

   (2)然后在虚拟机上接着ping www.baidu.com ,时间就会很快,因为有缓存

   (3)接着在虚拟机上ping www.163.com ,因为第一次访问所以相对会很慢。

 

6.高速缓存DNS的部署

   yum install -y bind.x86_64   ##下载DNS

   systemctl restart named

   rpm -qc bind    ##如果不知道一个服务的配置文件的话,可以用这个命令查看

   剩下的内容和上面的5配置方法一样。

 

   baidu.com   属于 .com域 ,而 .com域 属于 .域

   为什么访问 .域的时候会那么慢,因为 .域的服务器在美国, .域的配置文件在 /var/named/named.ca

 

7.DNS的正向解析

 

   在有DNS的真机上:

 

   vim /etc/named.conf

include "/etc/named.rfc1912.zones";   ##类似的也是配置文件

include "/etc/named.root.key";

 

   vim /etc/named.rfc1912.zones   

##这个配置文件里面的东西,和主配置文件中的一样,保存的是维护的域名,写入这个文件,也表示写入named.conf文件中

 19 zone "维护的域名(westos.com)" IN {

 20         type master;

 21         file "westos.com.zone";  

##查询westos.com这个域名时,需要到file指定的文件中去查询

 22         allow-update { none; };

 23 };

##19~23行为使用模版,复制一份,在下面编辑。

 

   cd /var/named/

   cp -p named.localhost westos.com.zone   ## -p 同步权限

   vim westos.com.zone

==============================================================================================================

第一个@:表示上面的文件写的域名westos.com

后面的@:失效,dns.westos.com.  注意:这里的所有字符不以.结尾的都会自动的将前面的@的值补上去。 这里是客户主机能看到的信息

rname.invalid.:表示谁维护,这里可以写维护这个域的人的网址信息。

refresh:表示刷新的时间,1D表示一天

retry:

expire:这个文件过期的时间,1W表示一周

minimum:最短的保存时间

============================================================================

   systemctl restart named

   

   在虚拟机上:

   vim /etc/resolv.conf

        nameserver 172.25.254.1   ##将真机的IP设置为虚拟机的DNS

 

   测试dig www.westos.com   ## 查询成功:NOERROR

 

===============================================================================

会出现的错误:

(1)可能会出现SERVFAIL:DNS服务器停机或响应失败

   查看DNS主机端:named.conf文件中的端口是否开启、是否允许其他人查询,主机端的防火墙是否关闭

   netstat -antlp | grep named    ##查看named的端口情况

   systemctl status firewalld.server   ##关闭防火墙

   firewall-cmd --list-all   ##为什么要关闭防火墙,因为firewall里没有允许named服务,所以会被屏蔽掉

   firewall-cmd --permanent --add-service=dns  ##在火墙内允许DNS通过

 

(2)可能会出现REFUSED:DNS服务器拒绝回答

   查看DNS主机端:named.conf文件中是否允许其他人查询(any为任何人都可以查询)

 

(3)可能会出现NXDOMAIN:DNS服器提示不存在这样的名称

   当你访问如:hehe.com 时,服务器会去访问/etc/named.rfc1912.zones这个文件,如果该访问的域名,在文件中没有的时候,就会报这样的错

===============================================================================

   

8.DNS正向解析的简单的轮循

   DNS主机端:

   cd /var/named/

   vim westos.com   ##文件修改如下

   systemctl restart named

 

   在客户端(测试端):   ##会出现轮循的效果,记得将DNS设置为DNS主机IP

   dig linux.westos.com

   dig bbs.westos.com

 

   CNAME:表示把一个规范的域名转换成一个内部的域名然后作解析。就相当于百度的域名都是 www.baidu.com ,但是百度里面会有不同的主机。

 

================================================================================

   邮件用的协议是smtp(简单邮件传输协议):本机想将邮件发送给另外一台主机,本机的25端口,另一台主机用本机的25端口接收邮件,两个25端口的通信,就叫做smtp

   两台主机的通信通过IP,然而发邮件是给了一个wf@westos.com这个地址的,发送邮件需要将邮件发送给一个IP,这个IP是什么IP?需要发邮件的主机,去询问自己的DNS,邮件内的域名里面,负责mail这个的主机是谁,DNS会给到一个IP,这个IP就是westos.com这个域名的mx记录(mx:邮件交换器)

 

   mail root@westos.com   ## “.”表示结束邮件的编辑,发送邮件

   mailq   ##表示邮件队列,不会有消息,因为没有设置mail

   mail   ##会看到一封退信,里面里面会有提示找不到mx

   dig -t westos.com   ##查看你找的域名里的邮局是谁

 

   测试:首先清空邮箱 echo > /var/spool/mail/root

   当在相应的配置文件中添加 MX记录后,重启服务

   mail root@westos.com

   mailq   ##在邮件的队列里面就会有一个邮件,邮件发出去了,但是相应的IP的25端口没有开启。

================================================================================

 

9.DNS的反向解析

   反向解析:dig 一个IP,会出来相应的想要访问的网页页面

   也需要编辑 /etc/named.rfc1912.zones ,编辑内容如下。

    vim /etc/named.rfc1912.zones

相应的行复制粘贴,注意IP要反着写,file处写的是westos.com.ptr(ptr记录:反向解析记录)

   cd /var/named/

   cp -p named.loopback westos.com.ptr

   vim westos.com.ptr   ##内容编辑如下

 

   测试:dig -x 172.25.254.1/2

 

10.DNS的双向解析

   双向解析:拿企业来举例,一个企业里面有内网和外部网络之分。内部进行解析地址的时候,肯定和对外开放的网络是不一样的。企业内部的员工,在解析一个地址的时候,需要的是内网的解析;一个客户端在解析一个地址的时候,需要外网的解析。看不同的/var/named/westos.com.zone文件,就可以看不同的文件,因此这个文件应该cp一份文件名为local的配置文件,然而是因为配置文件/etc/named.rfc1912.zones 里面指定的读取上面的文件,因此这个文件应该也cp一份文件名为localnet的,指向上面的localnet文件的rfc配置文件。最后在DNS的配置文件/etc/named.conf文件中修改相应的配置。

 

   在有DNS的主机上:

 

11.辅助DNS(DNS的集群)

   将配置文件的双向解析还原成原来的单向解析DNS

   当同时有多个人来访问服务器的时候,服务器的压力可能会太大而顶不住,这时候就需要搭建DNS的集群

 

   准备两个虚拟机,一个为DNS,另一个为辅助DNS。

   在辅助的DNS服务器上:

   yum install bind -y

   vim /etc/named.conf   ##和主DNS上的配置相同,如下图

   vim /etc/named.rfc1912.zones   ##和主DNS上的配置部分相同,配置如下

刚开始slaves下面是没有数据文件的,在重启服务就会自动的同步master上的文件

   

   但是当主DNS上的配置文件修改之后,辅助DNS在没有设置的情况下,配置文件没有改变,可以手动将辅助DNS的westos.com.zone文件删除以后重启服务,但是这样太麻烦,所以现在需要的是,辅助的DNS可以自动的去同步主DNS的配置文件的信息。

 

   在主DNS上:(主动告诉辅助DNS,文件发生更改)

   vim /etc/named.conf   ##主配置文件

westos自己新加的域内,添加 also-notify { 172.25.254.20; };

   vim /var/named/westos.com.zone

修改文件中的serial的值,这个前面的值就表示这个文件是否被更改,当两个文件的数值不相同的时候,辅助DNS就会认为配置文件已经被更改了,会自动的同步主DNS的文件

 

11.DNS的更新

   在企业6之前,需要在配置文件中添加 allow-transfer { 172.25.254.20; }; 辅助的DNS才可以主动的去同步主DNS的信息。配置文件中的 allow-update 允许谁去更新

 

   这个更新,不是在westos.com.zone这个文件中添加新的一行,而是在/var/named/ 这个路径下新上传一个westos.com.zone.jnl这样一个文件,当允许的用户去更新DNS的时候,是以named用户的身份去更新的,但是 ls -ld /var/named/ 这个文件对named这个用户不可写,因此需要修改权限 chmod 770 /var/named/ ,这样就可以了。当服务重启的时候,会将jnl文件里面的内容写入到westos.com.zone文件中去(服务重启之后文件会被改掉)。

 

   在被允许的客户端上:

   nsupdate

   >server 172.25.254.10

   >update add hello.westos.com 86400 A 172.25.254.33

   >send

   >update delete hello.westos.com

   >send

 

 12.DNS的KEY更新

   DNS的更新有不足之处:允许IP为172.25.254.1的主机更新DNS,我可以将我的主机的IP也改成172.25.254.1,然后更改DNS的文件。因此加密的方式更加的安全

 

   (1)恢复westos.com.zone的文件,如果做过 cp -p 备份的,将文件全部删除,然后将备份文件移动到原来的目录下,重启服务即可

   (2)cat /etc/rndc.key   ##查看加密方式

   (3)dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos   ##回车之后,在虚拟机上的shell里敲击键盘。

   (4)cp -p /etc/rndc.key /etc/westos.key   ##生成自己的key文件

   (5)vim /etc/westos.key   ##将上面生成的key修改成自己的key,key名称也要改

   (6)vim /etc/named.conf    ##让DNS识别这个加密的文件

在最后面添加 include "/etc/westos.key";

   (7)vim /etc/named.rfc1912.zones  ##修改可以更新文件的人

allow-update { key westos; };

   (8)重启服务

   (9)将key文件发送到想要允许的用户

 

   测试:

   nsupdate -k 发送的key

     >server 172.25.254.10

   >update add hello.westos.com 86400 A 172.25.254.33

   >send

   >update delete hello.westos.com

   >send

 

13.DDNS的动态域名的解析

   配置文件westos.com.zone是自己写入的,里面的IP是一个静态的,但是如果IP是一个动态的、会改变的怎么办?配置文件的IP要跟着IP的改变而改变。

 

   DNS服务器上:

   yum install -y dhcp

   cp / /etc/dhcp/dhcpd.conf

   vim /etc/dhcp/dhcpd.conf    ##像之前的dhcp配置文件一样配置,但是还有不同

ddns-update-style interim;   ##主动通知DNS

(DNS的动态域名解析,需要KEY)

key westos {

algorithm hmac-md5;

secret 自己获得的密码;

}

 

zone westos.com. {

primary localhost;

key westos;

}

 

   在客户端:

  将ip类型改为dhcp,将hostname更改为域名。

 

   测试:dig hostname设置的域名

posted @ 2019-03-01 15:56  wf-aiyouwei  阅读(830)  评论(0编辑  收藏  举报