系统管理工具包: 理解 DNS

域名系统(Domain Name System,DNS)是将主机名和域详细信息转换为应用程序通信所需的 IP 地址的服务。在 UNIX® 下,主要的 DNS 服务基于 BIND,并且 DNS 本身是大多数 UNIX 安装的重要组成部分。本文研究 DNS 设置基础,服务器和请求如何分配和交换,以及如何设置 DNS 环境并保持其平稳运行。

Martin C. Brown, 职业作家, MC

Martin Brown 成为职业作家已经超过 7 个年头。他撰写了大量的书籍和文章,内容涵盖各种各样的主题。他的专长包括许多开发语言和平台,如 Perl、Python、Java™、JavaScript、Basic、Pascal、Modula-2、C、C++、Rebol、Gawk、Shellscript、Windows®、Solaris、Linux、BeOS、Mac OS X 等等,以及 Web 编程、系统管理和集成。他是 Microsoft® 的 Subject Matter Expert (SME) 以及 ServerWatch.com、LinuxToday.com 和 IBM developerWorks 的固定投稿人。他还是 Computerworld、The Apple Blog 及其他站点上活跃的 Blogger。您可以通过他的网站与他联系。



2008 年 4 月 28 日

关于本系列

典型的 UNIX 管理员拥有一套经常用于辅助管理过程的关键实用工具、诀窍和系统。有一些重要的实用程序、命令行以及脚本可用来简化各种处理过程。其中一些工具来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员工作压力的要求。本系列文章主要专注于最大限度地利用各种 UNIX 环境中可用的工具,包括简化异构环境中的管理任务的方法。


DNS 基础

通常,人类并不是特别擅长于记忆数字。遗憾的是,IP 寻址系统使用数字来标识各个主机。记住网络内外可能希望使用的所有计算机的 IP 地址数字显然是不切实际的。相反,将您的服务器名称作为“bear”来记忆或者将 Internet 上的某个网站地址作为 www.mcslp.com 来记忆会更加容易。

过去,UNIX 主要使用三个位置来保存此类信息。内置的 /etc/hosts 文件是主要来源和有用的备份,但是要在多台计算机中使其保持最新,将需要进行大量的数据复制。更好的方法是使用分布式系统,其中所有计算机和服务都能与中心点通信;考虑到不同的目的而开发了两个系统:网络信息系统(Network Information System,NIS)和 DNS。

NIS 是通用数据库共享服务,可用于共享主机、密码和其它普通的基于文本的数据库。遗憾的是,NIS 在跨系统使用时不是那么有效,在 Internet 的分布式形式中肯定不是非常有效。

域名系统(Domain Name System,DNS)通过提供一种能够将名称解析到相应的 IP 地址的机制,从而解决了此问题。域名系统中的地址组织为树形结构。虽然可以按照您希望的格式组织任何专用 DNS,但是最简单的理解 DNS 系统的途径是查看已经在 Internet 上使用的域名结构。

一个典型的 DNS 地址 www.mcslp.com,可以通过按句点分隔其内容来划分此名称,并从最右边的片段 (com) 开始。

在示例 www.mcslp.com 中,“com”是顶级域名 (TLD) 的示例,顶级域名按组织或区域结构来对名称进行组织。例如,有效的 TLD 包括 com(商业)、edu(教育)和 net(网络相关)。在 Internet 上,区域组织提供特定于国家/地区的 TLD,例如表示英国的 uk 或表示法国的 fr。

TLD 左边的每个片段是该原始域的细分。例如,mcslp.com 是 com TLD 的细分。可以进行进一步的细分,最多可以达到 127 个级别。每个细分部分称为子域。在该示例中,mcslp.com 是 com TLD 的子域,www.mcslp.com 是 mcslp.com 子域的子域。

使用子域具有两个主要目的;一是为了便于标识,二是为了便于委托。从标识的角度看,了解和确定 www.mcslp.com 和 bear.mcslp.com 均为 mcslp.com 域中的主机要容易得多。类似地,很容易确定 www.google.com 和 mail.google.com 均为 google.com 域中的主机。

