dig 简明教程
哈喽大家好,我是咸鱼
不知道大家在日常学习或者工作当中用 dig 命令多不多
dig 是 Domain Information Groper 的缩写,对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说,它是一个非常常见且有用的工具。
无论是简单的 DNS 解析查找还是更高级的故障排除和分析,dig 都能够胜任
那么今天咸鱼将和大家一起了解一下 dig 命令的一些常见用法以及示例
除了
dig命令,还有一种跟dig功能是差不多的 命令nslookup
安装
如果 Linux 发行版没有安装 dig 命令,则可以通过下面的命令来安装
- Debian 和 基于 Debian 的发行版
apt install dnsutils
- Red Hat 和基于 RHEL 的发行版
dnf install bind-utils
# 或
yum install bind-utils
- Arch Linux 和基于 Arch 的发行版
pacman -S dnsutils
以我的测试环境为例(CentOS 7.9)

常见用法
# 基本语法
dig [@server] [name] [type]
@server:请求所指向的 DNS 服务器的主机名或IP地址。如果没有指定 DNS 服务器,则使用系统当前配置的 DNS 服务器name:要查找的域名type:要检索的 DNS 记录的类型,默认为 A 记录类型
比如说我想解析 www.baidu.com 这个域名,指定使用 Google 的 dns 服务器(8.8.8.8)

# A 记录
dig @8.8.8.8 www.baidu.com
如果要查找 MX 记录
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 选项
dig @8.8.8.8 www.baidu.com +nocomments

可以看到,加上 +nocomments 选项后返回的内容有一部分注释是被去掉了的
这时候有的小伙伴还会说:不行不行,信息还是太多了,我只要 ANSWER 部分。该如何让命令只输出 ANSWER 部分呢?
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 等
我们可以在命令的末尾加上对应的类型名以此来返回解析后特定类型信息
# 返回 MX 类型
dig www.baidu.com MX
# 返回 CNAME 类型
dig www.baidu.com CNAME
或者使用特殊关键字 ALL 将所有类型记录放在一起
# 将会返回所有类型信息
dig www.baidu.com ALL
- 查看 DNS 解析过程
如果我们不确定 DNS 配置在哪里有问题,我们可以使用 dig 命令来查看 DNS 解析的每一过程,只需要加上 +trace 选项即可
dig www.baidu.com +trace

- DNS 反向查找
DNS 正向查找就是通过域名找解析 IP;反向查找就是通过 IP 地址找域名
# 查找 ip 95.217.163.246 对应的域名
dig -x 95.217.163.246

- 批量查询
有小伙伴会想:我每次查询一个域名效率太慢了,我能不能一次查询多个域名呢?
是可以的,dig 是支持批量查询的
首先我们把要查询的域名放在一个文件里面,每行一个
[root@localhost ~]# cat domains.txt
www.baidu.com
archlinux.org
然后执行 dig 命令的时候加上 -f 选项
# 加上 +short 简化输出内容
dig -f domains.txt +short

修改 dig 默认选项
前面我们在使用 dig 命令的时候,为了简化输出信息每次敲命令都得带上+nocomments 选项
那我们能不能把这个选项设置成默认值,这样在敲命令的时候就不需要额外加上这个选项了
答案是可以的,我们需要在家目录下创建一个 ~/.digrc 文件,然后添加选项
[root@localhost ~]# cat ~/.digrc
+nocomments
+short
这样我们执行 dig 命令的时候就算没加上去,也会默认使用这两个选项
dig 简明教程的更多相关文章
- 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)
小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...
- 2013 duilib入门简明教程 -- 部分bug (11)
一.WindowImplBase的bug 在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题, 1.最大化按钮的样式 ...
- 2013 duilib入门简明教程 -- 部分bug 2 (14)
上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃 如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口 ...
- 2013 duilib入门简明教程 -- 自绘控件 (15)
在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...
- 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)
界面的显示方面就都讲完啦,下面来介绍下控件的响应. 前面的教程只讲了按钮和Tab的响应,即在Notify函数里处理.其实duilib还提供了另外一种响应的方法,即消息映射DUI_BEG ...
- 2013 duilib入门简明教程 -- FAQ (19)
虽然前面的教程几乎把所有的知识点都罗列了,但是有很多问题经常在群里出现,所以这里再次整理一下. 需要注意的是,在下面的问题中,除了加上XML属性外,主窗口必须继承自WindowImpl ...
- Mac安装Windows 10的简明教程
每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...
- Docker简明教程
Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...
- 2013 duilib入门简明教程 -- 总结 (20)
duilib的入门系列就到尾声了,再次提醒下,Alberl用的duilib版本是SVN上第个版本,时间是2013.08.15~ 这里给出Alberl最后汇总的一个工程,戳我下载,效 ...
- plain framework 1 参考手册 入门指引之 简明教程
简明教程 简单的例子 实现代码 简单的例子 如果你已经下载好整个框架的源码,那么你可以在这里找到应用的例子: plainframework/applications/pf_simple 如果你在win ...
随机推荐
- 永远拥抱开放生态 | Metaworld2.0能力发布
回看过去的二十年,互联网从门户网站发布信息,用户只能获取阅读:到如今的人人生产内容,再借助各类平台设施上传投递给其他用户.这个过程中,内容生产力的分布从集中转为分散,恰似互联网从1.0走向2.0的 ...
- Day-4 路由匹配源码
1. 请求来了会走WSGIHandler的call方法 convert_exception_to_response也是进行封装 真的handler是从下图定义 resolver = URLResolv ...
- 使用Locust进行分布式性能测试
Locust是一个强大的性能测试工具,用于评估系统的性能和可扩展性.本文将简洁地介绍使用Locust进行分布式性能测试的步骤和优势. 步骤: 1. 配置测试环境:在主节点和多个从节点上安装相同版本的L ...
- 结合ReentrantLock来看AQS的原理
AQS的定义 队列同步器 AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架,它使用了一个 int 成员变量表示同步状态,通过内置的 F ...
- 2021-6-17 plc连接
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Node: Module not found: Can't resolve 'xlsx'
报错信息 解决方案 npm install xlsx --save 参考链接 https://github.com/securedeveloper/react-data-export/issues/8 ...
- react中使用动画 react-transition-group
在React中通过react-transition-group使用过渡.动画,首先要有CSS3中的过渡和动画的相关知识储备,可以参考 过渡和2D变换.动画和3d变换. 我们自己通过css设置过渡.动画 ...
- Hadoop集群启动没有DataNode进程
问题状况: 问题原因: 在启动Hadoop之前,进行了多次格式化,导致DataNode的ID发生了变化 解决方案: 我们可以删除从节点所有的DataNode资料,并重新格式化 解决流程 1.根据cor ...
- 遥遥领先 spring,中国人的 solon 来啦!10% 的体积,10倍的速度
Solon 是什么? Java 生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢,费内存.2023 ...
- 形象谈JVM-第一章-认识JVM
对jvm的历史不做过多介绍,感兴趣的同学可以去自行搜索. 我们直接以HotSpot VM(Virtual Machine)举例. why 为什么要有虚拟机? 举一个形象的例子:手机现在几乎是人手一台 ...