DNS服务器的正反解析及主从复制

DNS服务器的正反解析及主从复制,第1张

DNS服务器的正反解析及主从复制

    在最开始的计算机网络中,人们只能通过输入某个网页的IP地址才能够进行对该网站的访问,因此记忆一个网站的完整的IP地址就成为了一件非常头疼的事,显然,人们对文字的记忆远比对数字的记忆强,为了能够解决这一个问题,DNS就出现了。 DNSDomian Name Server)即域名服务器,dns建立了主机名和IP地址之间的映射关系,他是一个可以帮我们将用文字组成的主机名解析为IP的一个工具,尤其当使用IPV6之后,DNS将扮演一个更加重要的角色。那么本节我们就来了解一下DNS服务器相关的知识。

   这里我们只是基于局域网的配置过程,并非真实环境,真实环境的话必须去注册域名,如果是服务器的话主从DNS服务器都要去上级注册,不然互联网无法识别。

   实验环境:Centos6.5x86_64

   主DNS服务器   172.16.6.20

   从DNS服务器   172.16.106.20 

1、DNS的查询流程

DNS的管理流程如下,每个DNS服务器都仅管理自己的下一层主机,而对于下一层的下一层,则授权给下一层的DNS服务器来管理。我们就通过访问http://www.magedu.com来描述一下其查询流程。

首先,当你在浏览器中敲入该地址时,计算机先会去查看本地配置文件/etc/resolv.sonf中定义的DNS对应的IP地址进行查询;如果没有定义,则去找本地的DNS缓存;如果本地缓存没有,则去找本地DNS服务器中的配置文件;如果本地DNS服务器中的配置文件也没有定义,则去找本地DNS服务器中的缓存中找;如果还是没有,那么就由DNS服务开始迭代查找:

hostS——>本地DNS缓存——>本地DNS服务器——>本地DNS服务器缓存——>迭代

下面我们就介绍一下查找的流程:http://www.magedu.com

1、向最顶级.(root)查询

当本地DNS向根查询时,根发现所需查询的地址在.com.中,于是根叫该本地DNS去找.com.

2、向第二层.com.查询

当本地DNS向.com.查询时,.com.发现所需查询的地址在.magedu.com.中,于是.com.叫该本地DNS去找.magedu.com.

3、向第三层.magedu.com.查询

当本地DNS向.magedu.com.查询时,.magedu.com.发现所需查询的地址为www.magedu.com.,而该主机正好在其管理的范围之内,于是.magedu.com.把该主机对应的IP地址返回给该本地DNS。

4、记录缓存并返回给用户

本地DNS查询到该地址的IP地址之后,为了在下次有相同的请求时不再跑一趟,他就会会在本地对该地址及IP进行缓存,然后将IP返回给用户,当然缓存是有时间限制的,一旦过期,缓存就会失效。

进过以上的步骤之后,本地主机就可以拿着IP地址直接去访问http://www.magedu.com 了,当然本地主机也会进行缓存。这样一个访问流程就结束了。


2、BIND的安装及配置

bind是使用最广泛的一种DNS实现,这里我们就不用源码编码安装BIND了,而是直接使用yum安装。

初始配置

#yum install bind

安装完成之后我们可以看下生成了哪些文件

#rpm -ql bind

其中/etc/named.conf 和/etc/named.rfc1912.zones都是我们的配置文件,/etc/rc.d/init.d/named是我们的服务脚本,其它的这里就先不介绍了,当我们用到时再进行介绍。

当然试验中的测试工具也是必不可少的。我这里已经安装了,没安装小伙伴还需要将这些工具手动安装哦。

下面我们就开始进行配置了。

 # vim /etc/named.conf

由于这里我们只先简单的配置,所以我们就将其他的选项都注释掉了。

配置好之后不要忘记检查语法。

这样配置之后,一个简单的缓存服务器就可以运行了。

需要注意的是,当你在启动服务时,可能会卡住,原因是启动过程中需要生成/etc/rndc.key文件,而在生成过程中需要一大堆的随机数,而这些随机数是从熵池(对熵池概念不了解的建议上GOOGLE搜下,这里我就不解释了)中取的,而卡住的原因可能正是由于熵池用完的了,这个时候你可以在XSHELL中新建一个窗口不同的敲键盘来生成熵池(可能会比较久),过一会你会发现就可以启动了。

服务打开后由于其监听在53号端口,我们可以通过下面命令查看

#ss -tunl

这时候,由于其他东西都没配置,所以它相当于缓存服务器,不负责任何主机的DNS解析,但是它允许其他主机对他进行递归。

正向解析

好的下面我们就来配置主DNS服务器的正向解析。

#vim /etc/named.rfc1912.zones

加入以下一个zone

zone "magedu.com" IN {
        type master;                  定义服务器的类型,master为主服务器
        file "magedu.com.znoe";       定义区域解析库文件,该文件在主配置文件/etc/named.conf中
};                                      options中directory中定义的目录下。

创建区域库文件。

