<ins id='auygq'></ins>

        <i id='auygq'></i>
        <dl id='auygq'></dl>

          <span id='auygq'></span>

          <code id='auygq'><strong id='auygq'></strong></code>
          <i id='auygq'><div id='auygq'><ins id='auygq'></ins></div></i>
          <acronym id='auygq'><em id='auygq'></em><td id='auygq'><div id='auygq'></div></td></acronym><address id='auygq'><big id='auygq'><big id='auygq'></big><legend id='auygq'></legend></big></address>

          <fieldset id='auygq'></fieldset>

          1. <tr id='auygq'><strong id='auygq'></strong><small id='auygq'></small><button id='auygq'></button><li id='auygq'><noscript id='auygq'><big id='auygq'></big><dt id='auygq'></dt></noscript></li></tr><ol id='auygq'><table id='auygq'><blockquote id='auygq'><tbody id='auygq'></tbody></blockquote></table></ol><u id='auygq'></u><kbd id='auygq'><kbd id='auygq'></kbd></kbd>
          2. 在Linux系统上安装配置DNS服务器的教程

            • 时间:
            • 浏览:13
            • 来源:124软件资讯网

                简介

                DNS 是盘算机域名系统 (Domain Name System 或Domain Name Service) 的缩写  ,它是由剖析器和域名服务器组成的  。域名服务器是指生存有该网络中所有主机的域名和对应IP地址  ,并具有将域名转换为IP地址功效的服务器  。其中域名必须对应一个IP地址  ,而IP地址纷歧定有域名  。域名系统接纳类似目录树的品级结构 。域名服务器为客户机/服务器模式中的服务器方  ,它主要有两种形式:主服务器和转发服务器  。将域名映射为IP地址的历程就称为“域名剖析” 。在Internet上域名与IP地址之间是一对一(或者多对一)的  ,也可接纳DNS轮循实现一对多  ,域名虽然便于人们影象  ,但机械之间只认IP地址  ,它们之间的转换事情称为域名剖析  ,域名剖析需要由专门的域名剖析服务器来完成  ,DNS就是举行域名剖析的服务器 。DNS 命名用于 Internet等 TCP/IP网络中  ,通过用户友好的名称查找盘算机和服务  。当用户在应用法式中输入 DNS 名称时  ,DNS 服务可以将此名称剖析为与之相关的其他信息  ,如 IP 地址  。由于  ,你在上网时输入的网址 ,是通过域名剖析系统剖析找到了相对应的IP地址  ,这样才气上网  。实在 ,域名的最终指向是IP  。 [1]

                DNS分为Client和Server  ,Client饰演发问的角色  ,也就是问Server一个Domain Name  ,而Server必须要回覆此Domain Name的真正IP地址  。而当地的DNS先会查自己的资料库  。若是自己的资料库没有  ,则会往该DNS上所设的DNS服务器询问  ,依此获得谜底之后  ,将收到的谜底存起来 ,并回覆客户  。DNS服务器会凭据差别的授权区(Zone) ,记载所属该网域下的各名称资料  ,这个资料包罗网域下的次网域名称及主机名称  。在每一个名称服务器中都有一个快取缓存区(Cache)  ,这个快取缓存区的主要目的是将该名称服务器所查询出来的名称及相对的IP地址记载快取缓存区中  ,这样当下一次另有另外一个客户端到此服务器上去查询相同的名称 时 ,服务器就不用在到别台主机上去寻找  ,而直接可以从缓存区中找到该笔名称记载资料 ,传回给客户端  ,加速客户端对名称查询的速率  。例如:

                当DNS客户端向指定的DNS服务器查询网际网路上的某一台主机名称 DNS服务器会在该资料库中找寻用户所指定的名称 若是没有  ,该服务器会先在自己的快取缓存区中查询有无该笔纪录  ,若是找到该笔名称记载后  ,会从DNS服务器直接将所对应到的IP地址传回给客户端 ,若是名称服务器在资料记载查不到且快取缓存区中也没有时  ,会向最靠近的名称服务器去要求帮助找寻该名称的IP地址 ,在另一台服务器上也有相同的行动的查询  ,当查询到后会回回复本要求查询的服务器  ,该DNS服务器在吸收到另一台DNS服务器查询的效果后 ,先将所查询到的主机名称及对应IP地址记载到快取缓存区中  ,最后在将所查询到的效果回复给客户端  。

                任何运作中的域名至少有两台DNS服务器  ,一台称为主域名服务器(好比叫做ns1)  ,而另一台称为从域名服务器(好比叫做ns2) 。这些服务器通常用于故障转移:若是一台宕机  ,另外一台就激活成为DNS服务器(译注:此处译者有差别意见  ,事实上两个或更多的DNS服务器是配合事情的  ,并不是第一台制止服务后  ,第二台才接替事情 。剖析器是随机选择一个DNS服务器举行询问  ,若是超时则会询问下一个  ,这是多个DNS的故障容错机制)  。也可以实现包罗负载平衡、防火墙和集群在内的更为庞大的故障转移机制  。

                一个域的所有DNS条目都市被添加到主域名服务器  ,从服务器只会凭据主服务器上的SOA记载的序列号参数从主服务器同步所有信息  。

                此教程将会讲述怎样建立一台在CentOS上运行的主DNS服务器 。请注重  ,本教程中提到的DNS服务器将会是一台开放DNS服务器  ,这也就是说该服务器将会回应来自任何IP地址的查询  。对于DNS服务器的会见控制将在此教程中讨论  。

                在最先之前 ,我想要提一下的是  ,DNS可以在chroot情况中设置 ,也可以在非chroot情况中设置  。chroot情况将DNS服务器限制在系统中某个特定目录中 ,以制止让服务用具有系统级的会见权限 。在此情况中  ,任何DNS服务器的宁静毛病不会导致整个系统的破损  。将DNS服务器置于chroot情况中  ,对于部署测试也很有用  。

                目的

                我们将在基于域名example.tst的测试情况中设置一台DNS服务器 ,这个域名是虚伪的(并不真实存在的)  。这样  ,我们就不会意外滋扰到其它真实的域名  。

                在该域中  ,有以下三台服务器  。

                我们将会设置一台主域名服务器  ,并添加上表中须要的域和DNS记载  。

                历程

                设置主机名

                所有的主机名必须以完全限制域名的方式准确界说  ,可以通过以下要领完成设置  。

                代码如下:

                # vim /etc/sysconfig/network

                HOSTNAME=ns1.example.tst

                注:该文件中指定的主机名参数在服务器启动后才会启用(译注:或者网络服务重启后)  ,因此  ,该设置不会马上生效  。下面的下令可以连忙暂时性地修改主机名  。

                代码如下:

                # hostname ns1.example.tst

                一旦设置 ,主机名可以通过以下下令验证 。

                代码如下:

                # hostname

                ns1.example.tst

                在进入下一步之前 ,请确保上述三台服务器上的主机名已经设置准确 。

                安装软件

                我们将使用bind来设置DNS服务 ,该软件可以很利便地通过yum来安装  。

                不使用chroot情况的:

                代码如下:

                # yum install bind bind-chroot

                使用chroot情况的:

                代码如下:

                # yum install bind bind-chroot

                准备设置文件

                正如前面提到的  ,bind可以在chroot情况下设置  ,或者在非chroot情况下设置 ,设置文件的路径会由于是否安装chroot包而差别 。

                可以使用默认提供的named.conf设置文件  ,可是为了更利便使用 ,我们将使用另外一个简朴的设置文件模板  。

                非chroot情况:

                代码如下:

                # cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /etc/named.conf

                chroot情况:

                代码如下:

                # cp /usr/share/doc/bind-9.8.2/sample/etc/named.rfc1912.zones /var/named/chroot/etc/named.conf

                现在来备份并修改设置文件  。

                非chroot情况:

                代码如下:

                # vim /etc/named.conf

                chroot情况:

                代码如下:

                # vim /var/named/chroot/etc/named.conf

                添加/修改以下行:

                代码如下:

                options {

                ## 区域文件存放目录 ##

                directory "/var/named";

                ## 对于非当地权威域的请求转发到 Google 的公然 DNS 服务器 ##

                forwarders { 8.8.8.8; };

                };

                ## 说明一个当地域 example.tst ##

                zone "example.tst" IN {

                type master;

                file "example-fz"; ## 存储文件名  ,放在 /var/named ##

                allow-update { none; };

                };

                ## 为IP段 172.16.1.0 提供反向剖析 ##

                zone "1.16.172.in-addr.arpa" IN {

                type master;

                file "rz-172-16-1"; ## 存储文件名 ,放在 /var/named ##

                allow-update { none; };

                };

                准备区域文件

                那些默认的区域文件会自动建立到/var/named 或者/var/named/chroot/var/named (chroot情况)  。若是在这些地方找不到这些文件  ,/usr/share/doc/bind目录中提供了模板文件  ,可以从这里拷贝 。

                假设默认区域文件没有提供 ,我们可以从/usr拷贝模板文件  。

                非chroot情况:

                代码如下:

                # cp /usr/share/doc/bind-9.8.2/sample/var/named/named.* /var/named/

                chroot情况:

                代码如下:

                # cp /usr/share/doc/bind-9.8.2/sample/var/named/named.* /var/named/chroot/var/named

                很好!由于现在默认的区域文件已经准备好  ,我们可以为example.tst和172.16.1.0网络建立区域文件了  ,以下要点必须时刻谨记  。

                区域文件中的特殊字符‘@’意味着空  。(译注:意即代表本域  。)

                所有的完全限制域名必须以点‘.’竣事 。如:example.tst.若是没有这个点  ,你会发生问题 。(译注:即会被当做当前@所代表的域的子域 。)

                1. 转发区域(当地权威域)

                转发区域包罗了名称到IP地址的映射  。对于公然的域 ,域名托管提供商的DNS服务器存储了转发区域文件  。(译注:转发区域即当地的权威域  ,由这个服务器自身提供权威的剖析数据)

                非chroot情况:

                代码如下:

                # vim /var/named/example-fz

                chroot情况:

                代码如下:

                # vim /var/named/chroot/var/named/example-fz

                $TTL 1D

                @ IN SOA ns1.example.tst. sarmed.example.tst. (

                0 ; serial

                1D ; refresh

                1H ; retry

                1W ; expire

                3H ) ; minimum

                IN NS ns1.example.tst.

                IN A 172.16.1.3

                mail IN A 172.16.1.1

                IN MX 10 mail.example.tst.

                www IN A 172.16.1.2

                ns1 IN A 172.16.1.3

                ftp IN CNAME www.example.tst.

                说明:在区域文件中  ,SOA是最先授权(Start Of Authority)的意思 。它的值的第一段是授权名称服务器的完全限制域名  。完全限制域名后面随着的是电子邮件地址  。由于不能在sarmed@example.tst这样的花样中使用‘@’符号(译注:@有特定意义  ,代表本域  。)  ,我们将电子邮件地址重写成sarmed.example.tst.这样的花样 。

                以下是典型的常用DNS记载类型:

                NS:域名服务器

                A: 地址记载 ,记载主机名到IP地址的映射(译注  ,此处原文有误  。)

                MX: 邮件交流记载  。这里我们只用了一个邮件交流记载  ,设置其优先级为10  。若是有多个邮件交流记载  ,我们可以使用多个数值优先级  ,数字小的优先级最高  。例如 ,MX 0比MX 1优先级更高  。

                CNAME: 尺度名 。若是在一台单一服务器上托管了多个服务  ,也很可能将多个名称剖析到某个单一服务器  。CNAME指定了一台服务器可能有的其它名称  ,而且将它们指向具有现实A记载的名称  。

                2. 反向区域

                反向区域包罗了IP地址到名称的映射 。这里  ,我们为172.16.1.0网络建立反向区域  。在正式的域中  ,公共IP区块的拥有者拥有的DNS服务器存储反向区域文件  。(某些服务  ,如邮件服务  ,要求IP地址具备准确的反向剖析才气正常事情  。而IP的反向剖析  ,通常是由IP的拥有者如接入商或IDC来卖力剖析  。)

                非chroot情况:

                代码如下:

                # vim /var/named/rz-172-16-1

                chroot情况:

                代码如下:

                # vim /var/named/chroot/var/named/rz-172-16-1

                $TTL 1D

              < p>@ IN SOA ns1.example.tst. sarmed.example.tst. (

              < p> 0 ; serial

              < p> 1D ; refresh

              < p> 1H ; retry

              < p> 1W ; expire

              < p> 3H ) ; minimum

              < p>IN NS ns1.example.tst.

              < p>1 IN PTR mail.example.tst.

              < p>2 IN PTR www.example.tst.

              < p>3 IN PTR ns1.example.tst.

                说明:除了下面的参数外 ,反向区域文件中的大多数参数和转发区域文件中的相同  。

                PTR: IP反向剖析记载  ,指向一个反向限制域名  。

                竣事事情

                既然区域文件已经准备好  ,我们接下来调整它们的权限  。

                非chroot情况:

                代码如下:

                # chgrp named /var/named/*

                chroot情况:

                代码如下:

                # chgrp named /var/named/chroot/var/named/*

                现在  ,我们为DNS服务器设置IP地址  。

                代码如下:

                # vim /etc/resolv.conf

              < p>nameserver 172.16.1.3

                最后 ,我们可以启动DNS服务 ,并确保将它添加到启动服务中  。

                代码如下:

                # service named restart

                # chkconfig named on

                DNS服务器起动后  ,建议关注一下日志文件/var/log/messages ,这里头包罗了后台运行的一些有用信息 。若是没有发现错误  ,我们可以最先测试DNS服务器 。

                测试DNS

                我们可以使用dig或者nslookup来测试DNS  。首先  ,我们需要安装须要的软件包  。

                代码如下:

                # yum install bind-utils

                1. 使用dig测试转发区域

                使用dig来测试时  ,必须时刻关注状态信息:“NOERROR”  ,任何其它值都讲明存在问题  。

                代码如下:

                # dig example.tst

              < p>;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31184

              < p>

              < p>;; QUESTION SECTION:

              < p>;example.com. IN A

              < p>

              < p>;; ANSWER SECTION:

              < p>example.com. 86400 IN A 172.16.1.3

              < p>

              < p>;; AUTHORITY SECTION:

              < p>example.com. 86400 IN NS ns1.example.com.

              < p>

              < p>;; ADDITIONAL SECTION:

              < p>ns1.example.com. 86400 IN A 172.16.1.3

                2. 使用dig测试PTR记载

                使用dig来测试时  ,必须时刻关注状态信息:“NOERROR” ,任何其它值都讲明存在问题  。(译注 ,也可用 dig 1.1.16.172.in-addr.arpa. ptr 来测试 。)

                代码如下:

                # dig -x 172.16.1.1

              < p>;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27415

              < p>

              < p>;; QUESTION SECTION:

              < p>;1.1.17.172.in-addr.arpa. IN PTR

              < p>

              < p>;; ANSWER SECTION:

              < p>1.1.16.172.in-addr.arpa. 86400 IN PTR mail.example.tst.

              < p>

              < p>;; AUTHORITY SECTION:

              < p>1.16.172.in-addr.arpa. 86400 IN NS ns1.example.tst.

              < p>

              < p>;; ADDITIONAL SECTION:

              < p>ns1.example.tst. 86400 IN A 172.16.1.3

                3. 使用dig测试MX记载

                复制代码

                代码如下:

                # dig example.tst mx

              < p>;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35405

              < p>

              < p>;; QUESTION SECTION:

              < p>;example.tst. IN MX

              < p>

              < p>;; ANSWER SECTION:

              < p>example.tst. 14366 IN MX 10 mail.example.tst.

                排错提醒

                我已经把SELinux关闭  。

                保证防火墙没有阻挡UDP 53端口

                万一堕落  ,可在/var/log/messages中检察到有用的信息

                确保区域文件的属主为‘named’

                确保DNS服务器的IP地址是/etc/resolv.conf中的第一条目

                若是你使用example.tst作为实验情况  ,确保将服务器从互联网断开 ,由于example.tst是一个不存在的域  。

                最后小结  ,该教程关注的是实验情况中设置example.tst域用作为演示  。请注重  ,该教程中建立了一台公共DNS服务器  ,此服务器会回应来自任何源IP地址的查询  。若是你是在设置DNS生产服务器 ,请确保检查与公共DNS相关的计谋  。其它教程涵盖了建立从DNS服务器, 限制对DNS服务器的会见以及部署DNSSEC  。