DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx

上传人:b****1 文档编号:14814721 上传时间:2023-06-27 格式:DOCX 页数:10 大小:24.14KB
下载 相关 举报
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第1页
第1页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第2页
第2页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第3页
第3页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第4页
第4页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第5页
第5页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第6页
第6页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第7页
第7页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第8页
第8页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第9页
第9页 / 共10页
DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx

《DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx》由会员分享,可在线阅读,更多相关《DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx(10页珍藏版)》请在冰点文库上搜索。

DNS服务器原理详解与Centos6x下搭建DNS服务器原创.docx

DNS服务器原理详解与Centos6x下搭建DNS服务器原创

 DNS数据库的记录:

正解,反解,Zone的意义

通过DNS解析过程详解这篇文章,我们知道了要想访问,最重要的就是这部DNS服务器内记录的信息了。

这些记录的文件,我们可以称之为数据库,而在数据库里面针对每个要解析的领域(domain,如.com,.cn,.org,),就称为一个区域(zone)。

有从主机名查询到IP的方式,也有从IP反查到主机名的方式,因此:

∙从主机名查询到IP和方式,称为:

正解;

∙从IP反解析到主机名的方式,称为:

反解;

∙不管是正解还是反解,每个领域的记录就是一个zone(区域)

正解的设定权以及DNS正解zone记录的标志

谁可以申请正解的DNS服务器架设权呢?

答案是:

都可以!

只要该领域没有人使用,你先抢到,就能够使用了。

不过,因为国际INTERNIC已经定义出gTLD以及ccTLD了,所以你不能自定义例如sun.zmit这种网域的!

还是要符合上层DNS所给予的领域范围才行。

像比较新的*.xyz,和*.我爱你 这样的领域名。

正解文件的zone里主要记录了哪些信息,因为正解的重点在于由主机名查询到IP,而且每部DNS服务器还是得要定义清楚,同时,你可能还需要架设master/slave架构的DNS环境,因此,正解zone通常具有以下几种标志:

∙SOA:

开始验证(StartofAuthority);

∙NS:

名称服务器(NameServer),后面记录的数据是DNS服务器的意思;

∙A:

地址(Address),后面记录的是IP的对应(最重要)。

反解的设定权以及DNS反解zone记录的标志

正解的领域名只要符合INTERNIC及你的ISP规范即可,取得授权较为简单,自己取名字。

那反解呢?

反解主要是由IP找到主机名,因此重点是IP的所有人是谁。

因为IP都是INTERNIC发放给各家ISP的,而且因路由问题,IP不能乱设定,所以,能够设定反解的就只有IP的拥有人,亦即你的ISP才有权力设定反解的。

那你向ISP取得的IP能不能自己设定反解呢?

答案是不行!

除非你取

得的是整个classC以上等级的IP网段,那你的ISP才有可能给你IP反解授权。

否则,若有反解的需求,就得要向你的直属上层ISP申请才行!

那么反解的zone主要记录的信息有哪些呢,除了服务器必备的NS以及SOA之外,最重要的就是:

∙PTR:

指向(PoinTeR),后面记录的数据就是反解到主机名

每部DNS都需要的正解zone:

hint

现在我们知道一个正解或一个反解就可以称为一个zone了,那么有没有哪个zone是特别重要的呢?

有的,那就是 . ,当DNS服务

器在自己的数据库找不到所需的信息时,一定会去找 . ,那 . 在什么地方呢,所以就得要有记录 . 位置的zone才行,这个记录 .的zone的类型,就被我们称为hint类型,这几乎是每个DNS服务器都得要知道的zone。

一部简单的正解DNS服务器,基本上就要有两个zone才行,一个是hint,一个是关于自己领域的正解zone。

以为例,DNS服务器内,至少就要有这两个zone:

∙hint(root):

记录 . 的zone;

∙:

记录这个正解的zone。

Client端的配置

从DNS解析过程详解的文章中,我们了解到主机名对应到IP有两种方法,早期的方法是直接写在档案里面来对应,后来比较新的方法则是透过DNS架构。

下面来分析两种方法和对应的配置文件:

∙/etc/hosts:

这个是最早的hostname对应IP的档案;

∙/etc/resolv.conf:

这个就是ISP的DNS服务器IP记录处;

∙/etc/nsswitch.conf:

这个档案则是决定先要使用/etc/hosts,还是/etc/resolv.conf的设定。

一般而言,Linux的预设主机名与IP的对应搜寻都以/etc/hosts为优先。

查看/etc/nsswitch.conf,并找到hosts的项目:

1

[Sun@localhost~]$ sudovim /etc/nsswitch.conf

上面那个files就是使用/etc/hosts,而最后的dns则是使用/etc/resolv.conf的DNS服务器来进行搜寻。