委托涉及到管理员(以及计算机)负责各个域的配置和内容的方式。mclsp.com 域是 com TLD 的子域。com TLD 的管理员已将该域和 mcslp.com 域的子域的权限委托给另一个管理员。

此委托功能使得 Internet 上的服务管理员能够“拥有”某个域,并相应地分配他们自己的 IP 地址,配置自己的名称,以及组织自己的结构以帮助他们标识其网络中的计算机。

在内部,域名系统还可以用作标识和定位网络上的计算机的方法,并且可以使用 DNS 的组织和委托功能来帮助对网络进行组织。

例如,mcslp.com 是某公司的外部公共域,而 mcslp.pri 则是在内部用于标识网络中的计算机的专用域。地址 www.mcslp.pri 涉及到一个内部 Web 服务器,mail.mcslp.pri 涉及到一个内部邮件服务器。此外,子域 vm.mcslp.pri 用于提供主机(在此例中为虚拟计算机)的逻辑分组。


域名解析是如何工作的

域名解析的工作方式是客户端与服务器通信,并请求将某个特定地址解析到对应的部分(即从名称解析到 IP 地址,或从 IP 地址解析到名称)。由于名称服务器可以包含不同类型的信息,具体的响应和处理取决于查询,但是对于这里的示例,我们将采用一个预期从响应中获得 IP 地址的简单名称查找。

一般来说,客户端要求服务器解析某个地址,并接收从服务器返回的已解析地址。查询可以具有两种类型:递归和非递归。在递归查询中,客户端预期服务器响应完整的答案(即,将某个名称解析为 IP 地址)。非递归查询允许服务器返回部分响应,例如返回可能知道答案(或可能具有更多信息)的服务器的名称或地址。

这样做的原因在于,DNS 系统的工作机制采用了与“中国耳语”(Chinese whispers)游戏非常相似的形式。如果服务器不知道答案本身(因为它不负责该域),它将确定哪一台服务器负责该域,并请求该服务器提供答案。在递归查询中,该服务器执行请求并返回最终结果。非递归查询一般由服务器在彼此通信以代表客户端解析某个查询时使用。

查看图 1 可以更清楚地看到这一点。图中的数字对应以下列表中的相同步骤。

  1. 客户端检查自己的缓存,以确定最近是否解析过该名称,但是没有找到任何结果。
  2. 客户端向其主名称服务器发送递归查询。
  3. 该名称服务器检查其数据库和缓存,没有找到任何结果,于是向 .com 顶级域的根服务器发送一个迭代请求。
    图 1. 递归和非递归查询
    递归和非递归查询
  4. 根服务器使用对 mcslp.com 域有权威的 DNS 服务器的 IP 地址来响应该 DNS 服务器。
  5. 该 DNS 服务器向 mcslp.com 域的 DNS 服务器发送一个迭代请求,以解析地址 www.mcslp.com。
  6. 该 DNS 服务器使用迭代请求的原因在于,它已经知道 mcslp.com DNS 服务器对该域是有域名控制权的。
  7. mcslp.com DNS 服务器将 IP 地址返回给该 DNS 服务器。
  8. 该 DNS 服务器将 IP 地址返回给客户端。

DNS 请求的缓存

由于有可能会在短时间内多次请求同一个主机名(例如,在加载网页的所有内容的时候),DNS 信息将同时在客户端本地和服务器上进行缓存。客户端上的缓存是为了防止在信息已知的情况下发出多次请求。DNS 服务器上的缓存在称为生存时间(Time To Live,TTL)的可控限制内进行。此限制设定了在负责所查询域的服务器再次发出解析某个 DNS 条目的查询请求之前,该条目将在缓存中保留的时间长度。TTL 和缓存的缺点在于,不同的用户可能看到不同的信息,具体取决于他们从哪一个 DNS 服务器请求名称解析,以及最初的请求发生在什么时间。

设置 DNS 服务器

