当前位置: 首页 > 系统文章

如何在Linux上使用dig命令

时间:2020-04-06     来源:win10官网     游览量:

  Linux dig命令允许您查询DNS服务器并执行DNS查找。您还可以找到IP地址返回的域。我们将向您展示如何!

  dig命令的工作方式

  人们使用Linux dig命令来查询域名系统(DNS)服务器。dig是Domain Information Groper的首字母缩写。使用dig,您可以查询DNS服务器以获取有关各种DNS记录的信息,包括主机地址,邮件交换,名称服务器和相关信息。它旨在成为诊断DNS问题的工具。但是,您可以使用它来四处浏览并了解有关DNS的更多信息,DNS是保持Internet路由流量的中央系统之一。

  Internet使用Internet协议(IP)地址来标识Web上的“位置”,但是人们使用域名。当您在Web浏览器或SSH客户端等应用程序中键入域名时 ,必须将某些内容从域名转换为实际IP地址。这就是域名系统的用武之地。

  当您将域名与任何连接到Internet的程序一起使用时,本地路由器将无法解析该域名(除非从先前的请求中缓存了该域名)。因此,路由器可以查询Internet服务提供商(ISP)的DNS服务器,或者已配置要使用的任何其他服务器。这些称为DNS前体服务器。

  如果DNS服务器最近从同一台计算机上的其他人收到相同的请求,则答案可能在其缓存中。如果是这样,它只是将相同的信息发送回您的程序。

  如果DNS前体服务器无法在其缓存中找到域,则它将与DNS 根名称服务器联系。根服务器不会保存将域名解析为IP地址所需的信息,但是会保留可以帮助您处理请求的服务器列表。

  根服务器查看您的域名所属的顶级域,例如.COM,.ORG,.CO.UK等。然后,它将处理这些类型的域的顶级域服务器列表发送回DNS前体服务器。然后,DNS前体服务器可以再次向顶级域服务器发出请求。

  顶级域服务器将 权威名称服务器 的详细信息(存储域的详细信息)发送回DNS前体服务器。然后,DNS服务器查询托管您最初在程序中输入的域区域的权威名称服务器。权威名称服务器将IP地址发送回DNS服务器,DNS服务器又将其发送回您。

  安装挖

  dig已安装在我们的Ubuntu 18.04和Fedora 30计算机上。但是,我们必须使用以下命令将其安装在Manjaro 18.04计算机上:

  sudo pacman -Sy绑定工具

  挖掘入门

  在第一个示例中,我们将返回与域名关联的IP地址。通常,多个IP地址与一个域名相关联。例如,如果使用负载平衡,通常会发生这种情况。

  我们使用+short查询选项,如下所示,它使我们得到了简洁的响应:

  挖howtogeek.com + short

  为我们列出了与howtogeek.com域关联的所有IP地址。另一方面,如果我们不使用+short查询选项,则输出非常冗长。

  因此,我们键入以下内容将其通过管道传递less:

  挖howtogeek.com | 减

  输出显示在中less,如下所示。

  这是完整的清单:

  ; << >> DiG 9.11.3-1ubuntu1.11-Ubuntu << >> howtogeek.com

  ;; 全局选项:+ cmd

  ;; 得到了答案:

  ;; ->> HEADER <<-操作码:QUERY,状态:NOERROR,ID:12017

  ;; 标志:qr rd ra; 查询:1,答案:4,权限:0,附加:1

  ;; 选择伪指令:

  ; EDNS:版本:0,标志:;udp:65494

  ;; 问题部分:

  ; howtogeek.com。在一个

  ;; 解答部分:

  howtogeek.com。3551在A 151.101.194.217

  howtogeek.com。3551在A 151.101.130.217

  howtogeek.com。3551在A 151.101.66.217

  howtogeek.com。3551在A 151.101.2.217

  ;; 查询时间:0毫秒

  ;; 服务器:127.0.0.53#53(127.0.0.53)

  ;; 时间:2020年3月22日,星期日:07:44:37

  ;; MSG大小RCV:106

  让我们逐一剖析。

  标头

  首先,让我们看一下Header中的内容:

  ; << >> DiG 9.11.3-1ubuntu1.11-Ubuntu << >>

  ;; 全局选项:+ cmd

  ;; 得到了答案:

  ;; ->> HEADER <<-操作码:QUERY,状态:NOERROR,ID:12017

  ;; 标志:qr rd ra; 查询:1,答案:4,权限:0,附加:1

  现在,这就是所有这些的含义:

  • 第一行:查询的版本dig和域。

  • 全局选项: 我们将看到,您可以用来dig同时查询多个域。此行显示已应用于所有域查询的选项。在我们的简单示例中,它只是默认的+cmd (命令)选项。

  • 操作码:查询:这是所请求的操作类型,在这种情况下为query。该值也可以iquery用于反向查询,或者status 仅用于测试DNS系统的状态。

  • 状态:无错误:没有错误,请求已正确解决。

  • ID:12017:此随机ID将请求和响应绑定在一起。

  • 标志:QR RD RA:这些立场query,recursion desired和recursion available。递归是DNS查找的一种形式(另一种是迭代的)。您可能还会看到AA,代表权威答案,表示权威名称服务器提供了响应。

  • 查询:1:此会话中的查询数,是1。

  • 答案:4:此响应中的答案数为4。

  • 权限:0:来自权威名称服务器的答案数量,在这种情况下为零。该响应是从DNS前体服务器的缓存返回的。答复中将没有权威部分。

  • 附加:1: 还有一条附加信息。(奇怪的是,没有列出任何内容,除非此值是两个或更大。)

  选择伪切片

  接下来,我们在“选择伪”部分中看到以下内容:

  ;; 选择伪指令:

  ; EDNS:版本:0,标志:;udp:65494

  让我们分解一下:

  • EDNS:版本0: 正在使用的DNS扩展系统的版本。EDNS通过扩展用户数据报协议(UDP)数据包的大小来传输扩展的数据和标志。这由可变大小标志指示。

  • 标志:未使用任何标志。

  • udp:4096: UDP数据包大小。

  问题部分

  在“问题”部分,我们看到以下内容:

  ;; 问题部分:

  ; howtogeek.com。在一个

  这是什么意思:

  • howtogeek.com:我们正在查询的域名。

  • IN:我们正在进行互联网类查询。

  • 答:除非我们另外指定,否则 dig将向DNS服务器请求A(地址)记录。

  答案部分

  答案部分包含我们从DNS服务器收到的以下四个答案:

  howtogeek.com。3551在A 151.101.194.217

  howtogeek.com。3551在A 151.101.130.217

  howtogeek.com。3551在A 151.101.66.217

  howtogeek.com。3551在A 151.101.2.217

  这些答案的含义如下:

  • 3551:这是生存时间(TTL),这是一个32位有符号整数,其中包含可以缓存记录的时间间隔。过期时,必须将数据用于请求的答复中,直到DNS服务器刷新了该数据。

  • IN:我们进行了Internet类查询。

  • 答:我们要求DNS服务器提供A记录。

  统计科

  统计信息是最后一部分,其中包含以下信息:

  ;; 查询时间:0毫秒

  ;; 服务器:127.0.0.53#53(127.0.0.53)

  ;; 时间:2020年3月22日,星期日:07:44:37

  ;; MSG大小RCV:106

  这是我们得到的:

  • 查询时间:0毫秒:获得响应所花费的时间。

  • 服务器:127.0.0.53#53(127.0.0.53):响应的DNS服务器的IP地址和端口号。在这种情况下,它指向本地缓存存根解析器。这会将DNS请求转发到配置的任何上游DNS服务器。在Manajro测试计算机上,此处列出的地址是8.8.8.8#53,这是Google的公共DNS服务。

  • 时间:星期三3月22日07:44:37美国东部夏令时间2020:发出请求时。

  • MSG大小rcvd:106:从DNS服务器接收的消息的大小。

  有选择性

  您不必满足于双唇和乱码的两个极端。该dig命令允许您有选择地从结果中包括或排除部分。

  以下查询选项将从结果中删除该部分:

  • + nocomments:不显示评论行。

  • + noauthority:不显示授权部分。

  • + noadditional:不显示其他部分。

  • + nostats:不显示“统计信息”部分。

  • +否答案:不显示答案部分。

  • + noall:什么也不要显示!

  +noall通常将查询选项与以上选项之一结合使用,以在结果中包括一个部分。因此,您无需输入一长串查询选项来关闭多个部分,而可以使用+noall它们将其全部关闭。

  然后,您可以使用以下包含查询选项将要查看的内容重新打开:

  • +评论:显示评论行。

  • + authority:显示权限部分。

  • +其他:显示其他部分。

  • + stats:显示“统计信息”部分。

  • + answer:显示答案部分。

  • +全部:显示所有内容。

  我们输入以下内容进行请求,并排除注释行:

  挖howtogeek.com +没有评论

  如果我们单独使用+noall查询选项,如下所示,我们将不会得到任何有用的输出:

  挖howtogeek.com + noall

  我们可以有选择地添加我们要查看的部分。要添加答案部分,我们输入以下内容:

  挖掘howtogeek.com + noall + answer

  如果输入以下内容打开+stats,我们还将看到“统计信息”部分:

  挖掘howtogeek.com + noall + answer +统计

  该+noall +answer组合经常使用。您可以根据需要将其他部分添加到命令行。如果要避免+noall +answer每次使用时都在命令行上键入 dig,可以将它们放在名为“ .digrc”的配置文件中。它位于您的主目录中。

  我们键入以下命令来创建一个具有 echo:

  回声“ + noall + answer”> $ HOME / .digrc

  然后,我们可以键入以下内容来检查其内容:

  猫.digrc

  这两个选项现在将应用于的所有将来使用dig,如下所示:

  挖ubuntu.org

  挖linux.org

  挖github.com

  本文dig的其余示例将使用此 配置文件。

  DNS记录

  返回到您的dig请求的信息是从DNS服务器上保存的不同类型的记录中提取的。除非我们要求其他内容,否则dig查询A(地址)记录。以下是常用的记录类型dig:

  • 一条记录: 将域链接到IP版本4地址。

  • MX记录: 邮件交换将发送到域的直接电子邮件记录到正确的邮件服务器。

  • NS Record:名称服务器记录将一个域(或子域)委派给一组DNS服务器。

  • TXT记录:文本记录存储有关域的基于文本的信息。通常,它们可能被用来禁止欺骗或伪造的电子邮件。

  • SOA记录:授权记录的开始可以保存有关该域的许多信息。在这里,您可以找到主要名称服务器,负责方,更改的时间戳记,区域刷新的频率以及重试和放弃的一系列时间限制。

  • TTL:生存时间是每个DNS记录的设置,它指定允许DNS前体服务器缓存每个DNS查询多长时间。该时间到期后,必须刷新数据以用于后续请求。

  • ANY:这告诉dig您返回可以的所有类型的DNS记录。

  指定A记录类型不会更改默认操作,即查询地址记录并获取IP地址,如下所示:

  挖redhat.com A

  要查询邮件交换记录,我们使用以下MX标志:

  挖yahoo.com MX

  名称服务器标志返回与顶级域关联的根名称服务器的以下名称:

  挖fedora.com NS

  要查询授权记录的开始,我们键入以下SOA标志:

  dig manjaro.com SOA

  TTL标志将向我们显示DNS服务器缓存中的数据保留时间。如果我们提出了一系列要求,我们会发现生存时间减少到零,然后跳回其初始值。

  我们输入以下内容:

  挖usa.gov TTL

  要查看文本记录,我们输入TX标志:

  挖usa.gov TXT

  指定DNS服务器

  如果要为请求使用特定的DNS服务器,则可以使用at符号(@)将其dig作为命令行参数传递给。

  对于默认的DNS服务器(请参阅下文),请dig在127.0.0.53引用本地缓存存根解析器。

  挖usa.gov +统计信息

  现在,我们键入以下内容以使用位于8.8.8.8的Google的公共DNS服务器:

  挖@ 8.8.8.8 usa.gov + stats

  对多个域使用挖掘

  我们可以dig在命令行上将多个域传递给,如下所示:

  挖ubuntu.org fedora.org manjaro.com

  如果您定期检查一组域,则可以将它们存储在文本文件中并将其传递给dig。文件中的所有域将被依次检查。

  我们的文件称为“ domains.txt”。我们将使用它cat来显示其内容,然后dig使用-f(file)选项将其传递给。我们输入以下内容:

  猫domains.txt

  挖-f domains.txt

  反向DNS查找

  如果您有IP地址,并且想知道它的去向,则可以尝试反向DNS查找。如果它解析为在DNS服务器上注册的服务器,则您可能能够找到其域。

  是否可以取决于PTR(指针记录)的存在。PTR将IP地址解析为完全限定的域名。但是,由于这些不是强制性的,因此它们并不总是存在于域中。

  让我们看看是否可以找到IP地址209.51.188.148将我们带到何处。我们使用-x(反向查找)选项键入以下内容:

  挖-x 209.51.188.148

  快点!IP地址解析为gnu.org。

  因为PTR是DNS记录,并且我们知道dig可以请求指定的DNS记录,所以我们不能只是要求dig为我们检索PTR吗?是的,我们可以,但是还需要做更多的工作。

  我们必须以相反的顺序提供IP地址,并.in-addr.arpa在末尾附加如下所示:

  挖ptr 148.188.51.209.in-addr.arpa

返回网站首页
60

上一篇:2020年Windows7用户仍然可以免费升级到Windows10


下一篇:如何使用Nextcloud构建自己的云文件同步

最新系统下载