首页 理论教育最新网络技术:下一代计算机网络的域名系统DNS

最新网络技术:下一代计算机网络的域名系统DNS

【摘要】:图2.19域名系统图一个独立管理的DNS子树称为一个区域,每个区域还可以划分为多个更小的区域。若本地DNS服务器不能回答该请求,则它就暂时成为域名系统的另一个客户,将请求发送到上级DNS服务器,直至找到能够回答该请求的DNS服务器为止。

TCP/IP协议使用IP地址进行通信,但是对于用户来说,IP地址很难记忆,人们愿意使用某种易于记忆的有意义的主机名字。如此一来,就需要将用户使用的主机名字转换为相应主机的IP地址。ARPAnet时代,人们使用一个叫做host的文件,列出所有主机名字和相应的IP地址。只要用户输入主机名字,就能很快将其转换成机器识别的IP地址。由于当时整个网络上只有数百台计算机,因此使用和维护host文件是可行的。

随着Internet规模的扩大,网络上的主机数量迅速增加。虽然从理论上讲,可以使用一个名称解析服务器,记录所有的主机名并回答所有对IP地址的查询,然而这种集中管理的做法实际上并不可行。这样的名称解析服务器肯定会因负荷过大而无法正常工作,而且一旦服务器出现故障,整个Internet就会瘫痪。于是,1983年Internet开始采用层次结构的命名树作为主机的名字,称为域名,并且使用域名系统DNS(Domain Name System)进行域名和IP地址之间的转换。

域名系统采用一种典型的层次树状结构。这里,“域”(domain)是名字空间中一个可被管理的划分。域还可以继续划分为子域,如二级域、三级域等。图2.19表示了域名系统的树状结构,它有以下特点:

(1)每个节点为1~63个字符长度的标识。

(2)某一节点的域名的结构是:由从该节点到根节点所经过的所有节点的名字分量组成,各分量之间用点隔开:

....三级域名.二级域名.顶级域名

(3)域名树中同一个父节点下的每个子节点必须具有唯一名字,但域名树中的不同父节点下的子节点可以使用相同的名字。

图2.19 域名系统图

一个独立管理的DNS子树称为一个区域(zone),每个区域还可以划分为多个更小的区域。每个区域都存在一个授权机构,它负责在该区域内建立授权DNS服务器(本地DNS服务器),当一个新的主机加入到区域中时,区域的管理者为该主机分配一个域名和IP地址,然后将该域名和IP地址的记录加入DNS服务器的数据库之中。

每个区域通常部署至少两台DNS服务器:一台主DNS服务器和一台备份DNS服务器。各个区域内的DNS服务器就构成了一个联机分布式数据库系统,并且采用客户/服务器模式。

DNS使大多数域名可在本地解析,只有少量解析需要与互联网上的其他DNS服务器通信。当一个应用进程需要解析某主机名的IP地址时,它就成为域名系统的一个客户,并将待转换的域名放在DNS请求报文中,以UDP数据报方式发给本地DNS服务器。本地DNS服务器在查找域名后,将对应的IP地址放在回答报文中返回。应用进程获得目的主机的IP地址后即可进行通信。

若本地DNS服务器不能回答该请求,则它就暂时成为域名系统的另一个客户,将请求发送到上级DNS服务器,直至找到能够回答该请求的DNS服务器为止。这种查找过程后面还要进一步讨论。DNS服务器具有高速缓存的能力。当它收到来自其他DNS服务器的域名解析结果后,会将结果保存在高速缓存中。这样,若以后收到相同域名的解析请求,则可以直接使用缓存中的结果而无需再通过其他服务器查询。

2.6.1.1 Internet的域名结构

域名系统中的顶级域名TLD(Top Level Domain)有3类:

(1)国家顶级域名nTDL:采用ISO 3166的规定,如:cn表示中国,us表示美国,uk表示英国等。

(2)国际顶级域名iTDL:采用int。国际性的组织可在int下注册。

(3)通用顶级域名gTDL:根据[RFC1591]规定,最早的顶级域名共6个,即:

com表示公司企业。

net表示网络服务机构。

org表示非赢利性组织。

edu表示教育机构。

gov表示政府部门(美国专用)。

mil表示军事部门(美国专用)。

(4)由于Internet上用户的急剧增加,现在又新增加了7个通用顶级域名,即:

firm表示公司企业。

shop表示销售公司和企业。

web表示突出万维网活动的单位。

arts表示突出文化、娱乐活动的单位。

rec表示突出消遣、娱乐活动的单位。

info表示提供信息服务的单位。

nom表示个人。

在国家顶级域名下注册的二级域名均由该国家自行确定。我国将二级域名划分为“类别域名”和“行政区域名”两大类。

其中“类别域名”6个,分别为:

ac表示科研机构。

com表示工、商、金融等企业。

edu表示教育机构;gov表示政府部门。

net表示互联网络、接入网络的信息中心(NIC)和运行中心(NOC)。

org表示各种非盈利性的组织。

“行政区域名”34个,适用于我国的各省、自治区、直辖市。例如:bj为北京市;sh为上海市;js为江苏省等。

