一.解析流程
DNS的解析通常由主域名服务器、辅域名服务器、缓存域名服务器、转发域名服务器进行域名解析。
1.主域名服务器负责维护这个区域的所有域名信息,需要从域管理员构造的本地磁盘文件中加载域信息进行解析。
2.辅助域名服务器作为主域名服务器的备份服务器提供域名解析服务。辅助域名服务器从主域名服务器获得授权,有一个所有域信息的完整拷贝,解析时需要访问本地存储文件。
3.缓存域名服务器可运行域名服务器软件,但是没有域名数据库,它从某个远程服务器取得每次域名服务器查询的回答,一旦取得一个答案,就将它放在高速缓存中,以后查询相同的信息时就用它予以回答。
4.转发域名服务器负责所有非本地域名的本地查询,转发域名服务器接到查询请求时,在其缓存中查找,如找不到就把请求依次转发到指定的域名服务器,直到查询到结果为止,否则返回无法映射的结果。
从上述服务器的查询机制中可以看出,缓存域名服务器通过高速缓存的存取进行域名解析,因此获取的解析结果耗时最短。
本地缓存记录—区域记录一转发域名服务器一根域名服务器
具体过程:
当DNS服务器收到查询请求后,首先在自己的区域文件中查找,再在高速缓存中查找。
如果查不到,可能是因为该服务器不是请求域的授权服务器,并且以前查询的缓存中没有需要的记录,这时DNS服务器必须向转发域名服务器(转发域名服务器负责所有非本地域名的查询)发送请求。
当主域名服务器关闭、出现故障或负载过重时,辅助域名服务器作为备份服务器提供域名解析服务。辅助服务器从主域名服务器获得授权,并定期向主服务器询问是否有新数据,如果有则调入并更新域名解析数据,以达到与主域名服务器同步的目的。
例题:
客户端向DNS服务器发出解析请求后,没有得到解析结果,则(1) 进行解析。
(1)备选答案:
A.查找本地缓存 B.使用NetBIOS名字解析
C.查找根域名服务器 D.查找转发域名服务器
(1)B.使用NetBIOS名字解析
DNS主机名解析的查找顺序是:先查找客户端解析程序缓存;如果没有成功,则向DNS服务器发出解析请求;如果还没有成功,则尝试使用NetBIOS名字解析方法取得结果。
二.Bind配置DNS
BIND (Berkeley Internet Name Daemon)
BIND (Berkeley Internet Name Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
重要文件:
主要文件:
/etc/named.conf 主配置文件
/etc/named.rfc1912.zones 区域配置文件
type: hint(根区域)、master(主区域)、slave(辅助区域)
/var/named 数据配置文件目录
多种记录类型:
• SOA (Start Of Authoritative):开始授权记录是区域文件的第一条记录,指明区域的主服务器,指明区域管理员的邮件地址,并给出区域复制的有关信息
•序列号:当区域文件改变时,序列号要增加,辅助服务器把自己的序列号与主服务器的序列号比较,以确定是否需要更新数据
•刷新间隔:辅助服务器更新数据的时间间隔(秒)
•重试间隔:当辅助服务器不能连接主服务器进行更新时,必须每隔一定时间间隔(秒)重新试图连接
•有效期:如果辅助服务器不能更新自己的区域文件,超过有效期(秒)后就不再提供查询服务
•生命期(TTL):资源记录在其他名字服务器缓存中保存的最少有效时间(秒)
•A (Address):地址记录表示主机名到IP地址的映像
• AAAA:将DNS域名映射到ipv6(128位)的地址中
•PTR (Pointer):指针记录是IP地址到主机名的映射
•NS (Name Server):给出区域的授权服务器
•MX (Mailexchanger):定义了区域的邮件服务器及其优先级(搜索顺序)
注:补充
MX (Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给user@mydomain.com时,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在,用户计算机就将邮件发送到MX记录所指定的邮件服务器上。
POP是一种电子邮件传输协议,3代表该协议第3个版本,规定了怎样将个人计算机连接到Internet邮件服务器和下载电子邮件的电子协议。配置POP包括安装组件、创建域、添加邮件等内容。“设置服务器最大连接数”是配置SMTP服务时配置的参数。
•CNAME:为正式主机名(canonical name)定义了一个别名(alias)
三.域名系统DNS的逻辑结构
域名系统DNS的逻辑结构是一个分层的域名树,Internet网络信息中心(Internet Network Information Center, InterNIC)管理着域名树的根,称为根域。
根域没有名称,用圆点表示,是域名空间的最高级别。在DNS的名称中,有时在末尾附加一个就是表示根域,但经常是省略的。DNS服务器可以自动补上结尾的圆点,也可以处理结尾带圆点的域名。
根域下面是顶级域(Top-Level Domains,TLD),分为国家顶级域(country code Top Level Domain, ccTLD)和通用顶级域(generic Top Level Domain,gTLD)。国家顶级域名包含243个国家和地区代码,例如cn代表中国,uk代表英国等。最初的通用顶级域有7个,如下表所示
这些顶级域名原来主要供美国使用,随着Internet的发展,com、org和net成为全世界通用的顶级域名,这就是所谓的国际域名,而edu、gov和mil则限于美国使用。
负责互联网域名注册的服务商ICANN在2000年11月决定,从2001年开始使用7个新的国际顶级域名:biz (商业机构)、info (网络公司)、name (个人网站)、pro (医生和律师等职业人员)、aero (航空运输业专用)、coop (商业合作社专用)和museum (博物馆专用),其中前4个是非限制性域名,后3个限于专门的行业使用,受有关行业组织的管理。
2008年6月,ICANN在巴黎年会上通过了个性化域名方案,可以用公司名字为结尾的域名,例如ibm、hp、qq等。可以认为,这些域名的所有者在某种意义上就是一个域名注册机构,今后将会有无穷多的国际域名。
顶级域下面是二级域,这是正式注册给组织和个人的唯一名称,例如 www.micosoft.com中的micotsoft就是微软注册的域名。
在二级域之下,组织机构还可以划分子域,使其各个分支部门都获得一个专用的名称标识,例如www.sales.micosoft.com中的sales是微软销售部门的子域名称。划分子域的工作可以一直延续下去,直到满足组织机构的管理需要为止。
但是标准规定,一个域 名的长度通常不超过63个字符,最多不能超过255个字符。
DNS标准还规定,域名中只能使用'ASCII字符集的有限子集,包括26个英文字母 (不区分大小写)和10个数字,以及连字符"-"并且连字符不能作为子域名的第一个和最后一个字母。后来的标准对字符集有所扩大。
四.DNS服务器的递归算法和迭代算法
1.递归查询
递归算法只发出一次查询请求,要求服务器彻底地进行名字解析。当需要进一步查询时,本域名服务器向上级域名服务器返回其他域名服务器发出请求,直到查到记录。
2.迭代算法
迭代查询可能发出多条请求,即上级域名服务器若返回的是其他域名服务器的地址,本域名服务器把这个地址发给用户,用户再进行深一级的查询。
例题:
下图是DNS转发器工作的过程。采用迭代查询算法的是(35)。
A.转发器和本地DNS服务器 B.根域名服务器和本地DNS服务器
C.本地DNS服务器和.com域名服务器 D.根域名服务器和.com域名服务器
【答案】D
从本题中可以看出,根域名服务器发回给转发器的是.com服务器地址,并不是结果, 故采用的是迭代算法;
.com域名服务器发回给转发器的是授权域名服务器nwtraders.com服务器地址,也不是结果,采用的也是迭代算法;
nwtraders.com服务器尽管返回给转发器域名和IP的对应关系,但它是授权域名服务器,在其资源记录中已经找到了记录,故其采用的算法未知。
本地域名服务器只向转发器发出了1条请求,转发器经过多次深层次査询,返回的是查到的记录,故转发器采用的是递归算法。本地域名服务器采用的算法未知。
五.DNS的重要配置命令
1.Nslookup
Nslookup命令用于显示DNS查询信息,诊断和排除DNS故障,有交互式和非交互式两种工作方式。
•非交互式工作就是只使用一次Nslookup命令后又返回到Cmd.exe提示符下。Nslookup命令后面可以跟随一个或多个命令行选项,用于设置查询参数。每个命令行的各选项由一个连字符后跟选项的名字,有时还要加一个等号“=”和一个数值。例如应用默认的DNS服务器由域名查找IP地址。
•交互式工作,如果需要查找多项数据,可以使用Nslookup的交互工作方式。在Cmd.exe提示符下输入nslookup后回车,就进入了交互工作方式,命令提示符变成“>”。在命令提示符 “>”下输入help或?,会显示可用的命令列表,如果输入exit,则返回Cmd.exe提示符。
在交互方式下,可以用set命令设置选项,满足指定的查询需要。例如查询本地域的邮件交换器信息的过程如下。
例题
要测试DNS服务器是否正常工作,在客户端可以采用的命令是(5)或(6)。
A. ipconfig B. nslookup C. ping D. netstat
答案 B C
解析
测试DNS服务器是否正常工作,可以采用两种方式:
第一种通过ping域名来测试;
第二种采用nslookup来查看提供服务的DNS服务器。
2.ipconfig /flushdns是清除DNS缓存记录;
3.ipconfig /displaydns为显示DNS缓存记录;
对于dns主从区域数据库的复制以及子域授权参考: