0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Linux使用dig命令查询DNS

CHANBAEK 来源:myfreax 作者:myfreax 2022-12-02 17:44 次阅读

Dig全称Domain Information Groper。是一个功能强大的命令行工具,用于查询DNS域名服务器。

使用dig命令,您可以查询各种DNS记录的信息,包括主机地址,邮件交换和域名服务器。

它是系统管理员中用于排除DNS问题的最常用工具,它具很高的灵活性和易用性。

在本教程中我们将说明如何在Linux使用dig命令查询DNS。包括在Linux发行版安装dig。了解dig的输出,仅输出应答,详细的应答ANSWER信息。

指定域名服务器查询,了解DNS的记录类型,查询CNAME记录,查询TXT记录,批量查询,反向DNS查找,查询所有记录,查询NS记录,查询MX记录,配置dig。

安装 dig命令

你可以运行命令dig -v检查dig版本来验证您的系统是否已安装dig。如果你的系统已经安装dig命令,dig -v命令将会打印版本号DiG 9.11.3-1ubuntu1.1-Ubuntu

如果您的Linux系统还有没有安装dig命令,dig -v命令将会打印dig: command not found,则可以使用发行版的软件包管理器来安装它。

如果你的计算机运行的是基于Debian的Linux发行版,比如Ubuntu,Linux mint。请运行命令sudo apt install dnsutils安装dig。

如果你的计算机运行的是基于RedHat的Linux发行版,比如CentOS,Fedora等发行版,请运行命令sudo yum install bind-utils安装dig。

如果你是Arch用户可以运行命令sudo pacman -S bind-tools安装dig。

sudo apt install dnsutils

sudo yum install bind-utils

sudo pacman -S bind-tools

了解dig输出

使用dig命令的最简单的方式,不指定任何选项运行dig命令。dig命令打印非常详细的输出。例如命令dig linux.org将会查询linux.org域的信息。

dig linux.org
; <<>> DiG 9.10.3-P4-Ubuntu <<>> linux.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57452
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;linux.org.			IN	A

;; ANSWER SECTION:
linux.org.		300	IN	A	104.27.167.219
linux.org.		300	IN	A	104.27.166.219

;; Query time: 256 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Fri Jul 19 11:12:41 CST 2019
;; MSG SIZE  rcvd: 59

输出的第一行打印已安装的dig版本号以及运行的DNS查询。第二行显示全局选项,默认是cmd。

如果您不希望第二行包含在输出中,可以使用+nocmd选项。此选项必须是dig命令后的第一个参数

Got Answer应答包括从请求授权后来自DNS服务器应答的详细信息。此部分的第一行是标题,包括操作码(由dig执行的操作)和操作的状态。

状态NOERROR意味着所请求的都已授权查询并且没有任何问题。可以使用+nocomments选项删除应答的输出。

OPT PSEUDOSECTION此部分仅在较新dig版本显示。您可以在此处阅读DNS扩展机制EDNS的更多信息。如果您不希望此部分包含在输出中,请使用+noedns选项。

QUESTION显示dig命令要查询的记录类型。默认是A记录,您可以使用+noquestion选项禁用此部分的输出。

ANSWER章节为我们提供了一个应答。正如我们提到的,默认情况下dig会请求A记录。这里域linux.org指向IP地址104.18.59.123

如果你想关闭ANSWER输出,可以使用+noanswer选项从输出中删除此部分。

AUTHORITY SECTION告诉我们哪些服务器是应答有询域的DNS的AUTHORITY。您可以使用+noauthority选项禁用输出的此部分。

ADDITIONAL SECTION为我们提供了有关AUTHORITY DNS服务器的IP地址的信息。

Query time这是dig输出的最后一部分,其中包含查询的统计信息。您可以使用+nostats选项禁用此信息。

仅输出应答ANSWER

在大多数情况下,您只想快速查询ANSWER SECTION,要获得查询的简短应答ANSWER。

请使用dig命令的+short选项,例如命令dig linux.org +short仅打印A记录的IP地址。

104.18.59.123
104.18.58.123

详细的应答ANSWER