#vim /var/named/magedu.com.zone
$TTL  3600   
@       IN  SOA  ns.magedu.com.   admin.magedu.com (
                  2014080601             序列号
                  1H                     从服务器到主服务器同步的时间间隔
                  10M                    从服务重试时间间隔
                  7D                     从服务器过期时间
                  1D )                   否定答案的统一缓存时间
        IN  NS   ns         服务器            这里的ns,mail,www,web都是简写,其中
        IN  mx  10  mail                      有个隐藏的变量,后面会自动加上.magedu.com.
ns      IN  A   172.16.6.20      对应的A记录
mail    IN  A   172.16.6.21
www     IN  A   172.16.6.22
web     IN  CNAME www            主机的正式名称,当访问web.magedu.com.时,其实访问的是
                                 www.magedu.com.

创建好之后对库文件进行语法测试

[root@localhost ~]# named-checkzone  "magedu.com"   /var/named/magedu.com.zone 
zone magedu.com/IN: loaded serial 2014080601
OK
[root@localhost ~]# service named reload              重新加载库文件
Reloading named:                                           [  OK  ]

需要注意的是为了安全起见,我们还得对区域解析库文件进行属主属组以及权限的限定;

[root@localhost named]# ll
total 32
drwxrwx--- 2 named named 4096 Aug  6 06:03 data
drwxrwx--- 2 named named 4096 Aug 27  2013 dynamic
-rw-r--r-- 1 root  root   332 Aug  6 07:26 magedu.com.zone   未修改前
-rw-r----- 1 root  named 1892 Feb 18  2008 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Aug 27  2013 slaves
[root@localhost named]# chmod 640   magedu.com.zone      
[root@localhost named]# chown :named  magedu.com.zone     改为named组
[root@localhost named]# ll
total 32
drwxrwx--- 2 named named 4096 Aug  6 06:03 data
drwxrwx--- 2 named named 4096 Aug 27  2013 dynamic
-rw-r----- 1 root  named  332 Aug  6 07:26 magedu.com.zone    修改成功
-rw-r----- 1 root  named 1892 Feb 18  2008 named.ca
-rw-r----- 1 root  named  152 Dec 15  2009 named.empty
-rw-r----- 1 root  named  152 Jun 21  2007 named.localhost
-rw-r----- 1 root  named  168 Dec 15  2009 named.loopback
drwxrwx--- 2 named named 4096 Aug 27  2013 slaves


下面我们就可以测试服务器是否正常工作了

 想要了解更多的测试命令可以参考此网站http://124894752.blog.163.com/blog/static/7134183201052352136936/

[root@localhost ~]# dig -t NS magedu.com @172.16.6.20

这样我们的正向解析主服务器就建成功了。

反向解析

正向的解析服务器做好之后那么反向就简单了,步骤都差不多,我们来实现下。

[root@localhost named]# vim /etc/named.rfc1912.zones 
         添加以下zone
zone "6.16.172.in-addr.arpa" IN {       注意反向解析区域名称的写法:IP的反写.in-addr.arpa
        type master;
        file "172.16.6.zone";      这里的库文件名都是可以自己定义的,不过一般都是IP加zone
};

创建反向解析库文件:注意反向解析库中没有A记录和MX记录

[root@localhost named]# vim 172.16.6.zone
$TTL 3600   
@       IN  SOA  ns.magedu.com.   admin.magedu.com (    
                  2014080601                              这里的意义跟正向解析库中相同
                  1H
                  10M
                  7D
                  1D )
        IN  NS   ns.magedu.com.                          
20      IN  PTR  ns.magedu.com.          注意这里反向地址的都是简写其实这里有个隐藏的变量21      IN  PTR  mail.magedu.com.        后面会自动加上.6.16.172.in-addr.arpa 
22      IN  PTR           正反向解析中的变量是不一样的

修改好之后进行语法测试以及库文件权限修改,最终重新加载服务。

[root@localhost named]# named-checkconf 
[root@localhost named]# named-checkzone "6.16.172.in-addr.arpa" /var/named/172.16.6.zone 
zone 6.16.172.in-addr.arpa/IN: loaded serial 2014080601
OK
[root@localhost named]# chmod 640 172.16.6.zone 
[root@localhost named]# chown :named 172.16.6.zone 
[root@localhost named]# service named reload
Reloading named:                                           [  OK  ]

这样我们的一个反向解析DNS服务器也建成功了,下面我们进行测试下。

[root@localhost named]# dig -x 172.16.6.21 @172.16.6.20

解析得到172.16.6.21的主机名为mail.magedu.com.正确,服务正常运行。


3、DNS的主从复制

下面我们来讲下DNS的主从复制,所谓主从复制,就是将主DNS服务器上的解析库复制到从DNS服务器上,从DNS服务器根据库文件就可以进行正向或者反向解析。

需要注意的是

1、主从时间同步:使用ntpdate命令

2、版本差异 :通常从服务器的版本要比主服务器的高,或者跟主的一样,这是非常关键的。


正向解析从服务器

首先添加从服务器时,必须在主服务器中的解析库中必须添加NS记录,A记录。

这是在主服务器中进行。172.16.6.20

