您的位置:首页 > 其它

DNS服务器全面解析--转

2014-03-09 22:29 155 查看
引用地址:http://pangge.blog.51cto.com/6013757/1273087

基础认知篇

DNS服务的概述

DNS是Domain Name System 的缩写,即域名系统。DNS服务主要功能是将域名转换为相应的IP地址,提供DNS服务的系统就是DNS服务器。形如它能够把www.baidu.com这样的域名转换为61.135.169.125这样的IP地址;没有DNS,浏览baidu.com这个网站时,就必须用61.135.169.125这么难记的数字来访问。

DNS服务器可以分为3种,即主域名服务器(Master DNS)、辅助域名服务器(Slave DNS)、缓存服务器。

uMaster DNS:本身提供DNS 服务,并且本身含有区域数据文件。

uSlave DNS:和Master一起提供DNS服务,当Master服务器上的配置信息修改的时候,会同步更新到Slave服务器上

u缓存服务器:没有自己的区域数据文件,只是帮助客户端向外部DNS请求查询,然后将查询的结果保存到它的缓存中。

在linux系统下DNS服务的功能是通过bind软件实现的,几乎每个linux发行版都自带了这个DNS服务软件。下面将具体讲述DNS服务的安装、配置和使用。

服务器搭建篇

第一部分:主DNS服务的搭建实现(包含知识点阐述)

环境介绍:CentOS6.4-x86_64

bind版本:bind 9.8.2-0.17.rc1.el6

一.安装bind软件:

CentOS系统下安装bind时,一般都需要同时安装bind-utils、bind-chroot、ypbind、bind-libs和caching-nameserver几个支持bind的软件包。

注:bind-chroot:安装上这个包之后让named进程有限的活动在/var/named/chroot/中防止黑客攻击导致服务器的崩溃。这里就不安装了,因为安装之后除了路径改变之后其他均不变。所以为了更好的熟悉过程就暂时不装了。

上面的几个软件包都可以从系统光盘中查找,可以通过指向yum源进行安装:

[root@localhost ~]#yum install bind

二.配置DNS服务

l 准备工作:

dig(域信息搜索器)命令是个用于询问 DNS 域名服务器的灵活的工具。他执行 DNS 搜索,显示从受请求的域名服务器返回的答复。多数 DNS 管理员利用 dig 作为DNS 问题的故障诊断,因为他灵活性好、易用、输出清楚。虽然通常情况下 dig 使用命令行参数,但他也能够按批处理模式从文档读取搜索请求。不同于早期版本,dig 的 BIND9 实现允许从命令行发出多个查询。除非被告知请求特定域名服务器,dig 将尝试 /etc/resolv.conf 中列举的任何服务器。当未指定任何命令行参数或选项时,dig 将对“.”(根)执行 NS 查询。

dig命令格式:

dig –t 资源记录类型名称@server-ip

dig –x IP @server-ip 反向解析
dig –t axfr zone 验证完全区域传送
dig –t ixfr zone 验证增量区域传输(通常需要指定序列号)
l 配置工作:

主配置文件:named.conf,主要作用是定义区域,定义各区域的全局配置,定义视图,定义日志,注意每个完整语句都要使用分号结尾,否则视为语法错误。

bind安装完毕之后,主程序目录默认为/var/named。

1).named.conf文件详解

2).定义本地区域文件解析

首先更改/etc/named.rfc1912.zones主区域配置文件,在文件尾部新增下面一段内容:

上面这段设置是用zone关键字来定义的一个正向区域,对应的域名为magedu.com。在这里type类型有三种,他们分别为master、slave、hint,含义如下:

master:表示定义的主域名服务器

slave:表示定义的是辅助域名服务器

hint:表示是互联网中的根域名服务器

file用来指定存放DNS记录的文件(一般都是区域名称.zone),allow-update定义是否允许客户主机或服务器自行更新DNS记录,上面指定的这个正向区域不允许更新DNS记录。

3).定义区域数据文件:

[root@localhost ~]# cd /var/named/ #切换到区域文件存放目录

下面我们分析一下我们已经设定好的magedu.com正向区域数据文件的格式和含义:

可以看出,区域数据文件的内容很简单。

第一行是一个TTL设定,定义区域数据文件里面的各项记录的宏,缺少此行不影响使用,但是会出现警告信息。

第二行是一个SOA记录的设定,“@“代表相应的域名,也就是在/etc/named.rfc1912.zones,如在这里表示magedu.com,IN表示后面的数据使用的是Internet标准。SOA表示目前区域授权开始。每一个区域数据文件只能有一个SOA,不能重复,并且必须是所负责的zone中第一个”记录“。在SOA后面分别指定这个区域的授权主机名称和管理者的邮箱。

注:授权主机名和管理员信箱后面都要有一个”.”。由于”@”在区域数据文件中有其他含义,因此管理员邮箱地址中用”.”代替“@“符号。

接下来包含在括弧内的5组数字是作为服务器同步信息而设置的,含义如下:

第一段表示配置文件的修改版本,格式是年月日加上修改的次数,每次修改这个配置文件时都应该修改这个数值,因为当DNS进行信息同步时,会比较这个数值的值。如果这个数值比自身的数值大,就进行更新,否则忽略更新。(这个设置很重要,如果修改区域数据后没有更新该值,那么所做的更改就不会同步到其他DNS服务器)

第二段表示用来设定DNS服务器进行同步的间隔时间又称刷新时间。只通知给本区域解析库文件中定义NS记录的所有主机;

