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 ...
随机推荐
- Flutter 屏幕采集如何实现(提供示例demo)
在视频会议.线上课堂.游戏直播等场景,屏幕共享是一个最常见的功能.屏幕共享就是对屏幕画面的实时共享,端到端主要有几个步骤:录屏采集.视频编码及封装.实时传输.视频解封装及解码.视频渲染.一般来说,实时 ...
- 开源BaaS平台Supabase介绍
Supabase 介绍 Supabase 是一个开源的 Firebase 替代品,以BaaS的形式向各种应用程序提供了一系列的后端功能,可以帮助开发者更快地构建产品. 对于想快速实现一个产品而言,如果 ...
- PWM点灯
目录 PWM脉冲宽调点灯 前言 1.什么是PWM 2.PWM的实现 3.PWM实现步骤(通用定时器) 3.1 打开定时器的时钟 3.2 配置端口 3.3 设置定时器 3.4 设置PWM 3.5 完整代 ...
- zabbix 主动模式下报文分析
获取监控项列表 客户端发起请求 3次握手之后,请求监控项列表: {"request":"active checks","host":&quo ...
- excel:if语句
IF语法格式: IF(logical_test,value_if_true,value_if_false) 释义:判断一个条件是否满足,如果满足返回一个值,如果不满足则返回另一个值. logical_ ...
- 避坑 | OI排雷新生态
可持久化线段树 query 的时候两结点的 sz 相减的时候一定是左儿子相减. 可持久化线段树建新点要将原来的不更改的节点连接上. 动态规划也可以倒着考虑. P3957的单调队列是先加入后删除,否则加 ...
- 华为ensp配置静态路由,三路由,三pc
华为ensp配置静态路由 目的:使pc1,pc2,pc3能相互ping通 1,tuop图的搭建 1,如图所示:先搭建好设备的通讯关系,在标记好每台设备对应的,ip地址和网关. 2,pc的网关,与ip地 ...
- 【python笔记】使用zip函数迭代多个可迭代对象
入门使用 # 示例代码 warframe = ["saryn", "wisp", "volt"] counts = [len(n) for ...
- arrch架构部署redis,报错: ignore-warnings ARM64-COW-BUG
arrch架构服务器redis部署完成后,启动报错.做个记录. arrch架构的redis安装包 下载链接:https://pan.baidu.com/s/1TMXNpMvMDWRFD1f5km7Mw ...
- Luckysheet:一个纯前端的excel在线表格
最近因为项目要求,需要在页面上添加一个在线编辑excel的功能,因此只能在网上找有没有直接用的插件,最后很幸运的是幸好找到了一个 ----luckysheet. 这个是从luckysheet官网上找的 ...