dig是一个强大而灵活的工具,用于查询域名系统(DNS)服务器。在本文中,我们将深入探讨它的工作原理以及它能告诉您什么。dig是一个强大而灵活的工具,用于查询DNS名称服务器。它执行DNS查询并显示参与该过程的名称服务器返回的答复以及与搜索相关的详细信息。系统管理员和DNS管理员经常使用dig来帮助解决DNS问题。在这篇文章中,我们将深入探讨它的工作原理,看看它能告诉我们什么。在开始之前,对DNS(域名系统)的工作原理有一个基本的印象是很有帮助的。它是全球互联网的重要组成部分,因为它提供了一种查找世界各地服务器的方法,以便您可以连接到它们。您可以将其视为互联网的地址簿,任何正确连接到互联网的系统都应该能够使用它来查找任何正确注册的服务器的IP地址。开始使用digdig工具通常默认安装在Linux系统上。下面是带有一点注释的dig命令示例:$digwww.networkworld.com;<<>>DiG9.16.1-Ubuntu<<>>www.networkworld.com<==您使用的是哪个版本的dig;;全局选项:+cmd;;得到答案:;;->>HEADER<<-操作码:QUERY,状态:NOERROR,id:6034;;标志:qrrdra;查询:1,答案:2,权限:0,附加:1;;选择伪部分:;EDNS:版本:0,标志:;UDP:65494;;问题部分:<==您的查询详情;www.networkworld.com。在一个;;答案部分:<==结果www.networkworld.com。3568INCNAMEidg.map.fastly.net.idg.map.fastly.net。30INA151.101.250.165;;查询时间:36毫秒<==查询时间;;服务器:127.0。0.53#53(127.0.0.53)<==本地缓存解析器;;时间:美国东部时间2020年7月24日星期五19:11:42<==查询时间;;MSGSIZErcvd:97<==numberofbytesreturned如果你收到这样的回复,是不是好消息?简短的回答是“是”。你得到了及时的回应。状态字段(状态:NOERROR)显示没有问题。您正在连接到一个可以提供所请求信息的名称服务器,并得到一个回复??,告诉您有关您查询的系统的一些重要细节。简而言之,您已验证您的系统与域名系统相处良好。其他可能的状态指示符包括:SERVFAIL:查询的名称存在,但没有数据或现有数据无效。NXDOMAIN:查询的名称不存在。REFUSED:请求的权威服务器中不存在该区域的数据,在这种情况下,未设置基础结构来提供响应。举个例子,如果你要查找一个不存在的域名,你会看到什么?$挖cannotbe.org;<<>>DiG9.16.1-Ubuntu<<>>cannotbe.org;;全局选项:+cmd;;得到答案:;;->>HEADER<<-操作码:QUERY,状态:NXDOMAIN,id:35348;;标志:qrrdra;QUERY:1,ANSWER:0,AUTHORITY:0,ADDITIONAL:1一般来说,dig会比ping给出更多的细节,如果域不存在,ping会回复“名称或服务未知”。当您查询一个合法系统时,您可以看到DNS对该系统了解多少、这些记录是如何配置的以及检索该数据需要多长时间。(LCTT译注:dig也提供了比nslookup更多的数据。另外,dig使用的是操作系统的解析库,而nslookup使用的是自己提供的解析库,有时会导致不同的行为。最后,有趣的一点是,dig返回的格式符合BIND区域文件格式。)事实上,有时当ping根本无法响应时dig可以响应,并且当您试图确定连接问题时,此信息非常有用。.DNS记录类型和标志在上面的第一个查询中,我们可以看到CNAME和A记录都有问题。CNAME(规范名称)就像一个别名,将一个域名指向另一个域名。您查询的大多数系统不会有CNAME记录,只有A记录。如果你运行diglocalhost,你会看到一个指向127.0.0.1的A记录——这是每个系统使用的“环回”地址。A记录用于将名称映射到IP地址。DNS记录类型包括:A或AAAA:IPv4或IPv6地址CNAME:别名MX:邮件交换器NS:名称服务器PTR:反向条目,可让您根据IP地址查找系统名称SOA:表示权限记录beginsTXT一些相关的文本我们还可以在上面输出的第五行看到一系列的“标志”。这些在RFC1035中定义-它定义了DNS标头中包含的标志,甚至显示了标头的格式。1111110123456789012345+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|ID|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|二维码|操作码|AA|TC|RD|RA|Z|RCODE|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|QDCOUNT|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|计数|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|NSCOUNT|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+|会计|+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ontop在初始查询中,第五行显示的标志是:qr=queryrd=doarecursivequeryra=recursivedataavailableRFC中描述的其他标志包括:aa=authoritativeanswercd=checkdisabledad=truedataopcode=one4bitsFieldtc=truncatedz(unused)添加+trace选项如果添加+trace选项,您将从dig中获得更多输出。它添加了更多信息,显示您的DNS查询如何通过名称服务器的层次结构找到您正在寻找的答案。下面显示的所有NS记录都反映了名称服务器-这只是您将看到的数据的第一部分,因为查询通过名称服务器的层次结构跟踪您正在寻找的内容:$dig+tracenetworkworld.com;<<>>DiG9.16.1-Ubuntu<<>>+tracenetworkworld.com;;全局选项:+cmd。84895INNSk.root-servers.net..84895INNSe.root-servers.net..84895INNSm.root-servers.net..84895INNSh.root-servers.net..84895INNSc.root-servers.net..84895INNSf.root-servers.net..84895INNSa.root-servers.net..84895INNSg.root-servers.net..84895INNSl.root-servers.net..84895INNSd.root-servers.net..84895INNSb.root-servers.net..84895INNSi.root-servers.net..84895INNSj.root-servers.net.;;在28毫秒内从127.0.0.53#53(127.0.0.53)接收到262个字节...最终,您将获得直接链接到您的请求的信息:networkworld.com。300在151.101.2.165networkworld.com。300在151.101.66.165networkworld.com。300在151.101.130.165networkworld.com。300INA151.1061.19.com。14400INNSns-d.pnap.net.networkworld.com。14400INNSns-a.pnap.net.networkworld.com。14400INNSns0.pcworld.com.networkworld.com。14400INNSns1.pcworld.com.networkworld.com。14400INNSns-b.pnap.net.networkworld.com。14400INNSns-c.pnap.net。;;在116毫秒内从70.42.185.30#53(ns0.pcworld.com)接收到269个字节以选择响应者您可以使用@符号指定特定的名称服务器来处理您的查询在这里,我们要求Google的主域名服务器响应我们的查询:$dig@8.8.8.8networkworld.com;<<>>DiG9.16.1-Ubuntu<<>>@8.8.8.8networkworld.com;(找到1个服务器);;全局选项:+cmd;;得到答案:;;->>HEADER<<-操作码:QUERY,状态:NOERROR,id:43640;;标志:qrrdra;查询:1,答案:4,权限:0,附加:1;;选择伪部分:;EDNS:版本:0,标志:;UDP:512;;问题部分:;networkworld.com。在一个;;答案部分:networkworld.com。299在151.101.66.165networkworld.com。299在151.101.194.165networkworld.com。299在151.101.130.165networkworld.com。299INA151.101.2.165;;查询时间:48毫秒;;服务器:8#5.8(.8.8);;时间:美国东部时间2020年7月25日星期六11:21:19;;MSGSIZErcvd:109下面显示的命令对8.8.8.8IP地址进行反向查找,以揭示它属于Google的DNS服务器。$nslookup8.8.8.88.8.8.8.in-addr.arpa名称=dns.google。总结dig命令是了解DNS如何工作以及在出现连接问题时进行故障排除的重要工具。