因此,会先以/etc/hosts来设定IP对应,当然,你也可以将他调换过来,不过,总是/etc/hosts比较简单,所以将他摆在前面比较好。

配置/etc/resolv.conf

1

[Sun@localhost~]$ sudovim /etc/resolv.conf

DNS服务器的IP可以设定多个,因为,照设定的顺序,当第一部DNS114.114.114.114(国内)挂点时,我们客户端可以使用第二部8.8.8.8(国外)来进行查询。

 通常建议至少填写两部DNS服务器的IP,不过在网络正常使用的情况下,永远只有第一部DNS服务器会被使用来查询,其他的设定值只是在第一部出问题时才会被使用。

注意:

1.尽量不要设定超过3部以上的DNSIP在/etc/resolv.conf中,因为如果是你的区网出问题,导致无法联机到DNS服务器,那么你的主机还是会向每部DNS服务器发出联机要求,每次联机都有timeout时间的等待,会导致浪费非常多的时间。

2.如果使用DHCP取得IP,当我们修改过/etc/resolv.conf之后,隔不多久这个档案又会恢复成原本的样子。

因为在使用DHCP时,系统会主动的使用DHCP服务器传来的数据进行系统配置文件的修订。

因此,必须告知系统,不要使用DHCP传来的服务器设定值。

此时,我们要在/etc/sysconfig/network-scripts/ifcfg-eth0文档内增加一行:

PEERDNS=no,然后重新启动网络即可。

DNS服务器的软件、种类与cacheonlyDNS服务器搭建设定

安装搭建DNS服务器所需软件

搭建DNS服务器,就需要柏克莱大学发展出来的BIND(BerkeleyInternetNameDomain)软件。

可通过yum来安装:

1

[Sun@localhost~]$ sudoyum installbindbind-libsbind-utilsbind-chroot

上面比较重要的是那个bind-chroot,所谓的chroot代表的是“changetoroot(根目录)”的意思,root代表的是根目录。

早期的bind默认将程序启动在/var/named当中,但是该程序可以在根目录下的其他目录到处转移,因此若bind的程序有问题时,则该程序会造成整个系统的危害。

为避免这个问题,所以我们将某个目录指定为bind程序的根目录,由于已经是根目录,所以bind便不能离开该目录,所以若该程序被攻击,最多也是在某个特定目录底下被破坏而已。

CentOS6.x默认将bind锁在/var/named/chroot目录中。

我们主程序是由bind,bind-chroot所提供,每部DNS服务器都要有的.(root)这个zone文件也是由bind所提供的。

CentOS4.x,5.x所提供的caching-nameserver软件并不存在CentOS6.x当中了,已经被涵盖于bind软件内。

BIND的默认路径设定与chroot

要架设好BIND基本有两个主要的数据要处理:

∙BIND本身的配置文件:

主要规范主机的设定、zone文档的所在、权限的设定等;

∙正反解数据库档案(zonefile):

记录主机名与IP对应的等。

BIND的配置文件为/etc/named.conf,在这个档案里面可以规范zonefile的完整档名,你的zonefile其实是由/etc/named.conf所指定的,所以zonefile档名可以随便取,只要/etc/named.conf内规范为正确即可。

一般来说,CentOS6.x的默认目录是这样的:

∙/etc/named.conf:

是我们的主配置文件

∙/etc/sysconfig/named:

是否启动chroot及额外的参数,就由这个档案控制;

∙/var/named/:

数据库档案默认放置在这个目录

∙/var/run/named:

named这支程序执行时默认放置pid-file在此目录内。

/etc/sysconfig/named与chroot环境

为了系统的安全性考虑,一般来说目前各主要发行版本都已经自动的将你的bind相关程序给他chroot,chroot所指定的目录记录在/etc/sysconfig/named里面。

1

[Sun@localhost~]$ sudovim /etc/sysconfig/named

这一行,意思是说:

”我要将named给他chroot,并且变更的根目录为/var/named/chroot”,由于根目录已经被变更到/var/named/chroot了,但bind的相关程序是需要/etc,/var/named,/var/run…等目录的,所以实际上咱们bind的相关程序所需要的所有数据会是在:

∙/var/named/chroot/etc/named.conf

∙/var/named/chroot/var/named/zone_file1

∙/var/named/chroot/var/named/zone_file…..

∙/var/named/chroot/var/run/named/…

因为新版本的CentOS6.x已经将chroot所需要使用到的目录,透过mount–bind的功能进行目录链接了。

比如,我们需要的/var/named在启动脚本中透过mount–bind/var/named/var/named/chroot/var/named进行目录绑定了。

所以,在CentOS6.x当中,我们根本无须切换至/var/named/chroot/,使用正规的目录即可。

cacheonlyDNS服务器与forwarding功能

