DNS 和 DNS 工具简介

作者:Neil Anuskiewicz

域名系统 (DNS) 在幕后默默运行,就像自来水一样,我们通常认为它是理所当然的。这个系统能够正常工作,证明了设计和开发 DNS 以及名为 Bind 的开源软件包的黑客们的卓越能力,他们为世界引入了可扩展的互联网。在 DNS 和 Bind 出现之前,/etc/hosts 是将 IP 地址转换为人类友好的主机名以及反之亦然的唯一方法。

本文将介绍 DNS 的概念以及您可以使用其检查 DNS 信息的三个命令:hostdignslookup

DNS 是一个分布式的、分层数据库,权限从层次结构的顶部(或根)向下流动。当Linux Journal 注册 linuxjournal.com 时,他们获得了来自根级别或顶层实体的许可。互联网名称与数字地址分配机构 (ICANN) 和域名注册商将 linuxjournal.com 的权限转移给了 Linux Journal,现在 Linux Journal 有权创建子域名,例如 embedded.linuxjournal.com,而无需 ICANN 和域名注册商的参与。

当试图理解 DNS 的结构时,请将其想象成一棵倒置的树——UNIX 文件系统的结构也是如此。树的每个分支都位于一个权限 区域 内;这棵树的多个分支可以位于一个区域内。Linux Journal 可以选择保留 embedded.linuxjournal.com 的权限,或者他们可以将权限向下委派给其他人,这些人可以创建子域名,例如 zeus.embedded.linuxjournal.com。

存储域名信息的软件(通常是 Bind)被称为域名 名称服务器。单个名称服务器可以对多个区域具有权威性。所有区域都有一个主主服务器和一个辅助主服务器名称服务器,它们为其区域提供权威响应。

如果您查询的名称服务器对特定区域不具有权威性,则该名称服务器很可能仍会返回正确的信息。这是因为区域信息在整个互联网中传播,并且名称服务器会缓存它们不具有权威性的区域信息。

当您注册新的域名、将旧域名转移到新的主机或只是更改区域数据库文件时,新信息通常需要几天时间才能完全传播。在此过渡期间,非权威名称服务器通常会临时缓存有关您域名的过时信息。

您可能想知道当您使用互联网时,您如何融入这个过程。好吧,每当您使用 Web、Telnet、FTP 等时,您的软件都会使用解析器(DNS 的客户端),解析器是一组编译到 Mozilla 等程序中的库例程。当您键入 www.linuxjournal.com 时,解析器会设置对名称服务器的查询,名称服务器会完成将 www.linuxjournal.com 转换为 207.178.22.49 的工作,以便您可以访问该网站。

DNS 命令

要全面了解 DNS 和 DNS 命令,请阅读手册页,并购买市场上优秀的 DNS 书籍之一,例如 O'Reilly 的 DNS 和 Bind 以及 Sybex 的 Linux DNS 服务器管理

区域文件数据库记录将 DNS 信息分为三种主要类型:NS(名称服务器)记录、MX(邮件交换)记录和 A(地址)记录。NS 记录指示名称服务器。MX 记录指示处理电子邮件传递的主机;优先级 (pri) 数字指示邮件服务器的使用顺序,数字越低优先级越高。A(地址)记录将主机名映射到 IP 地址,即机器的真实名称。

host

这是最简单的 DNS 命令。它是一种快速确定主机名 IP 地址的方法

host www.linuxjournal.com
www.linuxjournal.com has address 207.178.22.49
www.linuxjournal.com mail is handled (pri=80)
by www.ssc.com
www.linuxjournal.com mail is handled (pri=10)
by mail.ssc.com
www.linuxjournal.com mail is handled (pri=40)
by cascadia.a42.com

-a 选项将以详细格式返回所有 DNS 信息,如清单 1 所示。

清单 1. 使用 -a 选项以详细格式显示 DNS 信息

既然您知道了 www.linuxjournal.com 的 IP 地址,您可能需要确保反向查找有效。反向查找检查反向区域文件是否将 IP 地址映射到主机名

host 207.178.22.49 49.22.178.207.IN-ADDR.ARPA
domain name pointer www.linuxjournal.com
dig(域名信息搜索器)

这个强大的命令收集并以名称服务器可以直接使用的格式返回 DNS 信息。因此,dig 在脚本中特别有用。您会发现使用 dig 查询特定名称服务器很容易,这使其成为缩小 DNS 问题来源的有用工具。

假设您刚刚将域名托管从 old-host.com 转移到 new-host.com。一位客户向您发送电子邮件,说当他登录到他的 ISP 时,他无法访问您的网站。您怀疑区域信息只是没有时间传播。因此,您找出相关 ISP 的 NS 记录

dig ns isp-in-question.com

;; ANSWER SECTION:
isp-in-question.com.  10H IN NS ns1.hugeupstream.com.
isp-in-question.com.  10H IN NS isp-in-question.com.
isp-in-question.com.  10H IN NS ns.isp-in-question.com.
isp-in-question.com.  10H IN NS ns.goodnameserver.com.

然后,您针对 ISP 的名称服务器检查您公司的网站

dig www.yourcompany.com @ns.isp-in-question.com

;; ANSWER SECTION:
www.yourcompany.com.       59m53s IN A   192.168.5.10
等一下,那是您的旧 IP 地址。看来 DNS 信息尚未完全传播。

接下来,您决定查看 old-host.com 是否已从其名称服务器中删除了旧的区域信息。“any”选项将检索所有 DNS 信息

dig any www.yourcompany.com @ns.old-host.com

;; ANSWER SECTION:
www.yourcompany.com.    1H IN A    192.168.200.250

;; AUTHORITY SECTION:
yourcompany.com.        1H IN NS   webns.new-isp.com.
yourcompany.com.        1H IN NS   srvns.new-isp.com.

在本例中,A 记录显示了您网站服务器的新 IP 地址,并显示了您域名的新权威名称服务器。这就是您希望找到的信息。

以下是最有用的 dig 查询类型:dig any(收集所有 DNS 信息)、dig ns(收集名称服务器信息)、dig mx(收集邮件交换器信息)和 dig a(收集网络地址信息)。

dig 命令还可以执行反向查找,输出格式适用于区域文件

dig -x 192.168.200.250
;; ANSWER SECTION: 250.200.168.192.in-addr.arpa.
4h11s IN PTR  www.yourcompany.com.
nslookup

您可以将此工具用作单行命令,也可以交互式使用它,这使其与其他 DNS 命令区分开来。启动 nslookup 后,键入 set all 以列出默认选项。与 dig 一样,您可以选择要查询的服务器(名称服务器),并且可以决定要关注的 DNS 信息类型。

清单 2. 使用 nslookup 的输出

正如您可以交互式地向 nslookup 发出命令一样,您也可以通过启动 .nslookuprc 文件来更改初始默认值。.nslookup 的格式是每行一个命令

set type=NS
set domain=srvns.new-host.com
set timeout=10
结论

ARPANET(互联网的前身)在 1970 年代拥有数百台主机。一个名为 HOSTS.TXT 的平面文件包含了每台主机的所有信息。系统管理员定期下载该文件并将信息放入他们的 /etc/hosts 文件中;查看您自己的 /etc/hosts 文件,大致了解该文件的外观。但是,这个系统是不可扩展的。DNS 的出现使互联网的指数级增长成为可能。

An Introduction to DNS and DNS Tools
Neil Anuskiewicz 居住在俄勒冈州波特兰市并在此工作。当他不坐在电脑前时,他喜欢徒步旅行和攀岩。请发送电子邮件至 neil@pacifier.com 联系 Neil。
加载 Disqus 评论