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

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 dnsutilssudo yum install bind-utilssudo 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.219linux.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.123104.18.58.123详细的应答answer想要更详细的answer应答信息,请使用dig命令的+noall选项关闭所有结果,然后仅使用+answer选项,展开answer的详细信息。
dig linux.org +noall +answer; dig 9.13.3 linux.org +noall +answer;; global options: +cmdlinux.org. 67 in a 104.18.58.123linux.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.8dns 记录类型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 +answergoogle.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 +answergoogle.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: +cmd148.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 +shortgoogle.commyfreax.comlinux.orgdomains.txt
配置 dig可以在${home}/.digrc文件为每个用户设置选项来控制dig命令的行为。
如果.digrc文件指定的选项与用户在命令行指定选项冲突,则优先使用命令行指定的选项。
例如,如果只想打印应答部分,请使用你喜欢的文本编辑器编辑文件,在本教程中我们将使用vim编辑文件~/.digrc。
vim ~/.digrc+nocmd +noall +answer~/.digrc
结论至此您应该能够解决大多数与dns相关的问题,如果您喜欢我们的内容,欢迎转发。

盘点最具潜力的国产嵌入式系统
基于USB 2.0协议的高速图像传输系统
[图文]多元折合振子天线
大功率电力电子技术对智能电网的重要性
关于SRC漏洞挖掘经验及工具分享
如何在Linux使用dig命令查询DNS
全球智慧城市的推出有什么意义
有哪些高速信号完整性测试的手段
什么是嵌入式计算机?
BD7F系列IC的功能和特征
Power Integrations发布InnoSwitch3系列高效率(94%)离线 反激式开关电源IC
硅晶圆销售于第三季度开始下滑
Imagination的智能家居关键模块及解决方案
基于虚拟仪器技术的705D雷达自动检测系统
全球汽车行业的三支创新力量_重塑十年后的汽车产业
基于声卡的QPSK信号的实时软解调
四海八荒三生三世只为你?华为P10:称霸高端旗舰抢占海外市场
《60天10串BMS锂离子电池管理系统设计实战特训班》开班倒计时第7天
如何测试带服务接口的Simulink模型?
部署更多的射频场来支持能量收集设备助力物联网下一个挑战