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