[RHEL5企业级Linux服务攻略]--第4季 DNS服务全攻略
[RHEL5企业级Linux 服务攻略]--第4季 DNS服务全攻略1 DNS原理1.1 DNS简介DNS (Domain Name System)域名系统,在TCP/IP网络中有非常重要的地位,能够
[RHEL5企业级Linux 服务攻略]--第4季 DNS服务全攻略
1 DNS原理
1.1 DNS简介
DNS (Domain Name System)域名系统,在TCP/IP网络中有非常重要的地位,能够提供域名与
IP 地址的解析服务。
1.2 域名空间
DNS 是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS 划分了域名空间,所以各机构可以使用自己的域名空间创建DNS
信息。
注:DNS 域名空间中,树的最大深度不得超过127层,树中每个节点最长可以存储63个字符。
1)域和域名
DNS 树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。域名空间的每个域的名字,通过域名进行表示。域名通常由一个完全正式域名(FQDN )标识。FQDN 能准确表示出其相对于DNS 域树根的位置,也就是节点到DNS 树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS 域google 来说,其完全正式域名(FQDN )
为google.com 。
一个DNS 域可以包括主机和其他域(子域),每个机构都拥有名称空间的某一部分的授权,负责该部分名称空间的管理和划分,并用它来命名DNS 域和计算机。例如,google 为com 域的子域,其表示方法为google.com ,而www 为google 域中的Web ,可以使用www.google.com 表示。
注意:通常,FQDN 有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z 和减号(-)。点号(. )只允许在域名标志之间(例如“google.com”)或者FQDN 的结尾使用。
域名不区分大小。
2.Internet 域名空间
Internet 域名空间结构为一棵倒置的树,并进行层次划分。由树根到树枝,也就是从DNS 根到下面的节点,按照不同的层次,进行了统一的命名。域名空间最顶层,DNS 根称为根域(root )。根域的下一层为顶级域,又称为一级域。其下层为二级域,再下层为二级域的子域,按照需要进行规划,可以为多级。所以对域名空间整体进行划分,由最顶层到下层,可以分成:根域、顶级域、二级域、子域。并且域中能够包含主机和子域。主机www 的FQDN 从最下层到最顶层根域进
行反写,表示为www.europe.example.com 。
Internet 域名空间的最顶层是根域(root ),其记录着Internet 的重要DNS 信息,由Internet
,域名注册授权机构管理,该机构把域名空间各部分的管理责任分配给连接到Internet 的各个组
织。
DNS 根域下面是顶级域,也由Internet 域名注册授权机构管理。共有3种类型的顶级域。 组织域:采用3个字符的代号,表示DNS 域中所包含的组织的主要功能或活动。比如com 为商业机构组织,edu 为教育机构组织,gov 为政府机构组织,mil 为军事机构组织,net 为网络机构组
织,org 为非营利机构组织,int 为国际机构组织。
地址域:采用两个字符的国家或地区代号。如cn 为中国,kr 为韩国,us 为美国。
反向域:这是个特殊域,名字为in-addr.arpa ,用于将IP 地址映射到名字(反向查询)。 对于顶级域的下级域,Internet 域名注册授权机构授权给Internet 的各种组织。当一个组织获得了对域名空间某一部分的授权后,该组织就负责命名所分配的域及其子域,包括域中的计算机
和其他设备,并管理分配的域中主机名与IP 地址的映射信息。
1.3 区(Zone)
区是DNS 名称空间的一个连续部分,其包含了一组存储在DNS 服务器上的资源记录。每个区都位于一个特殊的域节点,但区并不是域。DNS 域是名称空间的一个分支,而区一般是存储在文件中的DNS 名称空间的某一部分,可以包括多个域。一个域可以再分成几部分,每个部分或区可以由一台DNS 服务器控制。使用区的概念,DNS 服务器回答关于自己区中主机的查询,它是哪个区的
授权服务器。
1.4 主域名服务器与辅助域名服务器
DNS 服务器可以不存储任何区的信息或者存储一个或多个区的信息。当DNS 服务器接收到DNS 查询时,它检索它的本地区以定位所请求的信息。如果因为服务器不是所DNS 域的授权服务器,从而没有所请求域的数据而使用检索失败,服务器就检查它的高速缓存并与其他DNS 服务器通信以
解析该请求,或者把客户机提交给另一个可能知道答案的DNS 服务器。
DNS 服务器可以管理主区和辅助区。用户可以把服务器配置成管理多个不同的主区和辅助区,以尽量接近实际情况,这意味着服务器可能管理一个区的主拷贝和另一个区的辅助拷贝,或只管理一个区的主拷贝和辅助拷贝。对每个区,管理其主区的计算机是该区的主服务器,管理其辅助区
的服务器是该区的辅助服务器。
主区是本地更新的,在区数据改变时,例如把该区的某个部分授权给另一台DNS 服务器,或在区中添加资源记录,这些改动必须在该区的主DNS 服务器上进行,以便新信息能加进本地区。 相反,辅助区是从其他服务器复制的。在辅助服务器上定义区时,区配置有服务器的IP ,辅助区就是从该地址复制信息。复制区文件的服务器可以是该区的主服务器或辅助服务器,有时称为
辅助区的主控服务器。
当区的辅助服务器启动时,它与该区的主控服务器进行连接并启动一次区传输,区辅助服务器定
期与区主控服务器通信,查看区数据是否改变。如果改变了,它就启动一次区传输。
每个区必须有主服务器,另外每个区至少要有一台辅助服务器,否则如果该区的主服务器崩溃了,
就无法解析该区的名称。
辅助服务器的优点:
,1)容错能力
配置辅助服务器后,在该区主服务器崩溃的情况下,客户机仍能解析该区的名称。一般把区的主服务器和区的辅助服务器安装在不同子网上,这样如果到一个子网的连接中断,DNS 客户机还能
直接查询另一个子网上的名称服务器。
2)减少广域链路的通信量
如果某个区在远程有大量客户机,用户就可以在远程添加该区的辅助服务器,并把远程的客户机配置成先查询这些服务器,这样就能防止远程客户机通过慢速链路通信来进行DNS 查询。
3)减轻主服务器的负载
辅助服务器能回答该区的查询,从而减少该区主服务器必须回答的查询数。
1.6 DNS查询原理及流程
1)DNS 相关概念
(1)DNS 服务器
运行DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法
均失败,则回应客户机没有所请求的信息或请求的信息不存在。
(2)DNS 缓存
DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。
(3)资源记录
DNS 服务器的信息数据,按照分类进行存储,能够解析客户端的DNS 请求。
(4)区文件
包含区资源记录的文件,选择DNS 服务器为授权服务器,管理该区域。在大部分DNS 实现中,用
文本文件实现区。
2)递归查询和迭代查询
(1)递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询
问其他服务器,并将返回的查询结果提交给客户机。
(2)迭代查询
DNS 服务器另外一种查询方式为迭代查询,DNS 服务器会向客户机提供其他能够解析查询请求的DNS 服务器地址,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果
为止。
3)DNS 查询流程
,(1)DNS 域名解析工作原理
<1> 客户机提交域名解析请求,并将该请求发送给本地的域名服务器。
<2> 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS 信息记录,则直
接返回查询的结果。如果没有该记录,本地域名服务器就把请求发给根域名服务器。
<3> 根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。
<4> 本地服务器再向返回的域名服务器发送请求。
<5> 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结
果,否则通知客户机下级的域名服务器的地址。
<6> 本地域名服务器将查询请求发送给返回的DNS 服务器。
<7> 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,查询过程
将重复<6>、<7>步骤,直到返回解析信息或解析失败的回应)。
<8> 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。
(2)域名解析实例
假设客户机使用电信ADSL 接入Internet ,电信为其分配的DNS 服务器地址为219.141.140.10,
域名解析过程如下哈~
<1> 客户机向本地的域名服务器219.141.140.10发送解析www.google.com 请求。
<2> 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS 信息记录,则直接返回查询的结果。如果没有该记录,本地域名服务器就把解析www.google.com 请求发给根域
名服务器。
<3> 根域名服务器收到请求后,根据完全正式域名FQDN ,判断该域名属于com 域,查询所有的
com 域DNS 服务器的信息,并返回给本地域名服务器。
<4> 本地域名服务器219.141.140.10收到回应后,先保存返回的结果,再选择一台com 域的域
名服务器,向其提交解析域名www.google.com 的请求。
<5> com域名服务器接收到该查询请求后,判断该域名属于google.com 域,通过查询本地的记
录,列出管理google 域的域名服务器信息,然后将查询结果返回给本地的域名服务器
219.141.140.10。
<6> 本地域名服务器219.141.140.10收到回应后,先缓存返回的结果,再向google.com 域的服
务器发出请求解析域名www.google.com 的数据包。
<7> 域名服务器google.com 收到请求后,查询DNS 记录中的www 主机的信息,并将结果返回给
本地服务器219.141.140.10。
<8> 本地域名服务器将返回的查询结果保存到缓存,并且将结果返回给客户机。
1.7 正向解析与反向解析
,1)正向解析
正向解析是指域名到IP 地址的解析过程。
2)反向解析
反向解析是从IP 地址到域名的解析过程。反向解析的作用为服务器的身份验证。
1.8 资源记录
为了将名字解析为IP 地址,服务器查询它们的区(又叫DNS 数据库文件或简单数据库文件)。区中包含组成相关DNS 域资源信息的资源记录(RR )。例如,某些资源记录把友好名字映射成
IP 地址,另一些则把IP 地址映射到友好名字。
某些资源记录不仅包括DNS 域中服务器的信息,还可以用于定义域,即指定每台服务器授权了哪
些域,这些资源记录就是SOA 和NS 资源记录。
1)SOA 资源记录
每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record ), 简称SOA 记录。SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。
2)NS 资源记录
名称服务器(NS )资源记录表示该区的授权服务器,它们表示SOA 资源记录中指定的该区的主和
辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS 记录。
3)A 资源记录
地址(A )资源记录把FQDN 映射到IP 地址,因而解析器能查询FQDN 对应的IP 地址。
4)PTR 资源记录
相对于A 资源记录,指针(PTR )记录把IP 地址映射到FQDN 。
5)CNAME 资源记录
规范名字(CNAME )资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的
实现细节,使连接的客户机无法知道。
6)MX 资源记录
邮件交换(MX )资源记录为DNS 域名指定邮件交换服务器。邮件交换服务器是为DNS 域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP 把邮件发送给离最终目的地最近的
邮件交换服务器,或使邮件经过一定时间的排队。
DNS 理论和概念了解得差不多了,下面我们开始DNS 安装和配置哈~~~
2 安装DNS 服务
2.1 BIND简介
BIND 全称为Berkeley Internet Name Domain(伯克利因特网名称域系统) 。BIND 主要有三个版
本:BIND4、BIND8、BIND9。
BIND8融合了许多提高效率、稳定性和安全性的技术,而BIND9增加了一些超前的理念:IPv6
支持、公开密钥加密、多处理器支持、线程安全操作、增量区传送等等。
2.2 DNS所需软件
,bind-9.3.3-10.el5.i386.rpm :该包为DNS 服务的主程序包。服务器端必须安装该软件包,后面
的数字为版本号。
bind-utils-9.3.3-10.el5.i386.rpm :该包为客户端工具,默认安装,用于搜索域名指令。
2.3 DNS的安装
首先我们来看下RHEL5预装了哪些包哈,rpm -qa | grep bind
下面我们使用rpm 命令安装bind 主程序包
查看下效果
3 DNS常规服务器配置
一个比较简单的DNS 服务器设置流程主要分为以下三步哈:
1)建立主配置文件named.conf ,该文件的最主要目的是设置DNS 服务器能够管理哪些区域(Zone )
以及这些区域所对应的区域文件名和存放路径。
2)建立区域文件,按照named.conf 文件中指定的路径建立区域文件,该文件主要记录该区域内
的资源记录。例如:www.51cto.com 对应的IP 地址为211.103.156.229。
3)重新加载配置文件或重新启动named 服务使用配置生效。
下面我们来看一个具体实例哈~~~
1)客户端需要获得www.michael.com 这台主机所对应的IP 地址,将查询请求发送给DNS 服务器。
2)服务器接收到请求后,查询主配置文件named.conf ,检查是否能够管理michael.com 区域。而named.conf 中记录着能够解析michael.com 区域,并提供michael.com 区域文件所在路径及
文件名。
3)服务器则根据named.conf 文件中提供的路径和文件名找到michael.com 区域所对应的配置文
件,并从中找到www.michael.com 主机所对应的IP 地址。
4)将查询结果反馈给客户端,完成整个查询过程。
3.1 主配置文件named.conf
named.conf 是BIND 的核心配置文件,它包含了BIND 的基本配置,但其并不包括区域数据。named.conf 文件定义了DNS 服务器的工作目录所在位置,所有的区域数据文件都存放在该目录中,该文件还定义了DNS 服务器能够管理哪些区域,如果DNS 服务器可以管理某个区域,它将完
成该区域内的域名解析工作。
如果没有安装caching-nameserver-9.3.3-10.el5.i386.rpm 包,则我们需要手动建立
,named.conf 文件,为了便于管理,通常把该文件建立在/etc目录下哈~
当手动建立好named.conf 文件后,此文件是空白滴,和其他配置文件差不多,named.conf 配置
文件分为整体和局部两个部分。
区域名为服务器要管理区域的名称,如果添加了一个区域,并且该区域存在相应资源记录,那么
DNS 服务器就可以解析该区域的DNS 信息。
type 字段指定区域的类型,对于区域的管理至关重要,一共分为六种:
Master :主DNS 服务器:拥有区域数据文件,并对此区域提供管理数据
Slave :辅助DNS 服务器:拥有主DNS 服务器的区域数据文件的副本,辅助DNS 服务器会从主DNS
服务器同步所有区域数据。
Stub :stub 区域和slave 类似,但其只复制主DNS 服务器上的NS 记录而不像辅助DNS 服务器会
复制所有区域数据。
Forward :一个forward zone 是每个域的配置转发的主要部分。一个zone 语句中的type forward 可以包括一个forward 和/或forwarders 子句,它会在区域名称给定的域中查询。如果没有forwarders 语句或者forwarders 是空表,那么这个域就不会有转发,消除了options 语句中有
关转发的配置。
Hint :根域名服务器的初始化组指定使用线索区域hint zone ,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。如果没有指定class IN的线索区域,
服务器使用编译时默认的根服务器线索。不是IN 的类别没有内置的默认线索服务器。
Delegation-only :用于强制区域的delegation .ly状态。
3.2 配置正向解析区域
授权DNS 服务器管理michael.com 区域,并把该区域的区域文件命名为michael.com
1)建立主配置文件named.conf
vim /etc/named.conf
directory 路径名:用于定义服务器的工作目录,该目录存放区域数据文件。配置文件中所有
相对路径的路径名都基于此目录。如果没有指定,默认的是BIND 启动的目录。
2)建立michael.com 区域文件
vim /var/named/michael.com
3.3 配置反向解析区域
,1) 添加反向解析区域
vim /etc/named.conf
2)建立反向区域文件
vim /var/named/named.0.168.192
3)测试
3.4 区域文件与资源记录
区域文件实际上就是DNS 的数据库,而资源记录就是数据库中的数据。这些数据其中包括多种记录类型,比如SOA 、NS 、A 记录等等,这些记录统称为资源记录。如果没有资源记录那么DNS 服
务器将无法为客户端提供域名解析服务。
3.5 SOA资源记录
SOA 资源记录为起始授权机构记录,是最重要、最常用的一种资源记录。区域以服务器授权机构的概念为基础。当DNS 服务器配置成加载区域时,其使用SOA 和NS 两种资源记录来确定区域的
授权属性。
SOA 和NS 资源记录在区域配置中具有特殊作用,它们是任何区域都需要的记录并且一般是文件
中列出的第一个资源记录。
起始授权机构SOA 资源记录总是处于任何标准区域中的第一位。它表示最初创建它的DNS 服务器或现在是该区域的主服务器的DNS 服务器。它还用于存储会影响区域更新或过期的其他属性,比如版本信息和计时。这些属性会影响在该区域的域名服务器之间进行同步数据的频繁程度。
SOA 资源记录语法格式:
区域名(当前) 记录类型 SOA 主域名服务器(FQDN ) 管理员邮件地址 (序列号 刷新间隔 重
试间隔 过期间隔 TTL)
SOA 资源记录字段:
主域名服务器:区域的主DNS 服务器的FQDN
管理员:管理区域的负责人的电子邮件。在该电子邮件名称中使用英文句号“.”代替at 符号
“@”。
序列号:该区域文件的修订版本号。每次区域中的资源记录改变时,这个数字便会增加,每次区域改变时增加这个值非常重要,它使部分区域改动或完全修改的区域都可以在后续传输中复制到
其他辅助DNS 服务器上。
,刷新间隔:以秒计算的时间,辅助DNS 服务器请求与源服务器同步的等待时间。当刷新间隔到期时,辅助DNS 服务器请求源服务器的SOA 记录副本,然后辅助DNS 服务器将源服务器的SOA 记录的序列号与其本地SOA 记录的序列号相比较,如果二者不同,则辅助DNS 服务器从主DNS 服务器
请求区域传输。这个域的默认时间是900秒(15分钟)。
重试间隔:以秒计算时间,辅助DNS 服务器在请求区域传输失败后,等待多长时间再次请求区域
传输时间。通常,这个时间短于刷新间隔。默认值为600秒(10分钟)。
过期间隔:以秒计算时间,当这个时间到期时,如果辅助DNS 服务器还无法与源服务器进行区域传输,则辅助DNS 服务器会把它的本地数据当作不可靠数据。默认值为86400秒(24小时)。 最小(默认)TTL :区域的默认生存时间(TTL )和缓存否定应答名称查询的最大间隔。默认值为
3600秒(1小时)。
3.6 NS记录
用于指定一个区域的权威DNS 服务器,通过在NS 资源记录中列出服务器的名字,其他主机就认为它是该区域的权威服务器。这意味着在NS 资源记录中指定的任何服务器都被其他服务器当作
权威的来源并且能应答区域内所含名称的查询。
NS 资源记录语法格式:
区域名 IN NS 完整主机名(FQDN )
3.7 A资源记录
A 资源记录是使用最为频繁的一种,通常用于将指定的主机名称解析为它们对应的IP 地址。
A 资源记录语法格式:
完整主机名(FQDN ) IN A IP地址
3.8 DNS应用案例I
技术部所在域为“tech.org”,部门内有三台主机,主机名分别是
client1.tech.org,client2.tech.org,client3.tech.org 。现要求DNS 服务器dns.tech.org 可
以解析3台主机名和IP 地址的对应关系。
分析:此案例是DNS 搭建的最基本配置。在搭建之前整理好设定流程。首先在服务器上建立主配置文件,设置设置可以解析“tech.org”区域。然后建立“tech.org”的区域文件,并在区域文
件中设置SOA 、NS 以及A 资源记录。最后配置客户端。
1)建立主配置文件named.conf
touch /etc/named.conf
2)设置named.conf 文件并添加“tech.org”区域
,3)建立“tech.org”的区域文件
touch /var/named/tech.org
4)配置“tech.org”区域文件并添加资源记录
(1)定义@变量的值,通常定义为本区域。
(2)定义资源记录在缓存的存放时间
(3)设置SOA 记录,注意root 表示管理员的邮件地址,本应该表示为
[email=“root@tech.org]“root@tech.org[/email].”,但是这是不能使用“@”符号,因为“@”在这里表示区域哈~~所以需要用“.”来代替它。表示“root.tech.org.”,可以简写成
“root”。
(4)设置NS 记录。
(5)设置A 记录。