不知道大家在日常学习或者工作当中用 dig 命令多不多。
dig 是 Domain Information Groper 的缩写,对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说,它是一个非常常见且有用的工具。
无论是简单的 DNS 解析查找还是更高级的故障排除和分析,dig 都能够胜任。
那么今天咸鱼将和大家一起了解一下 dig 命令的一些常见用法以及示例。
除了 dig 命令,还有一个跟 dig 功能差不多的命令 nslookup。
安装
如果 Linux 发行版没有安装 dig 命令,则可以通过下面的命令来安装。
Debian 和 基于 Debian 的发行版:
Red Hat 和基于 RHEL 的发行版:
Arch Linux 和基于 Arch 的发行版:
以我的测试环境为例(CentOS 7.9):
常见用法
- @server:请求所指向的 DNS 服务器的主机名或IP地址。如果没有指定 DNS 服务器,则使用系统当前配置的 DNS 服务器
- name :要查找的域名
- type :要检索的 DNS 记录的类型,默认为 A 记录类型
比如说我想解析 www.baidu.com 这个域名,指定使用 Google 的 dns 服务器(8.8.8.8):
如果要查找 MX 记录:
前面我们讲到,dig 命令会在 ANSWER 部分中默认显示 A 记录,下面我们来看下命令输出的信息:
可以看到一共有五列,我们以最后一行行为例:
- 第一列 www.wshifen.com:要查找的域名
- 第二列 192 :生存周期,告诉 DNS 解析器在请求一个新查询之前缓存查询多长时间
- 第三列 IN:查询的类,IN 指互联网
- 第四列 A:DNS 查询类型( A, AAAA, CNAME, MX, NS, PTR, CERT, SRV, TXT, SOA 等)
- 第五列 104.193.88.77:域名关联的 IP 地址
由前面的输出信息我们可以看到,内容还是挺多的,这时候有小伙伴会想:如何减少 dig 命令输出的内容呢?我只想要最有用的,其他的我看得头昏眼花。
可以加上 +nocomments 选项:
可以看到,加上 +nocomments 选项后返回的内容有一部分注释是被去掉了的。
这时候有的小伙伴还会说:不行不行,信息还是太多了,我只要 ANSWER 部分。该如何让命令只输出 ANSWER 部分呢?
可以看到,加了 +noall 和 +answer 选项之后,会显示出干净且易于阅读的内容。
那如果我只想要返回解析出来的结果呢?可以使用 +short 选项:
进阶用法
(1) 指定返回类型信息
前面我们提到过,DNS 记录的类型(type)有很多种,例如 A, AAAA, CNAME, MX, NS, PTR, CERT, SRV, TXT, SOA 等.
我们可以在命令的末尾加上对应的类型名以此来返回解析后特定类型信息:
或者使用特殊关键字 ALL 将所有类型记录放在一起:
(2) 查看 DNS 解析过程
如果我们不确定 DNS 配置在哪里有问题,我们可以使用 dig 命令来查看 DNS 解析的每一过程,只需要加上 +trace 选项即可
(3) DNS 反向查找
DNS 正向查找就是通过域名找解析 IP;反向查找就是通过 IP 地址找域名:
(4) 批量查询
有小伙伴会想:我每次查询一个域名效率太慢了,我能不能一次查询多个域名呢?
是可以的,dig 是支持批量查询的。
首先我们把要查询的域名放在一个文件里面,每行一个:
然后执行 dig 命令的时候加上 -f 选项:
修改 dig 默认选项
前面我们在使用 dig 命令的时候,为了简化输出信息每次敲命令都得带上+nocomments 选项,那我们能不能把这个选项设置成默认值,这样在敲命令的时候就不需要额外加上这个选项了。
答案是可以的,我们需要在家目录下创建一个 ~/.digrc 文件,然后添加选项:
这样我们执行 dig 命令的时候就算没加上去,也会默认使用这两个选项。