在我国,在二级城名edu下申请注册三级域名则由中国教育和科研计算机网络中心负责。在二级域名edu之外的其他二级域名下申请注册三级域名的,则应向中国互联网网络信息中心CNNIC申请。

Internet名字空间的结构也是层次树状结构,树根在最上面而没有名字。树根下面一级的节点就是最高一级的顶级域节点。在顶级域节点下面的是二级域节点。最下面的叶节点就是主机。例如,凡是在顶级域名com下注册的单位都可以获得一个二级域名,如:cctv、ibm等;在我国(cn)的二级域名edu下面的三级域名有:tsinghua(清华大学)、pku(北京大学)、btbu(北京工商大学)等。

一旦某个单位或组织拥有了一个域名,它就可以自己决定是否要进一步地划分其下属的子域。域名树的叶节点就是主机的名字,不能再继续往下划分子域了。

需要注意的是,Internet的名字空间是按照机构的组织来划分的,与物理网络无关,与IP地址中的“子网”也没有关系。

2.6.1.2 用域名服务器进行域名转换

Internet上的域名服务器系统也是按照域名的层次来安排的。每一个域名服务器都只对域名体系中的一部分进行管辖。例如,根服务器用来管辖顶级域(如com)。根服务器并不直接对顶级域下面所属的所有的域名进行转换,但根服务器能够找到所有管理二级域名的域名服务器。

当主机需要进行域名解析时,它向本地DNS服务器发送请求,如果本地DNS服务器没有所请求域名的记录,则它需要向上级DNS服务器进行解析,所采用的方法分为递归查询和迭代查询两种。

例如,图2.20中在顶级域名.com下有两个公司abc和xyz,它们的本地DNS服务器分别为abc.com和xyz.com。abc公司在下属部门x中创建了另外一个区域,并且又设置了一个本地DNS服务器,其域名为x.abc.com。

发起查询的是公司xyz下属的一台主机,要查询的主机域名是w.x.abc.com。

1.迭代查询

首先,xyz公司查询主机的应用进程向本地DNS服务器xyz.com发送查询报文。本地DNS服务器不知道所查询的域名,就向.com顶级域名服务器查询。.com顶级域名服务器并不知道所查询的域名,于是将下属abc.com的本地DNS服务器IP地址返回。接着,服务器xyz.com又向abc.com的本地DNS服务器进行查询,服务器abc.com再将下属区域服务器w.x.abc.com的IP地址返回。服务器xyz.com再次向服务器w.x.abc.com发送查询报文,才得到了所要查询主机的IP地址。最后,服务器xyz.com将此地址返回给DNS客户。

2.递归查询

首先,xyz公司查询主机的应用进程向本地DNS服务器xyz.com发送查询报文。本地DNS服务器不知道所查询的域名,就向.com顶级域名服务器查询。.com顶级域名服务器于是向abc.com的本地DNS服务器进行查询,而服务器abc.com再向服务器w.x.abc.com查询。得到所要查询主机的IP地址后,服务器abc.com将结果返回给.com顶级域名服务器,再由它将结果返回给服务器xyz.com。最后,服务器xyz.com将此地址返回给DNS客户。

图2.20 域名的解析图

这种查询方法存在着一些问题:第一,从顶级域名服务器经过几层才能找到所要查询的IP地址,使得查询效率不高;第二,顶级域名服务器的负荷很过大;第三,若顶级域名服务器发生故障,则整个Internet的名字转换就无法进行。因此,可以采用递归与迭代相结合的查询方法。具体查询步骤如下:

(1)xyz公司的查询主机向本地DNS服务器xyz.com发送查询报文,本地DNS服务器再向.com顶级域名服务器查询。.com顶级域名服务器将下属abc.com域的本地DNS服务器IP地址返回。

(2)服务器xyz.com再向服务器abc.com采用递归查询的方法得到所要查询的结果。

2.6.1.3 DNS服务的配置

在UNIX系统中,域名服务(DNS)是由柏克莱网间名域(Berkeley Internet Name Domain)软件实现的。Bind是一个客户服务器系统,它的客户方面称为转换程序(resolver),它产生域名信息的查询,将这类信息发送给服务器,DNS服务器软件回答转换程序的查询。

BIND可以配置成以下不同的方法运行:

(1)唯转换程序系统。(www.chuimin.cn)

(2)唯高速缓存服务器。

(3)主服务器。

(4)辅助服务器。

转换程序是一段要求服务器提供域信息的程序。在UNIX中,它是作为一个库程序实现的,不是一个单独的客户程序。在唯转换程序的系统中,仅使用转换程序并不运行名服务器,这种系统很容易配置,最多只需设置/etc/resov.conf文件。然而,它的使用条件是当不能在本地系统运行名服务器时才使用它。

最常见的resolv.conf配置文件定义了缺省域名作为第一个域名服务器的本地主机和两个备份服务器。如:

domain        165.com.cn

nameserver        20.78.225.68

1.主域名服务器的配置

主名服务器是特定域所有信息的权威性信息源,它可以回答对它的域的任何查询。

