首页 > 代码库 > linux_DNS服务器(正解/反解)的简单创建

linux_DNS服务器(正解/反解)的简单创建

什么是DNS?

    DNS(Domain Name System) 域名系统。它是如今互联网上能够相互通信的服务之一,对于现在的互联网特别特别重要的,因为在这个人们不能很好记忆数字IP地址的问题上,输入IP地址来访问其他的主机是很困难的,和不现实的,如果数字IP地址用我们所熟悉的各种名称(字符,例如:baidu taobao 等)就很好记忆啦。DNS就是来完成这个解析的功能的。


DNS工作的原理

    首先,我们先了解一个内容,例如www.baidu.com,

    www.baidu.com 在DNS中是有阶层的  .com                 中国

                                        .baidu.com              中国河南

                                              www.baidu.com            中国河南XX市


    那么我们说说DNS服务的工作机制如下图:




wKioL1PgxgHiZBkIAABwaT0RUEg565.png

我们对上图进行下说明:

    首先,客户端想要访问 www.baidu.com这个服务器

        1,把请求发送给DNS服务器,DNS服务器收到请求后,发送给 .(根)服务器,

        2,根服务器发现.com这个域是自己管辖的,就返回给DNS服务器,.com的地址,然后DNS服务器就去访问com这个服务器

        3,.com这个服务器收到DNS的请求后,就发现.baidu.com就在自己的域内,于是就把.baidu.com返回给DNS,让它去找.baidu.com

        4, .baidu.com收到DNS的请求后,发现对方要找的是自己域下的www,就告诉DNS你找对人啦,我就是你要找的,我这就把我的IP地址发给你,于是DNS请求到了目标IP地址。

        5,DNS服务器把请求到的目标IP返回给PC机,PC机根据得到的www.baidu.com的IP地址,就找www.baidu.com这个服务器通信去啦,至此域名解析完成。


既然DNS这么重要,那么我们怎么样要配置一个DNS服务器呢?

第一步,  我们要知道,创建一个DNS服务器就好比一个市要开发一个新区一样,必须要给上级申请,上级比准后才能建设是不是,这里也是一样,我们必须向我们上层的域管理者申请备案,然后才能获得认同,别的主机访问我们,上级才知道我们是哪个部分的,否则,上级都不知道我们的存在,别的主机怎么能访问我们呢?

第二步,才是开始建设配置DNS服务器啦,下边就详细说 下

    在一台主机上创建一个DNS服务器,要准备一些环境。要能启动该服务,我们就需要bind这个工具,bind是DNS服务工具。

    与DNS服务相关的几个配置文件,先给你们说下

    /etc/hosts   它是最早记录IP与主机名的档案(那时的互联网没法和现在比,所以一个文档就可以记录了)

    wKioL1Pgz2-QCCDxAAAdqY4tu3Q897.png

    /etc/resolv.conf      它是DNS客户端的配置文件,记录DNS服务器IP的,这里DNS指向如下图:

wKioL1Pg0BXTAlSfAAAT3cRne0g049.png


    /etc/named.conf     它是bind这个工具的主配置文件,它里面定义了:

                        options {

                            director   “工作目录(默认/var/named)”

                            recursion   yes    //是否接受递归查询

                        };


                        zone "." IN {

                            type hint;      //zone是定义区域的关键字,此处

                            file "named.ca"  // 指定该区域的数据库文件默认在/var/named/

                        };

    好啦,配置文件介绍完了,下面开始简单配置吧,

我们主配置文件如下(只含有主要内容,其他我都注释掉了):

wKioL1Ph_lzTFNdWAABYqFwO9iw654.png下一步我们去 /etc/named.rfc1912.zones 这个文件内写上要定义的域mage.com


wKioL1PiADzhHvDuAAA8rcvUNoM363.png


看到file "mage.com.zone" 那行没,那个文件名就是我们要配置的正向解析库文件,它在/var/named/mage.com.zone ,下面我们来看看里面的东西;

wKiom1PiBHiiGDHbAABJMb45ME8494.png 这个文件的属组要改为named,权限改为640  

 下面我来给你解释解释上面的具体内容:

    @ (本地域名)    SOA(起始区域授权记录)  ns.magecom(就是DNS服务器的名字)

