DNS(Domain Name System)域名系统,在TCP/IP网络中有非常重要的地位,能够提供域名与IP地址的解析服务。
DNS域名解析工作原理
<1>
客户机提交域名解析请求,并将该请求发送给本地的域名服务器。
<2>
当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS信息记录,则直接返回查询的结果。如果没有该记录,本地域名服务器就把请求发给根域名服务器。
<3>
根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。
<4> 本地服务器再向返回的域名服务器发送请求。
<5>
接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结果,否则通知客户机下级的域名服务器的地址。
<6> 本地域名服务器将查询请求发送给返回的DNS服务器。
<7>
域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS信息,查询过程将重复<6>、<7>步骤,直到返回解析信息或解析失败的回应)。
<8>
本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。
正向解析与反向解析
1)正向解析
正向解析是指域名到IP地址的解析过程。
2)反向解析
反向解析是从IP地址到域名的解析过程。反向解析的作用为服务器的身份验证。
DNS查询类型
1.递归查询: 简单的理解就是以最终结果查询,就是返回最终的结果给客户机,而客户机在此阶段是处于等待的状态!(就好比,你在家里地位最高,你都是衣来伸手饭来张口的,最什么事情就只要一句话不用自己亲自动手)
2.迭代查询:简单的理解就是以最佳的结果查询,意思就是如果DNS服务器能解析就直接以最终结果返回给客户机,如果无法解析则就返回上一级DNS服务器
的IP给客户机,由客户机完成查询工作直到得到最终结果!(举个例子就是什么事情你去问别人,别人只是告诉你怎么做,你知道后要自己亲自去做)
资源记录
为了将名字解析为IP地址,服务器查询它们的区(又叫DNS数据库文件或简单数据库文件)。区中包含组成相关DNS域资源信息的资源记录(RR)。例如,某些资源记录把友好名字映射成IP地址,另一些则把IP地址映射到友好名字。
某些资源记录不仅包括DNS域中服务器的信息,还可以用于定义域,即指定每台服务器授权了哪些域,这些资源记录就是SOA和NS资源记录。
1)SOA资源记录
每个区在区的开始处都包含了一个起始授权记录(Start of Authority
Record),简称SOA记录。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小时)
2)NS资源记录
名称服务器(NS)资源记录表示该区的授权服务器,它们表示SOA资源记录中指定的该区的主和辅助服务器,也表示了任何授权区的服务器。每个区在区根处至少包含一个NS记录。
用于指定一个区域的权威DNS服务器,通过在NS资源记录中列出服务器的名字,其他主机就认为它是该区域的权威服务器。这意味着在NS资源记录中指定的任何服务器都被其他服务器当作权威的来源并且能应答区域内所含名称的查询。
NS资源记录语法格式:
区域名 IN NS 完整主机名(FQDN)
3)A资源记录
地址(A)资源记录把FQDN映射到IP地址,因而解析器能查询FQDN对应的IP地址。
A资源记录语法格式:
完整主机名(FQDN) IN A IP地址
4)PTR资源记录
相对于A资源记录,该记录与A记录相反,用于查询IP地址与主机名的对应关系。
PTR资源记录语法格式:
IP地址
5)CNAME资源记录
规范名字(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使连接的客户机无法知道。别名(CNAME)资源记录用于为某个主机指定一个别名。例如管理员告知公司的首页为,而实际在访问时访问的是www1.abc.com主机。该资源记录经常用于在同一区域的A资源记录中的主机需要重命名时或者为多台主机(例如一组WWW服务器)提供相同的别名。
CNAME资源记录语法格式:
别名 IN CNAME 主机名
6)MX资源记录
邮件交换(MX)资源记录为
DNS域名指定邮件交换服务器。邮件交换服务器是为DNS域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发
邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。
MX资源记录语法格式:
区域名
type字段指定区域的类型
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状态。
应用案例
【实例1】技术部所在域为“tech.org”,部门内有三台主机,主机 名分别是client1.tech.org,client2.tech.org,client3.tech.org。现要求DNS服务器 dns.tech.org可以解析3台主机名和IP地址的对应关系。
当前的目录为/var/named/chroot/etc
vim named.conf
options {
};
zone "." {
};
zone "tech.org" {
};
zone "31.168.192.in-addr.arpa" {
};
当前的目录为/var/named/chroot/var/named
vim tech.org.zone
$TTL 86400
@
@
dns
client1
client2
client3
当前的目录为/var/named/chroot/var/named
vim 192.168.31.zone
@ IN SOA
)
@
134 IN PTR dns.tech.org.
135 IN PTR cilent1.tech.org.
136 IN PTR client2.tech.org.
137 IN PTR client3.tech.org.
随后就是自行测试了!
【实例2】企业采用多个区域管理各部门网络,技术部属于“tech.boobooke”域,市场部属于
“mart.boobooke”域,其他人员属于“freedom.boobooke”域。技术部门共有100人,采用的IP地址为
192.168.31.1-192.168.31.100。市场部门共有100人,采用IP地址为
192.168.32.1-192.168.32.100。其他人员只有50人,采用IP地址为192.168.33.1-192.168.33.50。
现采用一台主机搭建DNS服务器,其IP地址为192.168.31.134,要求这台DNS服务器可以完成内网所有区域的正/反向解析,并且所有员工均
可以访问外网地址。
vim etc/named.conf
options {
};
zone "." {
};
zone "tech.boobooke" {
};
zone
"31.168.192.in-addr.arpa" {
};
zone "mart.boobooke" {
};
zone "32.168.192.in-addr.arpa" {
};
zone "freedom.boobooke"
{
};
zone
"33.168.192.in-addr.arpa" {
};
vim var/named/tech.boobooke.zone
$TTL 86400
@
@
dns
client1
client2
client3
client4
client5
client6
client7
client100
vim mart.boobooke.zone
$TTL 86400
@
@
dns
client1
client2
client3
client4
client5
client6
client7
client100
vim
freedom.boobooke.zone
$TTL 86400
@
@
dns
client1
client2
client3
client4
client5
client6
client7
client50
vim 192.168.31.zone
@ IN SOA
)
@
134 IN PTR dns.tech.boobooke.
1 IN PTR cilent1.tech.boobooke.
2 IN PTR client2.tech.boobooke.
3 IN PTR client3.tech.boobooke.
4 IN PTR client4.tech.boobooke.
5 IN PTR client5.tech.boobooke.
6 IN PTR client6.tech.boobooke.
7 IN PTR client7.tech.boobooke.
100 IN PTR client100.tech.boobooke.
vim 192.168.32.zone
@ IN SOA
)
@
134 IN PTR dns.mart.boobooke.
1 IN PTR cilent1.mart.boobooke.
2 IN PTR client2.mart.boobooke.
3 IN PTR client3.mart.boobooke.
4 IN PTR client4.mart.boobooke.
5 IN PTR client5.mart.boobooke.
6 IN PTR client6.mart.boobooke.
7 IN PTR client7.mart.boobooke.
100 IN PTR client100.mart.boobooke.
vim 192.168.33.zone
@ IN SOA
)
@
134 IN PTR dns.freedom.boobooke.
1 IN PTR cilent1.freedom.boobooke.
2 IN PTR client2.freedom.boobooke.
3 IN PTR client3.freedom.boobooke.
4 IN PTR client4.freedom.boobooke.
5 IN PTR client5.freedom.boobooke.
6 IN PTR client6.freedom.boobooke.
7 IN PTR client7.freedom.boobooke.
50 IN PTR client50.freedom.boobooke.
chown root:named 192.168.31.zone
chown root:named 192.168.32.zone
chown root:named 192.168.33.zone
chown root:named tech.boobooke.zone
chown root:named mart.boobooke.zone
chown root:named freedom.boobooke.zone
【实例3】安装基于chroot的DNS服务器,并将其配置成缓存Cache-only服务器,然后将客户机的查询转发到202.100.138.68和202.100.128.68的DNS服务器上。
options {
};
【实例4】安装基于chroot的DNS服务器,并根据以下要求配置主要名称服务器。
(1)定义服务器的版本信息为“9.3.4”。
(2)设置根区域,以便DNS服务器在本地区域文件不能进行查询的解析时,能转到根DNS服务器查询。
(3)建立xyz.org主区域,设置允许区域复制的辅域名服务器的地址为192.168.31.134。
(4)建立以下A资源记录。
dns.xyz.org.
mail.xyz.org.
(5)建立以下别名CNAME资源记录。
bbs
(6)建立以下邮件交换器MX资源记录
Xyz.org.
(7)建立反向解析区域31.168.192.in-addr.arpa,并为以上A资源记录建立对应的指针PTR资源记录。
vim etc/named.conf
options {
};
zone "." {
};
zone "xyz.org" {
};
zone
"31.168.192.in-addr.arpa" {
};
vim var/named/xyz.org.zone
$TTL 86400
@
)
@
dns
www
mail
bbs
xyz.org.
vim
var/named/192.168.31.zone
@ IN SOA
)
@
1 IN PTR dns.xyz.org.
2 IN PTR
3 IN PTR mail.xyz.org.
【实例5】安装基于chroot的DNS服务器,并根据以下要求配置辅助名称服务器。
(1)建立xyz.org从区域,设置主要名称服务器的地址为192.168.31.134。
(2)建立反向解析从区域31.168.192.in-addr.arpa,设置主要名称服务器的地址为192.168.31.134。
options {
};
zone "xyz.org" {
};
zone
"31.168.192.in-addr.arpa" {
};
=======================================
=======================================