天天看点

linux之DNS服务器

<b>DNS</b><b>的基本概念及作用</b>

   DNS是Domain Name System的缩写,中文的含义是域名系统。其作用是将人们易于记忆的域名与人们不容易记忆的IP地址进行转换。执行此项功能的主机被称为DNS服务器。

<b>DNS</b><b>的结构</b>

<b></b>

<a target="_blank" href="http://blog.51cto.com/attachment/201207/141417133.png"></a>

<b>     </b>其中根域是有多台DNS服务器构成,是树的顶级,它表示未命名的等级。在DNS域名中使用时,他的尾部用”.”表示,以指定该名称位于层次结构的最高层或根。在这种情况下DNS域名被认为是完整名称并指向名称树种的确切位置。以这种方式表示的被称为完全合格域名FQDN。例如“Ly.edu.cn.”

     顶级域:通常有三个字母组成,指示国家或单位类型。常见的顶级域有:com,edu,org,gov,net等

     二级域:是在Internet上使用而注册到个人或单位的长度可变的名称,它必须基于相应的顶级域。

     子域:单位可以创建的其他名称,这些名称从已注册的二级域名中派生,并可将其按部门或地理位置设置。

<b>DNS</b><b>的组成</b>

<b>   </b>在概念上可以把DNS分为三个部分

<b>域名空间</b>:这是标识一组主机并提供它们的有关信息的树结构的详细说明。树上的每一个节点都有它控制下的主机的有关信息的数据库

<b>域名服务器</b>:这是保持并维护域名空间中数据的程序。每个域名服务器含有一个域名空间子集的完整信息,并保存其他有关部分的信息

   <b> </b><b>解析器:</b>解析器是简单的程序或子程序库,它从服务器中提取信息以响应对域名空间中主机的查询。

<b>DNS</b><b>服务器的类型</b>

主DNS服务器(某个区域是主区域master).

辅助DNS服务器(说明某个区域是从区域slave),可以从主服务器中转移一整套域信息。

缓存服务器等

<b>DNS</b><b>区域类型</b>

<b>maser</b>标准主区域:创建新的查找数据库,存储主机名和IP地址的解析记录。

<b>slave</b>标准辅助区域:是标准主区域的数据库的只读拷贝,使用它可减轻主服务器的工作负荷,DNS使用区域传送从主域名服务器发送记录到辅助的域名服务器上。<b></b>

hint:线索区域

forward:转发区域

<b>DNS</b><b>查询</b>

DNS性质:DNS是一个分布式数据库系统,它提供将域名转换成IP地址信息。

名称解析:将域名转换成IP地址的方法,即查询转换的过程。

查询:递归查询(逐级的一个过程),和迭代查询(一个服务器请求多次)

名称解析分类:

正向解析:DNS将域名转换成IP地址的过程。

反向解析:DNS将IP地址转换成域名的一个过程。

<b>DNS</b><b>资源记录类型</b>

FQDN--&gt;IP  A记录,AAAA记录  正向解析

       IP--&gt;FQDN PTR指针记录       反向解析

       SOA:Start Of Authority :起始授权记录,由此开始下面是区域,

       NS:Nameserver  后面要加主机名称 标识区域的负责人

       CNAME:别名记录,正式记录

       MX:Mail exchanger  邮件交换器  只存在正向(A)记录中  

<b>DNS</b><b>的安装过程</b>

<b>  </b>下面是安装bind97的一个简单操作

#yum list all | grep bind    查看当前系统上的bind的详细信息。

#rm –e bind-libs bind-utils   删除以前安装的bind

#yum install bind97 bind97-libs  bind97-utils  使用yum安装bind97

<b>DNS</b><b>的配置过程</b>

<b> </b> 安装过DNS后,现在我们开始配置DNS的主配置文件/etc/named.conf  ,可以把原先的配置文件删除,自己建立一个具体内容如下

  options{

     directory “/var/named”; 定义DNS服务数据所在的文件目录

};全局配置项

   zone “.”  IN{            区域

          type hint;

          file “named.ca” ;

};