有个只需要.这个zonefile的简单DNS服务器,我们称这种没有自己公开的DNS数据库的服务器为cacheonlyDNSserver。

顾名思义,这个DNSserver只有cache搜寻结果的功能,也就是说,他本身并没有主机名与IP正反解的配置文件,完全是由对外的查询来提供他的数据源。

那如果连 . 都不要,那就得要指定一个上层DNS服务器作为你的forwarding(转递)目标,将原本自己要往 . 查询的任务,丢给上层DNS服务器去烦恼即可。

这样,我们这部具有forwarding功能的DNS服务器,甚至连 . 都不需要了。

因为, . 有记录在上层DNS里。

如同刚刚提到的,cacheonly的DNS并不存在数据库,因此不论是谁来查询数据,这部DNS一律开始从自己的cache以及 .找起,整个流程与DNS解析过程详解这篇文章所描述的相同。

那如果具有forwarding功能呢?

那即使你的DNS具有 . 这个zonefile,这部DNS还是会将查询权请上层DNS查询的,这部DNS服务器当场变成客户端。

查询流程会变这样:

通过上图我们了解到,具有forwarding机制时,查询权会委请上层DNS服务器来处理,所以根本也不需要 . 这个位置所在的zone。

一般来说,如果你的环境需要架设一个cacheonly的DNS服务器时,其实可以直接加上forwarding的机制,让查询权指向上层或者是流量较大的上层DNS服务器即可。

本文永久地址:

本文出自 IT985博客 ,转载时请注明出处及相应链接。

正式搭建cacheonlyDNSserver

不需要设定正反解的zone,只需要 . 的zone支持,所以只要设定一个档案,就是named.conf主配置文件。

另外,cacheonly只要加上个forwarders的设定即可指定forwarding的数据。

1.编辑主要配置文件:

/etc/named.conf

虽然我们具有chroot的环境,不过由于CentOS6.x已经透过启动脚本帮我们进行档案与目录的挂载链接,所以直接修改/etc/named.conf,不用再去/var/named/chroot/etc/named.conf修改。

在这个档案中,主要是定义跟服务器环境有关的设定,以及各个zone的领域及数据库所在文件名。

因为使用了forwarding的机制,所以这个cacheonly DNS服务器并没有zone,所以我们只要设定好跟服务器有关的设定即可。

1

[root@localhost~]#vim/etc/named.conf

 

∙listen-onport53{any;};

监听在这部主机系统上面的哪个网络接口。

预设是监听在localhost,亦即只有本机可以对DNS服务进行查询,那当然是很不合理。

所以这里要将大括号内的数据改写成any。

记得,因为可以监听多个接口,因此any后面得要加上分号才算结束。

另外,这个项目如果忘记写也没有关系,因为默认是对整个主机系统的所有接口进行监听的。

∙directory“/var/named”;

意思是说,如果此档案底下有规范到正、反解的zonefile档名时,该档名预设应该放置在哪个目录底下的意思。

预设放置到/var/named/底下。

由于chroot的关系,最终这些数据库档案会被主动链接到/var/named/chroot/var/named/这个目录。

∙dump-file,statistics-file,memstatistics-file

与named这个服务有关的许多统计信息,如果想要输出成为档案的话,预设的档名就如上所述。

∙allow-query{any;};

这个是针对客户端的设定,到底谁可以对我的DNS服务提出查询请求的意思。

原本的档案内容预设是针对localhost开放而已,我们这里改成对所有的用户开放,防火墙也得放行才行。

不过,默认DNS就是对所有用户放行,所以这个设定值也可以不用写。

∙forwardonly;

这个设定可以让我们的DNS服务器仅进行forward,即使有 . 这个zone file的设定,也不会使用 . 的数据,只会将查询权交给上层DNS服务器而已,是cacheonlyDNS最常见的设定。

∙forwarders{114.114.114.114;};

既然有forwardonly,就要指定哪部上层DNS服务器进行转递,这就是forwarders设定值的重要性。

这样就已经设定完成了最简单的cacheonlyDNSserver了。

2.启动named

1

2

[root@localhost~]#servicenamedstart

[root@localhost~]#chkconfignamedon

 3.测试

在这个DNS服务器里,如果通过dig指令,输出数据的最底下显示SERVER:

127.0.0.1#53(127.0.0.1) 的字样(因为在DNS服务器的本地测试,所以dig指令后加上@127.0.0.1,显示的地址也是127.0.0.1),代表成功。

我们还可以开启另一个客户端机来测试,配置 /etc/resolv.conf文件

nameserver为DNS服务器的地址

然后再次通过dig指令查看

输出数据的最底下显示SERVER:

192.168.1.78#53(192.168.1.78),两次测试都说明我们的DNS服务器搭建成功。

本文永久地址:

本文出自 IT985博客 ,转载时请注明出处及相应链接。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2