想要更详细的ANSWER应答信息,请使用dig命令的+noall选项关闭所有结果,然后仅使用+answer选项,展开ANSWER的详细信息。

dig linux.org +noall +answer
; <<>> DiG 9.13.3 <<>> linux.org +noall +answer
;; global options: +cmd
linux.org.		67	IN	A	104.18.58.123
linux.org.		67	IN	A	104.18.59.123

指定域名服务器查询

默认情况下,如果未指定DNS服务器,dig将使用etc/resolv.conf文件中列出的域名服务器。

要指定查询的DNS服务器,请使用@符号,后跟域名服务器IP地址或主机名运行dig命令。

例如命令dig linux.org @8.8.8.8使用Google DNS服务器8.8.8.8查询linux.org域名信息。

dig linux.org @8.8.8.8

DNS 记录类型

Dig命令允许您通过将记录类型附加到查询末尾来运行指定DNS记录类型的查询。在下一节中,我们将向您展示如何搜索最常见的记录。

例如A记录(IP地址),CNAME(别名),TXT(文本记录),MX记录(邮件交换)和NS(域名服务器记录)。

查询A记录

获取域名的所有A记录地址,请使用dig命令的a选项。如果未指定DNS记录类型,dig将请求A记录。

您也可以在不指定a选项查询A记录,运行命令dig +nocmd google.com a +noall +answer

dig +nocmd google.com a +noall +answer
google.com.		300	IN	A	172.217.27.46

查询CNAME别名记录

要查找指定域名的别名记录,请使用dig命令的cname选项。

命令dig +nocmd mail.google.com cname +noall +answer将会查询mail.google.com的别名记录。

dig +nocmd mail.google.com cname +noall +answer

查询TXT记录

使用dig命令的txt选项可检索指定域名的所有TXT记录。

dig +nocmd google.com txt +noall +answer

查询MX记录

获取指定域名所有邮件服务器列表,请使用dig命令的mx选项。

dig +nocmd google.com mx +noall +answer

查询NS记录

要查找指定域的名称服务器,请使用dig命令的ns选项。

dig +nocmd google.com ns +noall +answer
google.com.		84527	IN	NS	ns1.google.com.
google.com.		84527	IN	NS	ns2.google.com.
google.com.		84527	IN	NS	ns4.google.com.
google.com.		84527	IN	NS	ns3.google.com.

查询所有记录

使用any选项可获取指定域名的所有DNS记录。

dig +nocmd google.com any +noall +answer

反向DNS查找

要查询与指定IP地址关联的主机名或者域名,可以使用dig命令的-x选项,执行反向DNS解释。

例如命令dig -x 208.118.235.148 +noall +answer执行反向DNS解释,查找ip地址208.118.235.148的域名。

从输出中可以看到IP地址208.118.235.148与主机名wildebeest.gnu.org相关联。

dig -x 208.118.235.148 +noall +answer
; <<>> DiG 9.13.3 <<>> -x 208.118.235.148 +noall +answer
;; global options: +cmd
148.235.118.208.in-addr.arpa. 245 IN	PTR	wildebeest.gnu.org.

批量查询

如果要使用dig命令查询大量的域名,可以将它们添加到文件中,每行一个域名,然后使用dig的-f选项指定文件名。

例如命令dig -f domains.txt +short查询domains.txt文件的所有域名。

dig -f domains.txt +short
google.com
myfreax.com
linux.org

domains.txt

配置 dig

可以在${HOME}/.digrc文件为每个用户设置选项来控制dig命令的行为。

如果.digrc文件指定的选项与用户在命令行指定选项冲突,则优先使用命令行指定的选项。

例如,如果只想打印应答部分,请使用你喜欢的文本编辑器编辑文件,在本教程中我们将使用vim编辑文件~/.digrc

vim ~/.digrc
+nocmd +noall +answer

~/.digrc

结论

至此您应该能够解决大多数与DNS相关的问题,如果您喜欢我们的内容,欢迎转发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11277

    浏览量

    209263
  • DNS
    DNS
    +关注

    关注

    0

    文章

    218

    浏览量

    19822
  • 命令
    +关注

    关注

    5

    文章

    683

    浏览量

    22011
  • Dig
    Dig
    +关注

    关注

    0

    文章

    2

    浏览量

    6143
