DNS 和 DNS 工具简介
域名系统 (DNS) 在幕后默默运行,就像自来水一样,我们通常认为它是理所当然的。这个系统能够正常工作,证明了设计和开发 DNS 以及名为 Bind 的开源软件包的黑客们的卓越能力,他们为世界引入了可扩展的互联网。在 DNS 和 Bind 出现之前,/etc/hosts 是将 IP 地址转换为人类友好的主机名以及反之亦然的唯一方法。
本文将介绍 DNS 的概念以及您可以使用其检查 DNS 信息的三个命令:host、dig 和 nslookup。
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 书籍之一,例如 O'Reilly 的 DNS 和 Bind 以及 Sybex 的 Linux DNS 服务器管理。
区域文件数据库记录将 DNS 信息分为三种主要类型:NS(名称服务器)记录、MX(邮件交换)记录和 A(地址)记录。NS 记录指示名称服务器。MX 记录指示处理电子邮件传递的主机;优先级 (pri) 数字指示邮件服务器的使用顺序,数字越低优先级越高。A(地址)记录将主机名映射到 IP 地址,即机器的真实名称。
这是最简单的 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 所示。
既然您知道了 www.linuxjournal.com 的 IP 地址,您可能需要确保反向查找有效。反向查找检查反向区域文件是否将 IP 地址映射到主机名
host 207.178.22.49 49.22.178.207.IN-ADDR.ARPA domain name pointer www.linuxjournal.com
这个强大的命令收集并以名称服务器可以直接使用的格式返回 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.
您可以将此工具用作单行命令,也可以交互式使用它,这使其与其他 DNS 命令区分开来。启动 nslookup 后,键入 set all 以列出默认选项。与 dig 一样,您可以选择要查询的服务器(名称服务器),并且可以决定要关注的 DNS 信息类型。
正如您可以交互式地向 nslookup 发出命令一样,您也可以通过启动 .nslookuprc 文件来更改初始默认值。.nslookup 的格式是每行一个命令
set type=NS set domain=srvns.new-host.com set timeout=10