[root@localhost ~]# vim /var/named/magedu.com.zone 
$TTL  3600
@       IN  SOA  ns.magedu.com.   admin.magedu.com (
                  2014080602     需要注意的是,每次文件更新,版本号必须改变,这里从1升成2
                  1H
                  10M
                  7D
                  1D )
        IN  NS   ns
        IN  NS   ns2            添加的从服务器ns2.magedu.com.
        IN  mx  10  mail
ns      IN  A   172.16.6.20
ns2     IN  A   172.16.106.20   从服务器A记录
mail    IN  A   172.16.6.21
www     IN  A   172.16.6.22
web     IN  CNAME www

一般我们修改好解析库之后都要重新加载下,但这边我们先不加载,等从服务器建好之后我们再加载。


配置从服务器:172.16.106.20

首先从服务器一开始的配置过程跟主服务器一样,详见bind安装与配置中的初始配置

下面我们就开始对其进行配置

[root@localhost ~]# vim /etc/named.rfc1912.zones 
      加入一个zone
 zone "magedu.com" IN {
        type slave;                      服务器类型为从
        file "slaves/magedu.com.zone";   注意文件是directory定义的目录下的slaves目录下
        masters { 172.16.6.20; };     指向的服务器,这里我们只有2台,所以指向主服务器地址
};

完成之后进行语法检测,并重新加载。

[root@localhost named]#service named reload
[root@localhost named]# ls slaves/
magedu.com.zone

加载之后可以通过查看日志确定同步是否进行。

[root@localhost ~]# tail /var/log/messages
Aug  6 09:26:35 localhost named[2138]: zone magedu.com/IN: notify from 172.16.6.20#37045: refresh in progress, refresh check queued
Aug  6 09:26:39 localhost named[2138]: zone magedu.com/IN: refresh: skipping zone transfer as master 172.16.6.20#53 (source 0.0.0.0#0) is unreachable (cached)
Aug  6 09:26:49 localhost named[2138]: zone 6.16.172.in-addr.arpa/IN: refresh: skipping zone transfer as master 172.16.6.20#53 (source 0.0.0.0#0) is unreachable (cached)
Aug  6 09:28:20 localhost named[2138]: client 172.16.6.20#34209: received notify for zone 'magedu.com'
Aug  6 09:28:20 localhost named[2138]: master 172.16.6.20#53 (source 0.0.0.0#0) deleted from unreachable cache
Aug  6 09:28:20 localhost named[2138]: zone magedu.com/IN: Transfer started.
Aug  6 09:28:20 localhost named[2138]: transfer of 'magedu.com/IN' from 172.16.6.20#53: connected using 172.16.106.20#50020
Aug  6 09:28:20 localhost named[2138]: zone magedu.com/IN: transferred serial 2014080606
Aug  6 09:28:20 localhost named[2138]: transfer of 'magedu.com/IN' from 172.16.6.20#53: Transfer completed: 1 messages, 10 records, 259 bytes, 0.001 secs (259000 bytes/sec)
Aug  6 09:28:20 localhost named[2138]: zone magedu.com/IN: sending notifies (serial 2014080606)

也可以在主服务器下查看。

这样一个从服务就配置好了。我们可以进行测试了。

测试成功,解析得到www.magedu.com的对应地址为172.16.6.22。


反向解析从服务器

反向解析的步骤和正向的差不多,只是添加的东西略有不同而已,这里我们就简单的说下了。

同样先在主服务器中进行。172.16.6.20

[root@localhost ~]# vim /var/named/172.16.6.zone 
$TTL 3600
@       IN  SOA  ns.magedu.com.   admin.magedu.com (
                  2014080608
                  1H
                  10M
                  7D
                  1D )
        IN  NS   ns.magedu.com.
        IN  NS   ns2.magedu.com.                 添加从服务器NS记录
20      IN  PTR  ns.magedu.com.
20.106.16.172.in-addr.arpa. IN  PTR ns2.magedu.com.   添加从服务器PTR记录
21      IN  PTR  mail.magedu.com.
22      IN  PTR  www.magedu.com.

这里需要注意还是版本问题。

配置反向解析从服务器:172.16.106.20

[root@localhost ~]# vim /etc/named.rfc1912.zones 
      加入一个zone
 zone "6.16.172.in-addr.arpa" IN {
        type slave;                      服务器类型为从
        file "slaves/172.16.6.zone";   注意文件是directory定义的目录下的slaves目录下
        masters { 172.16.6.20; };     指向的服务器,这里我们只有2台,所以指向主服务器地址
};

修改好之后进行语法测试及同步

[root@localhost named]# named-checkconf 
[root@localhost ~]# rndc reload
server reload successful

好了这样我们的从服务器的反解就配置好了,来测试一下。

同样先查看下日志

[root@localhost named]# tail  -1 /var/log/messages
Aug  6 09:48:21 localhost named[2138]: zone magedu.com/IN: sending notifies (serial 2014080608)    版本号正确

对172.16.6.21进行解析得到mail.magedu.com.


好了,本节的内容我就讲到这里,讲的不好的地方希望大家多多包含,不对的地方希望大家能够指正,谢谢!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/784408.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存