本文前面曾讨论了委托以及域和子域细分的作用,即允许各个管理员负责他们自己的域以及该域中定义的信息和主机。无论您是在 Internet 托管上可用的公共 DNS 域,还是希望配置自己的 DNS 信息以解析专用网络中的地址和其它信息,设置自己的域服务器可能都是非常有用的。

要在 UNIX 服务器或客户端中设置 DNS 服务器,您需要 DNS 守护进程,此守护进程将回答一个或多个域的查询。最常见的守护进程是 BIND,并且大多数 DNS 服务器实现都使用 BIND 或 BIND 代码的派生代码作为其 DNS 服务的基础。BIND 服务的核心是一个名为 named(或 in.named)的守护进程,此守护进程处理所有的查询。

典型的 BIND 环境的配置涉及到主 named 配置文件,通常是 /etc/named.conf(或 /etc/bind/named.conf),以及许多“区域”文件,其中包含有关该服务器负责的每个 DNS 域的单独信息。

主配置文件设置用于区域文件、安全信息以及还设置在该 DNS 服务器无法自己解析地址时应该查询的其他服务器的目录。如果除了解析网络中已配置区域的地址以外,还希望 DNS 服务器解析网络之外(例如,在 Internet 上)的地址,则需要此设置。

在清单 1 中可以看到一个简单配置文件的开头部分。

清单 1. 简单配置文件
options {
     directory "/var/bind";

     forwarders {
      212.23.3.100;
      212.23.6.100;
     };

     listen-on-v6 { none; };
     listen-on { 127.0.0.1; };

     allow-query {
          192.168.0.*;
          192.168.1.*;
          192.168.2.*;
     };

     pid-file "/var/run/named/named.pid";
};