收藏 人收藏

    评论

    相关推荐

    何在Linux使用iostat命令

    IO等待或者`iowait`,`wait`,`wa`,`%iowait`,或者`wait%`通常可以通过Linux系统监控工具查看。例如命令行工具top、sar、atop等。
    的头像 发表于 01-04 17:17 1556次阅读

    何在Linux中使用htop命令

    本文介绍如何在 Linux 中使用 htop 命令
    的头像 发表于 12-04 14:45 1997次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>Linux</b>中使用htop<b class='flag-5'>命令</b>

    dig命令的学习方法

    dig命令的学习
    发表于 07-19 06:42

    Linux文件内容查询命令

    Linux文件内容查询命令 Linux文件内容查询命令  grep、fgrep和egrep
    发表于 01-18 12:45 845次阅读

    Linux中如何配置DNS

    ;Sendmail 8.9.3; Wu-Ftp 2.4.2;DNS。 ----1.安装Red Hat Linux 5.1 ----参考README文件,用DOS启动盘引导,并将光驱驱动,执行dosutilsautoload,依照提示进行安装。软件包选 WWW、Sendma
    发表于 11-07 10:44 3次下载

    何在Linux使用pidof命令

    `pidof`是一个命令行程序,可让您找到正在运行程序的进程ID。在教程中,我们将说明如何在Linux 使用pidof命令
    的头像 发表于 12-05 17:01 2316次阅读

    何在Linux使用touch命令

    Linux touch命令用于更改文件时间戳。但touch命令的最常见用法是创建文件。
    的头像 发表于 12-05 17:21 2063次阅读

    何在Linux使用rpm命令

    RPM是基于RedHat Linux发行版的软件包管理器,例如CentOS和Fedora。RPM还指`rpm`命令和`.rpm`文件扩展名称。
    的头像 发表于 01-04 17:14 1658次阅读

    何在Linux上使用粘贴命令

    Linux中的粘贴命令是一个有用的工具,用于将多个文件或文本行合并到单个文件或输出中。它通常与剪切命令结合使用,允许用户剪切特定行或文本部分并将其粘贴到其他地方。在本文中,小编将探讨 Linu
    的头像 发表于 02-08 16:58 1821次阅读

    何在Linux中使用progress命令

    progress 命令是一个简单但功能强大的 Linux/Unix 命令行工具,可让用户查看文件操作的进度。
    的头像 发表于 04-08 15:51 2448次阅读

    何在Linux中高效运行终端命令

    Linux 终端是一个功能强大的工具,允许您使用命令执行各种系统操作。文件操作、程序管理和服务自动化是您可以使用 shell 命令高效执行的一些操作。
    的头像 发表于 04-13 10:34 671次阅读

    何在Linux命令行中运行Python脚本

    Python 脚本。 在本文中,我们将详细介绍如何在 Linux 命令行中运行 Python 脚本。我们将讨论以下主题:
    的头像 发表于 05-12 14:49 1678次阅读

    恒讯科技分析:如何在Linux上使用rm命令删除文件和目录?

    本指南展示了如何在Linux中使用rm命令行删除文件、目录和其他内容?
    的头像 发表于 06-09 17:02 1173次阅读

    何在 Linux 上查看本地 DNS 缓存

      刷新本地 DNS 缓存可以解决 HTTP 错误并保护您免受 DNS 欺骗。以下是在 Linux 上执行此操作的方法。 当您使用域名访问网站时,您的系统会向 DNS 服务器发送请求以
    的头像 发表于 06-26 10:52 3334次阅读
    如<b class='flag-5'>何在</b> <b class='flag-5'>Linux</b> 上查看本地 <b class='flag-5'>DNS</b> 缓存

    华纳云:Ubuntu18.04系统如何查询域名的具体dns信息

    在Ubuntu18.04系统中查询域名的DNS信息是一项常见且重要的操作。本文将介绍几种实用的方法,帮助用户快速获取所需的DNS信息。 使用dig
    的头像 发表于 08-08 15:50 419次阅读