第一行的意思:区域授权的第一条记录,所以任务该文件的第一行必须是SOA类型的,

                域mage.com 授权 ns.mage.com这个DNS服务器管理下面的服务器

                admin.mage.com 这个名称是DNS服务器管理员的邮箱地址,

    201401 代表的是此文件序列版本号,如果此文件内容有更新则必须修改此序列号,否则在主从服务器模式上,从服务器将不会从主服务器上跟新数据的。


    3D 代表的是从服务器多久从主服务器上同步数据的刷新时间为3天

    1H 代表的重试间隔时间为1小时,即从服务器联系不到主服务器,需要重试链接的时间间隔

    1W 代表的过期时间1周,即是,从服务器多久后就不再工作的时间

    3H 记录在缓存中的存留时间

    每一个服务器的名称都应该对应一个存在的IP地址,且必须有一条A记录也就是主机记录,

    为什么xxx.mage.com对应的不是IP地址呢?因为这是我给www.mage.com起的一个别名,相当于人的小名都代表同一个服务器。

    至此,我们就配置成功了,下面我们要启动这个DNS服务器。

service  named  start 

/etc/rc.d/init.d/named start

   

wKiom1PiBgTxNHrhAAAKPK1oc-E015.png用命令 ss -unl (看53号端口是否处于监听状态,如果有证明启动成功)

wKioL1PiBquxJc52AAAlza0mcl0501.png

既然启动成功了,那我们测试下DNS服务器能否解析域名成功呢?

有以下几种命令:

nslookup 这个可以直接用 nslookup ns.mage.com查询

wKioL1PiJ1-juQyMAAAMCeCCNrM910.png

还可以直接使用 nslookup,会出现一个交互界面:

wKiom1PiJmmhusJgAAAWr85TPZg074.png

显示的都能解析出域名对应的IP,是不是。


另外一种测试的命令是host命令如: host www.mage.com

wKiom1PiJvPiyaZKAAAHUWdzPcA965.png

而host -a www.mage.com则要显示更为详细的内容

wKioL1PiKIOAlJuJAAAxVesHXlo855.png


还有一个非常强大的命令就是dig,是现在非常流行的DNS测试工具之一,用法如下:

dig: 查询选项

+trace    跟踪查询

+notrace    不跟踪查询

+recurse    递归查询

+norecurse    不递归查询


dig trace www.mage.com 正向跟踪查询

wKioL1PiKtPj0DsZAABGH6Ka-Jk619.png

dig -x www.mage.com 则就是反向查询了

对于反向查询,首先我们定义有反向区域,在反向区域内创建反向解析库文件如下:

我们在/etc/named.rfc1912.zones中,定义反向区域

wKiom1PiMCPh0GgQAAAHubgiEyM672.png

编辑反向解析库文件 172.16.249.zone

wKioL1PiMVujLfbaAAAS-rY9T3Q255.png

并修改该文件的权限为640,且属组为named组,

来用host测试下看看:wKiom1PiNbLB6qCQAAAgBkRYBMM951.png

看吧,成功解析出mail.mage.com这个域名,这就是反解的一般步骤。

上面就是主DNS服务器的配置,但是只有一个主DNS服务器,那如果DNS服务器当机了怎么办呢?所有要有一个辅助的DNS主机也叫“从DNS服务器”

从DNS服务器的创建:

    由于从DNS的服务器中的解析库数据是从主DNS服务器同步过来的,所以不需要手工建立数据库文件。所以,我们只需编辑从DNS服务器的配置文件就行,编辑如下:且要指定主DNS服务器的IP。

wKiom1PiQiug5Cs_AAAJUI2eFV0551.png

mkdir /var/named/slaves  还要在/var/named/创建目录slaves,这是配置从DNS服务器的要求

    然后重新启动从DNS服务器, service named start 

    你就会发现在slaves这个目录下已经有同步的文件了;

    wKiom1PiS-OyCGuQAAAMVEY_uAM850.png

    现在你就可以使用从DNS服务器来完成主DNS服务器需要解析的域名啦,从DNS服务器配置相对要简单的多。



本文出自 “linux小盆友” 博客,请务必保留此出处http://ny0716.blog.51cto.com/9154254/1536668