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地址 IN PTR 主机名(FQDN)
5)CNAME资源记录
规范名字(CNAME)资源记录创建特定FQDN的别名。用户可以使用CNAME记录来隐藏用户网络的实现细节,使连接的客户机无法知道。别名(CNAME)资源记录用于为某个主机指定一个别名。例如管理员告知公司的首页为www.abc.com,而实际在访问时访问的是www1.abc.com主机。该资源记录经常用于在同一区域的A资源记录中的主机需要重命名时或者为多台主机(例如一组WWW服务器)提供相同的别名。
CNAME资源记录语法格式:
别名 IN CNAME 主机名
6)MX资源记录
邮件交换(MX)资源记录为DNS域名指定邮件交换服务器。邮件交换服务器是为DNS域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。
MX资源记录语法格式:
区域名 IN MX 优先级(数字) 邮件服务器名称(FQDN)
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状态。
应用案例
一 技术部所在域为“tech.org”,部门内有三台主机,主机名分别是client1.tech.org,client2.tech.org,client3.tech.org。对应ip为192.168.10.1,192.168.10.2,192.168.10.3 现要求DNS服务器(192.168.10.254) dns.tech.org可以解析3台主机名和IP地址的对应关系。
确保yum能够使用,然后安装所需要的软件包和主从域名服务器的参考配置文件
yum install bind caching-nameserver
cp /etc/named.rfc1912.zones /etc/named.conf
vim /etc/named.conf
options {
directory "/var/named" ;
};
zone "." IN { //设置根区域
type hint ; //设置区域类型(hint表示根域,master表示主域,
//slave表示从域
file "named.ca" ; //设置对应的根域地址数据库文件
};
zone "tech.org" IN { //设置正向DNS区域名称
type master ;
file "tech.org.zone" ; //设置正向区域地址数据库文件
allow-transfer { 192.168.10.253 ; } ; //设置允许下载区域数据库的从域名服务器 地址,为下面做从域名服务器做准备
};
zone "10.168.192.in-addr.arpa" IN { //设置反向DNS区域
type master ;
file "192.168.10.zone" ; //设置对应的反向区域地址数据库文件
allow-transfer { 192.168.10.253; }
};
vim /var/named/tech.org.zone
$TTL 86400
@ IN SOA dns.tech.org. root (
2009070900
1H
1W
1D
)
@ IN NS dns.tech.org.
dns IN A 192.168.10.254
client1 IN A 192.168.10.1
client2 IN A 192.168.10.2
client3 IN A 192.168.10.3
vim /var/named/192.168.10.zone
@ IN SOA dns.tech.org. root.tech.org. (
2009070900
1H
1W
1D
)
@ IN NS dns.tech.org.
254 IN PTR dns.tech.org.
1 IN PTR client1.tech.org.
2 IN PTR client2.tech.org.
3 IN PTR client3.tech.org.
配置完成后重启服务,使用nslookup client1.tech.org 测试是否能够正向解析
nslookup 192.168.10.1 测试是否能够反向解析
二 构建从域名服务器
从域名服务器作为主服务器的冗余备份,可以与主域名服务器一起,同时提供本域内主机名与ip地址的解析,从域名服务器的地址数据库文件需要从主域名服务器中定期更新。
从域名服务器的ip为192.168.10.253 主机名为dns2.tech.org
客户端将DNS指向192.168.10.254 192.168.10.253 当主域名服务器中断服务时,由从域名服务器继续处理客户端的DNS请求
配置过程:
vim /etc/named.conf
options {
directory "/var/named" ;
};
zone "tech.org" IN { //设置正向DNS区域名称
type slave; //使用slave辅助的区域类型
masters { 192.168.10.254; }; //指向主服务器的ip
file "slaves/tech.org.zone" ; //下载的地址数据库文件保存到slaves/子目录中,从服务器上的区域文件名可以和服务器上的该区域文件名不同。
};
zone "10.168.192.in-addr.arpa" IN {
type slave;
master { 192.168.10.254; };
file "slaves/192.168.10.zone" ;
};
测试,让客户端的DNS指向从域名服务器,可以解析主域名服务器的记录
三 授权子域或称子域委派
当DNS区域层次较多时,域名数量巨大时,就可以使用子域授权,将某一个子域的各域名解析工作交给另外一台服务器来完成。
配置过程:
主域名服务器上的配置文件/etc/named.conf保持不变
vim /var/named/tech.org.zone //解析库文件增加子域记录
IN NS dns2.zyp.com. //子域域名服务器记录
bj IN A 192.168.0.23 //子域名主机记录
配置子域的主配置文件
vim /etc/named.conf
option { directory "/var/named"; };
zone “bj.tech.org" IN
type master;
file bj.tech.org.zone";}
zone "tech.org" IN
type forward;
fordwarders { 192.168.0.254; }; //转发主域名服务器的请求
vim /var/named/bj.tech.org.zone
@ IN NS ns2.zyp.com.
dns2 IN A 192.168.10.252
www IN A 192.168.0.252
配置完成后可以解析www.bj.tech.org也可以解析dns.tech.org
server named configtest 测试dns文件
四、构建分离解析的域名服务器
分离解析的域名服务器实际上还是主域名服务器,这里所说的分离解析主要针对不同的客户端提供不同的解析记录,如当dns同时为internet和内网提供服务时,可能需要内网用户访问公司的web服务和mail服务直接发往位于内网的web和mail服务器上,减轻服务器地址转换的负担
域名服务器架设在网关服务器上,服务器有二块网卡一个地址为公网地址173.0.0.1 一个为私网地址192.168.10.254
负责域名为tech.org,当公网用户访问时直接解析为173.0.0.1 当内网用户访问时直接解析为web服务器192.168.0.5地址和mail服务器192.168.0.6的地址
配置过程:
vim /etc/named.conf
options { directory "/var/named";};
view "LAN" {
match-clients { 192.168.10.0/24; };
zone "tech.org" IN {
type master;
file "tech.org.zone.lan";};
}
view "WAN" {
match-clients { any; };
zone "tech.org" IN {
type master;
file "tech.org.wan";};
};
vim /var/named/tech.org.lan
$TTL 36400
@ IN SOA tech.org. root.tech.org (
2011012801
1H
10M
7D
1D)
IN NS dns.tech.org.
IN MX 10 mail.tech.org.
ns IN A 192.168.10.254
www IN A 192.168.10.5
mail IN A 192.168.10.6
vim /var/named/tech.org.wan
$TTL 36400
@ IN SOA tech.org root.tech.org.(
2011012801
1H
10M
7D
1D)
IN NS dns.tech.org.
IN MX 10 mail.tech.org.
ns IN A 173.0.0.1
www IN A 173.0.0.1
mail IN A 173.0.0.1
配置完成后重启服务,当公网公网用户访问web和mai服务器时,解析为173.0.0.1
当内网用户访问web或者mail时解析为实际的服务器地址
本文转自 张玉坡 51CTO博客,原文链接:http://blog.51cto.com/fighter/500957