zone “localhost” IN {    正向解析

  type master

   file “localhost.zone”

     zone “0.0.127” IN{        反向解析

        type master

        file “named.local”

配置好主配置文件之后,接下来建立正向解析的文件localhost.zone 和反向解析的文件named.local.

  vim localhost.zone

  $TTL 600

  localhost.  IN  SOA localhost.  admin.localhost. (

                    2012071001      主服务器数据库上的版本号,也就是序列号

                    50M             复制间隔时间

                    20M             重试时间

                    3D               过期时间

                    1D)              否定回答时间

 localhost.  IN NS    localhost.

 localhost.  IN A     127.0.0.1

vim named.local

 $TTL 600

@  IN  SOA  localhost. admin .localhost.(

                    50M             复制间隔时间

                    1D)              否定回答时间

@    IN  NS  localhost.

 1                 IN   PTR  localhost.

<b>修改文件的属组权限</b>

#chown :named  /etc/named.conf

#chmod 640  /etc/named.conf

#cd  /var/named

#chown :named named.local localhost.zone

#chmod 640 named.local localhost.zone

<b>检查配置文件以及区域的语法错误</b>

#named-checkconf   检查配置文件的语法错误

#named-checkzone  localhost  localhost.zone

#named-checkzone  0.0.127.in-addr.arpa named.local

到此为止简单的DNS已经配置成功,接下来只需重启服务即可

#service named start   效果如下图

<a target="_blank" href="http://blog.51cto.com/attachment/201207/141512635.png"></a>

<b>主从配置过程</b>

 现在我们就假设我们有两台DNS服务器A和B,A作为主服务器,B 作为从服务器

  主机A的IP为 172.16.99.1   域名ns1.magedu.com

  主机B的IP为172.16.200.1   域名为ns2.magedu.com

其中还有mail.magedu.com,pop3.magedu.com

<b>首先配置主DNS</b><b>服务器</b>,在上面的配置基础上,我们只需要在/etc/named.conf文件中添加如下区域即可。

上图中的allow-transfer表示允许传送,后面跟允许传送的主机IP

然后分别创建magedu.com.zone和16.172.zone两个文件

vim magedu.com.zone,文件内容具体如下图

<a target="_blank" href="http://blog.51cto.com/attachment/201207/141859122.png"></a>

vim 16.172.zone 文件具体内容如下图

<a target="_blank" href="http://blog.51cto.com/attachment/201207/141914781.png"></a>

然后使用named-checkzone检查区域错误。

测试建立的DNS服务器,测试结果如下图

<a target="_blank" href="http://blog.51cto.com/attachment/201207/142002400.png"></a>

<b>配置从DNS</b><b>服务器</b>

<b>   </b>主服务器配置基本上一样,但是从DNS服务器不用配置区域文件而是从主DNS服务器上复制而来,因此只需把主配置文件中的区域类型修改成slave即可,具体配置如下图:

<a target="_blank" href="http://blog.51cto.com/attachment/201207/142052880.png"></a>

然后service named start 启动服务,查看/var/named/slaves 目录下生成两个文件,如下图所示

<a target="_blank" href="http://blog.51cto.com/attachment/201207/142122645.png"></a>

查看自动生成的文件magedu.com.zone 如下图所示

<a target="_blank" href="http://blog.51cto.com/attachment/201207/142211321.png"></a>

由此可知主从配置成功

<b> DNS</b><b>子域授权</b>

   由于DNS分布式的层级结构,把一个大名称空间划分成许多小的名称空间,并逐级委托给某一个小空间的小服务器来实现名称解析的应用,当DNS服务器繁忙时,可以授予子域进行名称解析,以减少服务器压力。

  在这里我们只讲解正向区域的DNS子域授权。

 假使我们有两台主机A和B,A作为主DNS服务器,B作为子域授权服务器

A的IP地址为172.16.99.1,B的IP地址为172.16.8.1

<b>配置主机A</b>

主机A的主配置文件/etc/named.conf 和主从配置中A的配置一样,在这里就不再讲述了,接下来只需编辑区域文件,在magedu.com.zone中添加如下内容即可

tech.magedu.com  IN  NS ns.tech.mageduc.om

ns.tech.magedu.com IN A  172.16.8.1

然后重启服务

<b> </b><b>配置主机B</b>

   配置DNS的主配置文件/etc/named.conf,先按照上述配置DNS过程把DNS服务能够启动起来,然后在主配置文件中添加如下区域,并创建区域文件即可,具体内容如下图

<a target="_blank" href="http://blog.51cto.com/attachment/201207/142459222.png"></a>

  编辑区域文件

vim tech.magedu.come.zone具体内容如下图

<a target="_blank" href="http://blog.51cto.com/attachment/201207/143028519.png"></a>

vim 172.16.zone,具体内容如下图

 zone “magedu.com” IN {

       type forward;

       forward none;

       forwarders { 172.16.100.1; } ;  指定转发给谁

本文转自  沐木小布丁  51CTO博客,原文链接:http://blog.51cto.com/sxhxt/925858