dig 简明教程

哈喽大家好,我是咸鱼

不知道大家在日常学习或者工作当中用 dig 命令多不多

dig 是 Domain Information Groper 的缩写,对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说,它是一个非常常见且有用的工具。

无论是简单的 DNS 解析查找还是更高级的故障排除和分析,dig 都能够胜任

那么今天咸鱼将和大家一起了解一下 dig 命令的一些常见用法以及示例

除了 dig 命令,还有一种跟 dig 功能是差不多的 命令 nslookup

安装

如果 Linux 发行版没有安装 dig 命令,则可以通过下面的命令来安装

  • Debian 和 基于 Debian 的发行版

    apt install dnsutils

  • Red Hat 和基于 RHEL 的发行版

perl 复制代码
dnf install bind-utils
# 或
yum install bind-utils
  • Arch Linux 和基于 Arch 的发行版

    pacman -S dnsutils

以我的测试环境为例(CentOS 7.9)

常见用法

ini 复制代码
# 基本语法
dig [@server] [name] [type]
  • @server:请求所指向的 DNS 服务器的主机名或IP地址。如果没有指定 DNS 服务器,则使用系统当前配置的 DNS 服务器
  • name :要查找的域名
  • type :要检索的 DNS 记录的类型,默认为 A 记录类型

比如说我想解析 www.baidu.com 这个域名,指定使用 Google 的 dns 服务器(8.8.8.8)

css 复制代码
# A 记录
dig @8.8.8.8 www.baidu.com

如果要查找 MX 记录

css 复制代码
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 选项

css 复制代码
dig @8.8.8.8 www.baidu.com +nocomments

可以看到,加上 +nocomments 选项后返回的内容有一部分注释是被去掉了的

这时候有的小伙伴还会说:不行不行,信息还是太多了,我只要 ANSWER 部分。该如何让命令只输出 ANSWER 部分呢?

复制代码
dig www.baidu.com +noall +answer

可以看到,加了 +noall+answer 选项之后,会显示出干净且易于阅读的内容

如果我只想要返回解析出来的结果呢? 可以使用 +short 选项

arduino 复制代码
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 是支持批量查询的

首先我们把要查询的域名放在一个文件里面,每行一个

csharp 复制代码
[root@localhost ~]# cat domains.txt 
www.baidu.com
archlinux.org

然后执行 dig 命令的时候加上 -f 选项

arduino 复制代码
# 加上 +short 简化输出内容
dig -f domains.txt +short

修改 dig 默认选项

前面我们在使用 dig 命令的时候,为了简化输出信息每次敲命令都得带上+nocomments 选项

那我们能不能把这个选项设置成默认值,这样在敲命令的时候就不需要额外加上这个选项了

答案是可以的,我们需要在家目录下创建一个 ~/.digrc 文件,然后添加选项

csharp 复制代码
[root@localhost ~]# cat ~/.digrc 
+nocomments
+short

这样我们执行 dig 命令的时候就算没加上去,也会默认使用这两个选项

相关推荐
专注API从业者29 分钟前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化
Lovyk2 小时前
Linux 正则表达式
linux·运维
Fireworkitte2 小时前
Ubuntu、CentOS、AlmaLinux 9.5的 rc.local实现 开机启动
linux·ubuntu·centos
sword devil9003 小时前
ubuntu常见问题汇总
linux·ubuntu
ac.char3 小时前
在CentOS系统中查询已删除但仍占用磁盘空间的文件
linux·运维·centos
中科米堆5 小时前
中科米堆CASAIM自动化三维测量设备测量汽车壳体直径尺寸
运维·自动化·汽车·视觉检测
淮北也生橘125 小时前
Linux的ALSA音频框架学习笔记
linux·笔记·学习
缘华工业智维5 小时前
CNN 在故障诊断中的应用:原理、案例与优势
大数据·运维·cnn
开航母的李大7 小时前
软件系统运维常见问题
运维·服务器·系统架构·运维开发
华强笔记8 小时前
Linux内存管理系统性总结
linux·运维·网络