请注意,在该配置文件中,您需要使用双斜线 (//) 来加入注释。还应该注意,分号用于分隔该文件的各个配置选项,大括号用于将配置选项分组在一起。配置文件内容方面的大多数问题都是由于缺失分号或大括号而引起的。

此示例中显示的各个可配置选项如下:

  • directory——此选项设置区域文件所在的基本目录。
  • forwarders——此选项设置 DNS 主机列表,当向 DNS 服务器发送该服务器无法回答的递归查询时,将查询这些主机。通常,您应该将其设置为该层次结构中的下一个最高 DNS 服务器。例如,如果该服务器是为子域 servers.mcslp.pri 配置的,则要将转发地址设置为指向 mcslp.pri 的 DNS 服务器以实现解析。对于大多数情况,您应该将转发地址设置为 ISP 的地址,以实现 Internet 地址的解析。
  • listen-on-v6——设置该服务器是否应该侦听 IPv6 地址。“none”设置将禁用 IPv6 支持。
  • listen-on——设置服务器应该侦听的解析请求的 IP 地址。在该示例中,服务器将仅侦听来自 localhost(即该计算机本身)的请求。如果省略此配置行,则服务器将侦听所有已配置的 IP 接口。如果将该服务器用作路由器,其中您只希望某些接口支持 DNS,则可以使用此选项将请求限制到某些接口上。
  • allow-query——此选项配置允许请求 DNS 解析的主机。在可能跨越多个 IP 子网的网络中,您可能希望限制哪些服务器负责处理针对特定子网的查询,以允许在多个服务器之间分配负载。
  • pid-file——设置包含运行的 named 守护进程的进程 ID 的文件位置。如果希望能够终止或重新加载区域信息,这是非常有用的,因为您可以使用此文件来定位服务器的 PID。

该配置文件的其余部分包含将由该服务器用于共享 DNS 信息的区域文件数据。


设置 DNS 数据

DNS 信息存储在一系列“区域”文件中。通常,您托管的每个域有一个区域文件。

  • 转发区域——这些区域主要将域名映射到 IP 地址。此外,诸如有效的名称服务器、域的邮件服务器优先级等其他域级别的信息也存储在这些文件中。一个转发域一般使用单个区域文件。例如,mcslp.com 或某个内部 mcslp.pri 区域。
  • 反向区域——这些区域将 IP 地址映射回名称。出于安全考虑,可以配置包括 NFS、OpenSSH 和 Web 服务器在内的许多服务,使其检查请求的 IP 地址是否可解析回某个名称,并在适当的情况下,检查请求主机和 IP/地址是否正向和反向均匹配。对于反向区域,您只是创建用于记录 IP 地址与主机间关系的记录。
  • 根区域——这些区域提供“根”服务器的列表,根服务器包含有关 Internet 上的子域及其委托记录的信息。通过提供根区域文件,您可以让 DNS 服务器查询根 Internet 服务器中关于 Internet 上的其他主机的信息。

您的配置中的所有已配置区域都指定为主区域或辅助区域。主区域是主机(即该域的委托服务器)的区域。对于某个域来说,只有一个服务器可以是主服务器;域中被授权(也就是说,它们提供合格的响应)的其它服务器被分类为“辅助”或从属服务器。可以使用从属服务器来帮助分散负载,并在发生故障时提供恢复能力。本文稍后将会返回来讨论此问题。

对于您托管的每个区域文件,必须向 named.conf 文件添加区域部分(请参见清单 2)。

清单 2. 向 named.conf 文件添加区域部分
zone "mcslp.pri" in {
        file "pri/mcslp.pri.zone";
        type master;
};

此示例配置区域 mcslp.pri(用于标识仅在本地网络上的计算机的内部子域)、区域数据所在的文件(相对于 directory 选项)和该文件的类型。

在此例中,实际文件将位于 /var/bind/pri/mcslp.pri.zone 中。

清单 3 显示了该文件的内容示例(在此例中为一个“转发”区域),其主要将名称映射到 IP 地址。

清单 3. 区域文件
$TTL 86400
mcslp.pri.     IN     SOA     bear.mcslp.pri.
admin.mcslp.pri.     (
               2008021401;
serial
               3h     ;                         refresh
               1h     ;                         retry
               1w     ;                         expiry
               1h      ) ;                      minimum
mcslp.pri.          IN     NS     bear.mcslp.pri.     
mcslp.pri.          IN     A     192.168.0.2
bear.mcslp.pri.     IN     A     192.168.0.2
airong.wireless     IN     A     192.168.0.210     
...
mail                IN     CNAME         bear
www                 IN     CNAME         bear
mcslp.pri.          IN     MX     10     bear

该区域文件的开头部分指定了有关域的信息。在此例中,我们指定了域名和 SOA(Start of authority)信息。SOA 配置关于域的信息,以定义哪些服务器被分类为权威的(也就是说,它们为针对该域的查询提供合格的响应)。SOA 记录的其余内容配置一个序号(由其它 DNS 服务器用于确定其域数据副本是否为最新),以及用于更新信息的刷新和重试间隔(以秒为单位)。

在我们的示例中,只有一个服务器有资格提供关于域 bear.mcslp.pri 中的主机和其他数据的响应。提供主机名而不是 IP 地址是为了使您能够更改主机 IP 地址而不必更新 DNS SOA 记录。

然后该区域文件中的其余信息配置特定的 DNS 记录。DNS 能够包含的信息远不止是简单的名称到地址的映射数据,因此将 DNS 记录组织为不同的类型。

主要类型的列表包括:

  • A(地址)——指定给定名称的 IP 地址。
  • NS(名称服务器)——指定给定域的名称服务器。
  • CNAME(规范名称)——现有主机的别名。
  • MX(邮件交换器)——负责处理该域的电子邮件的服务器主机名。

对于域中的名称,可以简单地通过指定某个名称来暗示此名称在该域中,例如: bear IN A 192.168.0.2

由于 DNS 知道此文件包含 mcslp.pri 域的信息,因此将把完整主机名展开为 bear.mcslp.pri。

通过设置完整主机名并在名称末尾追加一个句点,还可以指定完全限定的域名 (FQDN)。 amazon IN CNAME www.amazon.com

上面的示例将配置 amazon.mcslp.pri 主机名以用作 www.amazon.com 的别名。

返回到原先的主机列表,主机的配置如清单 4 所示。

清单 4. 配置主机
bear.mcslp.pri.     IN     A     192.168.0.2

Defines the IP address of bear.mcslp.pri as 192.168.0.2

airong.wireless     IN     A     192.168.0.210     

Defines the IP address of airong.wireless.mcslp.pri to 192.168.0.210. 
This is an example of setting up a subdomain within our original mcslp.pri 
domain for organizational purposes. In this case, the wireless.mcslp.pri 
is used to hold the details of wireless devices. 

mail                    IN     CNAME     bear
www                    IN     CNAME     bear

Creates aliases to bear.mcslp.pri. These are examples of utility aliases 
that can be used to identify different services. By using an alias, you 
can change the host ultimately responsible for these services without having 
to reconfigure clients with the updated host. 

mcslp.pri.          IN     MX     10     bear

邮件交换器记录由诸如 sendmail 和 postfix 等邮件传输代理在查找电子邮件发送目的地时使用。在上面的示例中,将 bear.mcslp.pri 配置为接受电子邮件中的域为 mcslp.pri 的任何电子邮件。

对于“反向”查找,也就是当您希望将 IP 地址解析到名称的时候,您应该设置一个附加的区域。反向区域具有将其标识为反向区域的特定域名。您可以参见清单 5 中给出的示例。

清单 5. 反向区域
$TTL 86400
0.168.192.in-addr.arpa.        IN      SOA     bear.mcslp.pri.
admin.mcslp.pri.      
           (       2007111900      ; serial
                   3h              ; refresh
                   1h              ; retry
                   1w              ; expiry
                   1h       )      ; minimum
0.168.192.in-addr.arpa.     IN      NS      bear.mcslp.pri.
2.0.168.192.in-addr.arpa.   IN      PTR     bear.mcslp.pri.

域是 IP 地址的类部分(按相反顺序),然后放在 in-addr.arpa 域中。例如,C 类地址 192.168.0.x 中的 IP 地址定义在 0.168.192.in-addr.arpa 域中,如清单 4 所示。

头和 NS(名称服务器)记录与前面相同。IP 地址到主机名的映射是使用 PTR(指针)记录来定义的。域中的每个对应的“名称到 IP 地址”条目应该具有其中一个 PTR 记录。

要将反向域映射添加到 named 配置,可以在 named.conf 文件中以相同的方式指定域和域文件(请参见清单 6)。

清单 6. 添加反向域映射
zone "0.168.192.in-addr.arpa" IN {
        file "pri/db.192.168.0";
        type master;
};

还应该配置“hint”区域,此区域引用根服务器和 localhost 转发和反向域,以便 localhost 和 127.0.0.1(本地主机 IP 地址)的解析能够正确工作。在 BIND 源代码中可以找到这些区域配置的示例,并且通常也是由 BIND 安装所附带的。清单 7 显示了 named.conf 区域条目。

清单 7. named.conf 区域条目
zone "." IN {
        type hint;
        file "named.ca";
};

zone "localhost" IN {
        type master;
        file "pri/localhost.zone";
        allow-update { none; };
        notify no;
};

zone "127.in-addr.arpa" IN {
        type master;
        file "pri/127.zone";
        allow-update { none; };
        notify no;
};

一旦配置了区域并添加了区域文件,就可以启动 named 守护进程了。对于大多数 UNIX/Linux 发行版本,您可以使用 /etc/init.d 中的脚本来完成此任务: # /etc/init.d/named start.

对于 Solaris 10,可以使用 svcadm: # svcadm enable bind

在 named 守护进程开始运行以后,确保编辑 /etc/resolv.conf 文件(请参见清单 8),以配置域和提供响应的 DNS 服务器:

清单 8. 编辑 /etc/resolv.conf 文件以配置域和 DNS 服务器
domain mcslp.pri
nameserver 192.168.0.2

您可能还需要编辑 /etc/nsswitch.conf 文件,以便将主机名查找重定向到 DNS 服务。例如,首先使用本地文件,然后才借助 DNS: hosts: files dns.

您现在应该能够使用 dig 从 DNS 查找主机,dig 是一个查询 DNS 服务器中的信息的工具。清单 9 显示了查找 bear.mcslp.pri 时的结果。

清单 9. 查找 bear.mcslop.pri 时的结果
# dig bear.mcslp.pri

; <<>> DiG 9.3.4-P1 <<>> bear.mcslp.pri
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 858
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;bear.mcslp.pri.                        IN      A

;; ANSWER SECTION:
bear.mcslp.pri.         86400   IN      A       192.168.0.2

;; AUTHORITY SECTION:
mcslp.pri.              86400   IN      NS      bear.mcslp.pri.

;; Query time: 1 msec
;; SERVER: 192.168.0.2#53(192.168.0.2)
;; WHEN: Wed Feb 20 18:08:34 2008
;; MSG SIZE  rcvd: 62

输出显示了所查询的服务器,以及返回的完整 DNS 记录。


分散负载

DNS 是一个分布式服务,只要知道是谁在请求信息,就有多个服务器能够响应某个给定的查询。除了转发 DNS 请求和递归性质以外,还可以将多个服务器配置为某个特定域的“权威”DNS。辅助或从属服务器通过域 NS 记录被委托为有资格提供响应。

辅助 DNS 服务器直接从主 DNS 服务器传输其区域信息,并在本地保留副本。然后可以将客户端配置为使用一个或多个负责某个域的 DNS 服务器。这可以帮助减小请求负载,同时还确保在发出请求时,如果主服务器(或另一个从属服务器)发生故障,另一个服务器将能为客户端解析查询提供答案。

要向您的配置添加更多的 DNS 服务器,可以首先编辑区域文件,并为同样将承载该域的每个从属服务器添加 NS 记录。这可以确保从属服务器将返回针对该域的查询的权威答案。

然后,向 named.conf 文件添加一个条目,其中指定类型为“slave”的域名,然后提供能够将域副本传输到从属服务器的合格“master”的列表。例如,为 mcslp.pri 域设置一个从属服务器(请参见清单 10)。

清单 10. 为 mcslp.pri 域设置从属服务器
zone "mcslp.pri" IN {
     type slave;
     file "sec/mcslp.pri";
     masters { 192.168.0.2; };
};

现在在从属服务器上重新加载或启动 named 服务并检查日志。您应该看到相关条目,其中报告域已成功传输到从属服务器(请参见清单 11)。

清单 11. 在从属服务器上重新加载 named 服务
Feb 20 18:17:41 tweedledum named[27142]: running
Feb 20 18:17:41 tweedledum named[27142]: zone mcslp.pri/IN: Transfer started.
Feb 20 18:17:41 tweedledum named[27142]: transfer of 'mcslp.pri/IN' 
                    from 192.168.0.2#53: connected using 192.168.0.6#53905
Feb 20 18:17:41 tweedledum named[27142]: zone mcslp.pri/IN: 
                   transferred serial 2008022000
Feb 20 18:17:41 tweedledum named[27142]: transfer of 'mcslp.pri/IN' 
                   from 192.168.0.2#53: end of transfer

现在可以将新的从属服务器的 IP 地址添加到要查询的有效 IP 地址的列表中。


总结

DNS 系统的核心是将 Internet 和本地网络上大家都非常熟悉的名称解析为 IP 地址。尽管我们认为 DNS 系统理当如此,但它实际上是一个设计良好的服务,用于分配和委托 Internet 上的查询和区域,并使您可以创建自己的网络中的自定义区域。

在本文中,我们了解了 DNS 服务的基本工作方式,以及该工作方式如何不仅与解析本地地址的内部过程相关,而且还与 Internet 上的地址相关。我们还研究了如何创建简单的 DNS 设置以便在本地网络上使用,以及该设置如何与 Internet 名称解析集成在一起。

参考资料

学习

获得产品和技术

  • ISC BIND 是 Internet上的主要 DNS 服务器守护进程,并作为标准包括在许多 Unix 和 Linux 分发版本中。
  • syslog-ng 是包括改进和增强的 syslog 服务的开源实现,使 syslog 服务成为更通用的日志记录机制。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=304687
ArticleTitle=系统管理工具包: 理解 DNS
publish-date=04282008