查询 DNS 记录
众所周知,DNS记录通常用于将人类可读的地址转换为IP地址。这意味着您无需通过输入IP地址来访问网站,而只需输入易于记忆的DNS地址即可。我不会在这里过多讨论DNS记录的工作原理,但是如果您想了解更多信息,那么您可以阅读令人敬畏且易于理解的DNS是如何工作的commic。
在这篇文章中,我将研究不同的工具,这些工具可用于查找有关DNS记录的更多信息,以及它们返回的结果类型。我不会详细介绍这些工具,但足以让您开始查找DNS记录。
谁是
一段时间以来,我主要依靠使用whois工具来查找有关DNS地址的更多信息,所以我想我会先谈谈它。这主要是有效的并产生了有效的结果,但是当我真正坐下来找到适合这项工作的工具时,我发现whois真的不适合那种任务。该域名注册命令有它的DNS工具套件的地方,但它确实是适合找出有关地址背后的组织,而不是对DNS记录本身的更多信息。该工具通常默认安装在大多数平台上(甚至Windows),但您可能必须在某些Linux系统上单独安装它('sudoapt-getinstallwhois'应该足以用于Debian构建)。还有大量的在线whois工具可用,因此找到一个可以运行的工具并不困难。
运行whois查询的过程非常简单,但需要注意一两件事。在命令行中,您可以键入此命令以获取有关域名的信息。
whoisdomain.tld
这将返回有关地址所有者的大量输出,但通常不会有太多其他内容。这在很大程度上取决于运行顶级域(TLD)的组织,在.co.uk域的情况下是Nominet。您可能会注意到,虽然我们现在知道DNS名称服务器的IP地址,但我们仍然不清楚网站的托管位置。凡域名注册开始出现故障时,您正在寻找有关DNS记录本身,而不是注册人信息。这是针对域bbc.co.uk运行whois的示例。
$ whois bbc.co.uk Domain name: bbc.co.uk Registrant: British Broadcasting Corporation Registrant type: UK Corporation by Royal Charter Registrant's address: British Broadcasting Corporation Broadcasting House Portland Place London W1A 1AA United Kingdom Data validation: Nominet was able to match the registrant's name and address against a 3rd party data source on 12-Jun-2014 Registrar: British Broadcasting Corporation [Tag = BBC] URL: http://www.bbc.co.uk Relevant dates: Registered on: before Aug-1996 Expiry date: 13-Dec-2016 Last updated: 12-Nov-2015 Registration status: Registered until expiry date. Name servers: ns3.bbc.co.uk 156.154.66.17 2610:a1:1015::17 ns3.bbc.net.uk ns4.bbc.co.uk 156.154.67.17 2001:502:4612::17 ns4.bbc.net.uk WHOIS lookup made at 21:14:50 16-Nov-2015 -- This WHOIS information is provided for free by Nominet UK the central registry for .uk domain names. This information and the .uk WHOIS are: Copyright Nominet UK 1996 - 2015. You may not access the .uk WHOIS or use any data from it except as permitted by the terms of use available in full at http://www.nominet.uk/whoisterms, which includes restrictions on: (A) use of the data for advertising, or its repackaging, recompilation, redistribution or reuse (B) obscuring, removing or hiding any or all of this notice and (C) exceeding query rate or volume limits. The data is provided on an 'as-is' basis and may lag behind the register. Access may be withdrawn or restricted at any time.
当开始使用whois进行DNS查找时,您可能已经输入了整个地址(即包括开头的www)并遇到错误。这是因为该地址并未仅转换为域名,因此会根据Nominet.co.uk数据库查询域“www.bbc”。如果您过去使用过whois,那么您可能至少见过一次这样的错误消息。
$ whois www.bbc.co.uk Error for "www.bbc.co.uk". This domain cannot be registered because it contravenes the Nominet UK naming rules. The reason is: the domain name contains too many parts. WHOIS lookup made at 21:15:16 16-Nov-2015 -- This WHOIS information is provided for free by Nominet UK the central registry for .uk domain names. This information and the .uk WHOIS are: Copyright Nominet UK 1996 - 2015. You may not access the .uk WHOIS or use any data from it except as permitted by the terms of use available in full at http://www.nominet.uk/whoisterms, which includes restrictions on: (A) use of the data for advertising, or its repackaging, recompilation, redistribution or reuse (B) obscuring, removing or hiding any or all of this notice and (C) exceeding query rate or volume limits. The data is provided on an 'as-is' basis and may lag behind the register. Access may be withdrawn or restricted at any time.
出于这个原因,输入正确的域名地址很重要,不存在任何子域字符串。
主持人
顾名思义,host是一个用于执行DNS查找的简单实用程序,通常用于将域名转换为IP地址,反之亦然。默认情况下,主机命令将返回为特定地址找到的DNS记录的顶行细分,该地址通常转换为Web主机。当我第一次开始寻找除了通常的whois查询之外的其他工具时,我很快就发现了有关主机的信息,并没有回头。该工具可能是最简单的DNS查找工具,因为默认情况下它只是打印出DNS条目的地址,其他的很少。该工具可在大多数Linux平台(包括OSX)上使用,但如果不存在,安装也很简单。主持人使用方式如下。
hostdomain.tld
以下是使用主机查找有关DNS地址www.bbc.co.uk的更多信息的示例。
$ host www.bbc.co.uk www.bbc.co.uk is an alias for www.bbc.net.uk. www.bbc.net.uk has address 212.58.244.71 www.bbc.net.uk has address 212.58.244.70
您还可以使用-a标志让主机返回DNS查询的整个结果。
$ host -a www.bbc.co.uk Trying "www.bbc.co.uk" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39383 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bbc.co.uk. IN ANY ;; ANSWER SECTION: www.bbc.co.uk. 211 IN CNAME www.bbc.net.uk. Received 57 bytes from 192.168.1.254#53 in 34 ms
上面的响应显示了发送到DNS服务器的查询,然后是查询的答案(在ANSWERSECTION文本下)。这表明地址www.bbc.co.uk实际上是地址www.bbc.net.uk的CNAME,通过进行另一次DNS查找,我们可以找到根IP地址。基本主机命令还会探测此地址以查找主机的根IP地址。地址后面的数字(在本例中为211)是地址的生存时间(或TTL)。
正如我上面提到的,您还可以使用主机来查找有关IP地址的更多信息,只需将DNS地址替换为IP地址即可。在这里,我们将上述Web服务器之一转换为DNS地址。
$ host 212.58.244.71 71.244.58.212.in-addr.arpa domain name pointer bbc-vip116.telhc.bbc.co.uk.
挖
dig或(域信息搜索器)是另一个可用于查询DNS名称服务器的实用程序。这更像是一种网络管理工具,可用于直接查询DNS服务器,并没有太多细节。默认dig命令的工作方式与带有-a标志的主机命令大致相同。该工具是Debian构建上的dnsutils包的一部分,也是Redhat平台上bind-utils包的一部分。可以通过以下方式使用dig。
digdomain.tld
这是针对地址www.bbc.co.uk运行的正常dig查询。
$ dig www.bbc.co.uk ; <<>> DiG 9.8.3-P1 <<>> www.bbc.co.uk ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64114 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.bbc.co.uk. IN A ;; ANSWER SECTION: www.bbc.co.uk. 44 IN CNAME www.bbc.net.uk. www.bbc.net.uk. 56 IN A 212.58.244.70 www.bbc.net.uk. 56 IN A 212.58.244.71 ;; Query time: 110 msec ;; SERVER: 192.168.1.254#53(192.168.1.254) ;; WHEN: Sun Nov 22 18:56:03 2015 ;; MSG SIZE rcvd: 89
dig命令的输出最初看起来可能很复杂,但它实际上只是对DNS服务器的查询、收到的答案以及一些附加查询统计信息的图片。如上所示,该工具还会跟踪任何CNAME记录到其最终IP地址,这意味着我们无需进一步调查DNS记录即可找到该信息。因此,该工具是主机的一个很好的替代品,但默认会产生复杂的输出。
nslookup
nslookup是一个可以用来查询Internet域名服务器的程序。这个工具的好处是它在几乎所有操作系统上都普遍可用,因此它通常被Windows管理员使用。该工具是Debian构建上的dnsutils包的一部分,也是Redhat平台上bind-utils包的一部分。nslookup可以通过以下方式使用。
nslookupdomain.tld
这是在DNS地址www.bbc.co.uk上运行nslookup的示例。
$ nslookup www.bbc.co.uk Server: 192.168.1.254 Address: 192.168.1.254#53 Non-authoritative answer: www.bbc.co.uk canonical name = www.bbc.net.uk. Name: www.bbc.net.uk Address: 212.58.244.26 Name: www.bbc.net.uk Address: 212.58.244.27
此响应中的第一件事是我的无线路由器的地址(192.168.1.254),这是请求路由的地址(因此得名)。此处的其余输出描述了一个事实,即www.bbc.co.uk地址是一个CNAME,它指向两个www.bbc.net.uk主机。运行nslookup时要小心,你还包括一些参数,因为它会让你进入交互模式。总的来说,这不是一件坏事,但对于不习惯该工具的人来说,这可能会有点意外。
从所有这些工具中,我们可以看到BBC为其网站运行某种形式的负载平衡解决方案,这是有道理的,因为我确信它处理大量流量。
全球DNS传播
所有这些工具都适用于从一个地方检查DNS记录,但DNS地址有一个被缓存到世界各地的习惯。这实际上意味着,当您更新DNS记录时,世界上的每个人可能最多需要一天时间才能看到该更改。这称为全局传播。有一些方法可以解决这个问题,例如降低DNS条目的生存时间(TTL)值,以便将其缓存的时间更短,从而可以更快地更新DNS记录。
测试此全局的一种方法是运行来自世界不同地区的DNS查询。对于我们大多数人来说,这是不可行的,但是像whatsmydns这样的网站允许您查看来自世界各地多个名称服务器的DNS记录。whatsmydns站点使我能够检查DNS更改时的全球DNS传播并管理客户期望。
查找其他子域
我们知道BBC有一个www子域,因为我们已经在上面进行了测试,但是我们如何找到DNS条目的所有子域?这里的简短回答是你不能,除非你被授权这样做。如果您拥有DNS服务器,那么您可以制作将返回所有子域的DNS查询,但没有此授权,这是不可能的。
不过有一个替代方案。通过向WolframAlpha询问域,我们可以找出是否存在任何其他子域。这些子域是公共域,但这正是我们真正要寻找的。要在WolframAlpha上搜索子域,请执行以下操作。
访问WolframAlpha并搜索相关域。在我们的示例中,我们搜索www.bbc.co.uk。
在所有bbc.co.uk的网络统计标题下:单击链接子域
您现在将看到bbc.co.uk域的子域列表。这包括news.bbc.co.uk和play.bbc.co.uk
DNS监控
出于某种原因,我看到DNS问题有所增加,导致我管理的站点停机。这可能很简单,比如DNS条目配置错误,但我也看到DNS服务完全不可用。无论哪种方式,DNS记录对于站点的可用性如此重要这一事实意味着快速发现问题至关重要。在对DNS记录进行故障排除和调查时,我上面提到的工具很重要,但您需要使用某种形式的监控工具以及这些工具。pingdom工具不仅会监控您的网络主机,还会监控您的DNS记录。这样,您可以轻松地发现问题并朝着正确的方向前进以纠正它们。有了pingdom,就可以很容易地立即正确地看到问题所在,并采取行动来解决它,