第三段表示同步更新失败之后,在进行重试的间隔时间。

第四段表示同步更新失败之后,多长时间清除对应的记录,又称过期时间

第五段表示否定的TTL值

接下来是对域名解析的具体设置,第1列表示不同的主机域名,但是省略了后面的域信息(若为空白表示与上面域名相同)。例如:”www”其实是www.magedu.com等。“IN“后面的指令含义说明如下:

NS:用来定义这个主机是个域名服务器,是个区域名称

MX:定义邮件服务器,这里需要定义优先级的哦!这里定义的交换级别为10

A:定义了一个A记录,即域名到IP的记录

CNAME:定义了域名的别名

[root@localhostnamed]# cp magedu.com.zone 172.16.18.zone #定义反向区域文件

分析:可以看出,反向区域文件基本结构和正向区域数据文件基本完全相同,只不过这里多出了一个PTR选项。PTR用来定义一个反向记录,也就是通过IP可以查到对应的域名信息。最后四行的第一列表示是主机的IP地址,只不过省略了网络地址部分,系统会自动补全,如20对应的是172.16.18.20.

至此,DNS文件配置部分已经基本配置完成,从过程可以看出DNS配置文件对格式的要求非常严格。因此,在以后的配置中要格外的小心。

4).定义区域文件的权限关系:

在这里我们通过编辑创建的magedu.com.zone文件,然后将该文件的权限属组更改成系统默认设定权限,这个授权很重要,要不然DNS无法正常工作。

这里的named属组属主都是创建DNS时系统默认创建的。

5).检查区域文件语法错误与否:

三.测试DNS配置

在对DNS文件的所有配置完成后,需要重启服务,以使配置生效。由于我们这里还未启动过服务所以执行如下命令启动DNS服务:

建议:若之前启动过服务,配置完成之后想重新启动新数据,建议不要使用restart重启,因为这样可能导致网络服务断掉,所以要使用reload重新载入信息。

下面我们使用dig命令对DNS正向区域解析情况进行测试。

下面我们使用dig命令对DNS反向区域解析情况进行测试

从上面的输出信息可以看出,DNS都可以正确解析,说明我们的配置没有问题,DNS服务器已经正常工作了。

小拓展:如何不用指向本机就能做本地解析??

#直接将DNS指向本机即可

第二部分:创建从DNS服务器(主从同步实现)

说明:如果有多台DNS服务器,必须为每个DNS服务器建立NS记录,否则主DNS将无法向其发送通知.

从服务器IP地址:172.16.18.1

u正向区域从服务器创建过程:

1、安装Bind软件(同上,不再演示)

2、设置配置文件

3、编辑区域配置文件

4、检查配置文件语法错误与否

5、切换之主服务器,给此服务器添加一个NS记录

6、检查主服务器上解析文件语法错误与否:

7、将主服务器上的数据同步一下

8、检测NS记录是否同步完成

9、切换至从服务器,启动服务

10、查看数据文件是否已同步

11、查看数据解析情况

u反向区域从服务器创建:

说明:创建过程与正向基本相同。

1)编辑区域配置文件

保存配置过程,之后不要立即重启哦!!

下面的过程就不重复进行了,相信你的能力和我一样完全可以胜任这一切!!

总结:当主从DNS服务器联通之后,改动主服务器上的数据后,重新载入配置文件会将数据立即同步到从服务器上(这里笔者也不再演示了)。谨记:改动解析文件后一定将配置文件版本号更改一下!!

拓展:关于DNS安全的防护

当我们创建完成之后任何一个外界服务器都可以到我们的主服务器上进行区域传送这样会导致我们的网络结构丢失,因此我们不能让外部服务器同步,只允许从服务器同步;我们该怎么做到呢??

使用allow-transfer {IP;} 只允许谁(IP)传送。任何人不允许传送使用{none;}

例如:定义只允许172.16.18.1进行传送

第三部分:DNS子域授权(优化部分)

DNS本来的数据结构就是一个层级结构,犹如一个倒立的树状结构,由一点出发,一层层的向下分成了多个分支,而这些分支就是其上级域的子域,其上级域就是相对的父域,子域是从父域中划出来的一个域,子域中的DNS服务器负责这个子域中的地址解析,从而减轻了父域中DNS服务器的压力,这不仅提高了解析服务的效率,同样也提高了解析服务的稳定性,此部分我们就是学习如何给一个域划分出一个子域,并让这个子域中的DNS服务器能够进行子域中的域名解析服务,这个过程也叫做子域授权。

正向子域授权实现方式:

主父服务器:172.16.18.20

从服务器:172.16.18.1

子域服务器:172.16.251.144

首先设置子域的地址名称

然后将数据再同步一下

最后建立子域服务器:

1、安装bind并启动服务

2、编辑主配置文件

3、更改区域文件

4、定义区域数据文件

5、更改区域数据文件的权限属组

6、检查语法错误与否

7、重新启动服务,同步数据

8、测试解析(本机解析)

9、切换至父服务器测试解析

10、子域解析父服务器

11、利用转发实现子域解析父域

12、利用子域解析网络其他主机

注:这里如果解析www.magedu.com会通过172.16.18.20进行解析,说明在/etc/named.rfc1912.zones中定义的内容优先级别高。

反向子域授权方式

反向区域子域授权方式和正向过程基本类似这里也不过多阐述,如有疑问请留言,笔者将以最大的努力帮看客们排忧解难。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: