在最开始的计算机网络中,人们只能通过输入某个网页的IP地址才能够进行对该网站的访问,因此记忆一个网站的完整的IP地址就成为了一件非常头疼的事,显然,人们对文字的记忆远比对数字的记忆强,为了能够解决这一个问题,DNS就出现了。 DNS(Domian 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.
好了,本节的内容我就讲到这里,讲的不好的地方希望大家多多包含,不对的地方希望大家能够指正,谢谢!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)