配置主服务器需要一整套配置文件,包括正规域文件(named.hosts)和反向域的文件(named.rev)、引导文件(named.boot)、高速缓存文件(named.ca)、回送文件(named.local)等如表2.5所示。

表2.5 Named的配置

(1)named.boot文件,域名服务器的启动文件,配置named.boot文件所用的方法是用来控制将名服务器作为主服务器、辅服务器还是唯高速缓存服务器。

首先要了解named.boot的配置命令,如表2.6所示。

表2.6 记录的命令与功能对照表

下面举例说明主服务器165.com.cn为例:

(2)配置named使用的其他文件(named.hosts,named.rev,named.local和named.ca)存放着域数据库信息,所有文件都具有相同的基本格式,并使用相同记录类型去定义域数据库信息。它们使用的记录都是标准的资源记录,所有记录如表2.7所示。

表2.7 记录的类型与功能对照表

唯高速缓存服务器(caching-only server)1个唯高速缓存服务器可运行名服务器软件,但是没有名服务器数据库文件,它从远程服务器取得每次名服务器查询的回答,一旦取得一个就将它放在高速缓存中,以后查询相同的信息时就用它予以回答,所有的名服务器都按这种方式使用高速缓存中的信息,但它则依赖这一技术去提供所有名服务器信息,它提供的所有信息都是间接信息。

配置时3个文件(named.local、named.boot、named.ca)是必须使用的,用于唯高速缓存服务器最常见的是named.bootb文件。

named.local的功能是将127.0.0.1转换成本地主机(localhost)名,是反向域0.0.127.IN-ADDR.ARPA使用的数据文件,所有系统都将127.0.0.1作为本机的回路地址。

2.域名服务器的基本维护

DNS的维护非常简单,主要步骤是:

(1)确认域名解析文件已经配置正确。

(2)确认named进程是否已经启动,#ps-eflgrep named。

(3)如果修改了域名解析文件,需要重启named进程。

1)启动DNS服务器。当Unix系统开机启动时,DNS守护进程named自动启动,不需要额外操作。在一些情况下,需要重新启动DNS服务器时,可通过执行如下命令实现:

2)增加、修改和删除标准资源记录。增加、修改和删除标准资源记录是DNS服务器日常维护的主要工作。当增加一台主机、改变一台主机的主机名或移走一台主机时,都需要修改DNS服务器的配置文件。

当增加一台主机时,需要增加一条标准资源记录,具体步骤如下:

●在正向解析配置文件中增加一条A(address)、CNAME(alias)、或MX(mail exchanger)记录。

●在反向解析配置文件中增加一条相应的PTR记录。

●增加正向解析配置文件和反向解析配置文件的序列号。

●重启DNS服务器。

修改和删除标准资源记录与增加标准资源记录的操作类似。

3)浏览系统日志文件。DNS服务器的重要操作和告警信息记录在Unix系统的系统日志文件中,该日志文件为/var/adm/SYSLOG。通过定期查询该日志文件,可以获得DNS服务器工作情况的相关信息。

3.DNS故障处理

(1)nslookup命令的使用。nslookup命令是DNS故障诊断的重要工具。nslookup命令常用于以下几个方面:

1)解析本域主机,判断本域解析是否正确。具体操作如下(以在bj.cnuninet.net域,使用域名服务器dns.bj.cnuninet.net,解析本域主机nms.bj.cnuninet.net为例):

2)解析远程主机,判断DNS服务器是否工作正常。具体操作如下:(以在bj.cnuninet.net域,使用域名服务器dns.bj.cnuninet.net,解析远程主机dns.sh.cnuninet.net为例)

3)使用远程DNS服务器解析本域主机,判断本域DNS服务器是否在上级DNS服务器正确注册。具体操作如下:(以在bj.cnuninet.net域,使用远程域名服务器dns.sh.cnuninet.net,解析本域主机nms.bj.cnuninet.net为例)

(2)常见配置错误。在配置和维护DNS服务器时,注意避免出现以下常见错误:

1)修改配置文件后,忘记增加序列号。

2)修改配置文件后,忘记重启named守护进程。

3)在正向解析配置文件中增加、修改或删除标准资源记录后,忘记在反向解析配置文件中做相应修改。

4)在正向解析配置文件或反向解析配置文件中,忘记在主机名的末尾加上“.”。

5)在实施子域委托管理时,忘记指明子域DNS服务器的主机名或IP地址。

(3)故障分析。当DNS服务器工作不正常时,可通过以下分析确定故障原因:

1)无法解析本域主机名,可能是由以下原因造成。①/etc/named.conf文件配置错误。②正向解析配置文件或反向解析配置文件主机名拼写错误。

2)无法解析远程主机名,可能是由以下原因造成。①忘记配置root.cache文件;②本域DNS服务器的网络连接断开;③本域DNS服务器与所解析的远程域的DNS服务器之间网络连接不通。

3)使用不同的DNS服务器解析本域主机名,得到的结果不一致,可能是由以下原因造成。①主域名服务器修改标准资源记录后,错误修改序列号;②辅域名服务器与主域名服务器的网络连接断开。

4)执行rlogin和rsh失败,可能是由以下原因造成。忘记配置反向解析配置文件中的记录。