DNS服务全攻略LINUX 423.docx
《DNS服务全攻略LINUX 423.docx》由会员分享,可在线阅读,更多相关《DNS服务全攻略LINUX 423.docx(66页珍藏版)》请在冰豆网上搜索。
DNS服务全攻略LINUX423
1DNS原理
1.1DNS简介
DNS(DomainNameSystem)域名系统,在TCP/IP网络中有非常重要的地位,能够提供域名与IP地址的解析服务。
1.2域名空间
DNS是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树,这个逻辑的树形结构称为域名空间,由于DNS划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息。
注:
DNS域名空间中,树的最大深度不得超过127层,树中每个节点最长可以存储63个字符。
1)域和域名
DNS树的每个节点代表一个域,通过这些节点,对整个域名空间进行划分,成为一个层次结构。
域名空间的每个域的名字,通过域名进行表示。
域名通常由一个完全正式域名(FQDN)标识。
FQDN能准确表示出其相对于DNS域树根的位置,也就是节点到DNS树根的完整表述方式,从节点到树根采用反向书写,并将每个节点用“.”分隔,对于DNS域google来说,其完全正式域名(FQDN)为。
一个DNS域可以包括主机和其他域(子域),每个机构都拥有名称空间的某一部分的授权,负责该部分名称空间的管理和划分,并用它来命名DNS域和计算机。
例如,google为com域的子域,其表示方法为,而www为google域中的Web,可以使用表示。
注意:
通常,FQDN有严格的命名限制,长度不能超过256字节,只允许使用字符a-z,0-9,A-Z和减号(-)。
点号(.)只允许在域名标志之间(例如“”)或者FQDN的结尾使用。
域名不区分大小。
2.Internet域名空间
Internet域名空间结构为一棵倒置的树,并进行层次划分。
由树根到树枝,也就是从DNS根到下面的节点,按照不同的层次,进行了统一的命名。
域名空间最顶层,DNS根称为根域(root)。
根域的下一层为顶级域,又称为一级域。
其下层为二级域,再下层为二级域的子域,按照需要进行规划,可以为多级。
所以对域名空间整体进行划分,由最顶层到下层,可以分成:
根域、顶级域、二级域、子域。
并且域中能够包含主机和子域。
主机www的FQDN从最下层到最顶层根域进行反写,表示为。
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.6DNS查询原理及流程
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发送解析请求。
<2>当本地的域名服务器收到请求后,就先查询本地的缓存。
如果有查询的DNS信息记录,则直接返回查询的结果。
如果没有该记录,本地域名服务器就把解析请求发给根域名服务器。
<3>根域名服务器收到请求后,根据完全正式域名FQDN,判断该域名属于com域,查询所有的com域DNS服务器的信息,并返回给本地域名服务器。
<4>本地域名服务器219.141.140.10收到回应后,先保存返回的结果,再选择一台com域的域名服务器,向其提交解析域名的请求。
<5>com域名服务器接收到该查询请求后,判断该域名属于域,通过查询本地的记录,列出管理google域的域名服务器信息,然后将查询结果返回给本地的域名服务器219.141.140.10。
<6>本地域名服务器219.141.140.10收到回应后,先缓存返回的结果,再向域的服务器发出请求解析域名的数据包。
<7>域名服务器收到请求后,查询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资源记录
每个区在区的开始处都包含了一个起始授权记录(StartofAuthorityRecord),简称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.1BIND简介
BIND全称为BerkeleyInternetNameDomain(伯克利因特网名称域系统)。
BIND主要有三个版本:
BIND4、BIND8、BIND9。
BIND8融合了许多提高效率、稳定性和安全性的技术,而BIND9增加了一些超前的理念:
IPv6支持、公开密钥加密、多处理器支持、线程安全操作、增量区传送等等。
2.2DNS所需软件
bind-9.3.3-10.el5.i386.rpm:
该包为DNS服务的主程序包。
服务器端必须安装该软件包,后面的数字为版本号。
bind-utils-9.3.3-10.el5.i386.rpm:
该包为客户端工具,默认安装,用于搜索域名指令。
2.3DNS的安装
首先我们来看下RHEL5预装了哪些包哈,rpm-qa|grepbind
下面我们使用rpm命令安装bind主程序包
查看下效果
3DNS常规服务器配置
一个比较简单的DNS服务器设置流程主要分为以下三步哈:
1)建立主配置文件named.conf,该文件的最主要目的是设置DNS服务器能够管理哪些区域(Zone)以及这些区域所对应的区域文件名和存放路径。
2)建立区域文件,按照named.conf文件中指定的路径建立区域文件,该文件主要记录该区域内的资源记录。
例如:
对应的IP地址为211.103.156.229。
3)重新加载配置文件或重新启动named服务使用配置生效。
下面我们来看一个具体实例哈~~~
1)客户端需要获得这台主机所对应的IP地址,将查询请求发送给DNS服务器。
2)服务器接收到请求后,查询主配置文件named.conf,检查是否能够管理区域。
而named.conf中记录着能够解析区域,并提供区域文件所在路径及文件名。
3)服务器则根据named.conf文件中提供的路径和文件名找到区域所对应的配置文件,并从中找到主机所对应的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:
一个forwardzone是每个域的配置转发的主要部分。
一个zone语句中的typeforward可以包括一个forward和/或forwarders子句,它会在区域名称给定的域中查询。
如果没有forwarders语句或者forwarders是空表,那么这个域就不会有转发,消除了options语句中有关转发的配置。
Hint:
根域名服务器的初始化组指定使用线索区域hintzone,当服务器启动时,它使用根线索来查找根域名服务器,并找到最近的根域名服务器列表。
如果没有指定classIN的线索区域,服务器使用编译时默认的根服务器线索。
不是IN的类别没有内置的默认线索服务器。
Delegation-only:
用于强制区域的delegation.ly状态。
3.2配置正向解析区域
授权DNS服务器管理区域,并把该区域的区域文件命名为
1)建立主配置文件named.conf
vim/etc/named.conf
directory 路径名:
用于定义服务器的工作目录,该目录存放区域数据文件。
配置文件中所有相对路径的路径名都基于此目录。
如果没有指定,默认的是BIND启动的目录。
2)建立区域文件
vim/var/named/
3.3配置反向解析区域
1)添加反向解析区域
vim/etc/named.conf
2)建立反向区域文件
vim/var/named/named.0.168.192
3)测试
3.4区域文件与资源记录
区域文件实际上就是DNS的数据库,而资源记录就是数据库中的数据。
这些数据其中包括多种记录类型,比如SOA、NS、A记录等等,这些记录统称为资源记录。
如果没有资源记录那么DNS服务器将无法为客户端提供域名解析服务。
3.5SOA资源记录
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.6NS记录
用于指定一个区域的权威DNS服务器,通过在NS资源记录中列出服务器的名字,其他主机就认为它是该区域的权威服务器。
这意味着在NS资源记录中指定的任何服务器都被其他服务器当作权威的来源并且能应答区域内所含名称的查询。
NS资源记录语法格式:
区域名INNS完整主机名(FQDN)
3.7A资源记录
A资源记录是使用最为频繁的一种,通常用于将指定的主机名称解析为它们对应的IP地址。
A资源记录语法格式:
完整主机名(FQDN)INAIP地址
3.8DNS应用案例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表示管理员的邮件地址,本应该表示为“root@tech.org.”,但是这是不能使用“@”符号,因为“@”在这里表示区域哈~~所以需要用“.”来代替它。
表示“root.tech.org.”,可以简写成“root”。
(4)设置NS记录。
(5)设置A记录。
5)测试
[root@rhel5~]#servicenamedrestart
停止named:
[确定]
启动named:
[确定]
[root@rhel5~]#nslookupdns.tech.org
Server:
192.168.0.188
Address:
192.168.0.188#53
Name:
dns.tech.org
Address:
192.168.0.188
[root@rhel5~]#nslookupclient1.tech.org
Server:
192.168.0.188
Address:
192.168.0.188#53
Name:
client1.tech.org
Address:
192.168.0.101