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 ...
随机推荐
- python学习--采集弹幕信息
# -*- coding: utf-8 -*-"""Created on Mon Nov 4 12:00:12 2019 @author: DELL"" ...
- 使用Stable Diffusion制作AI数字人视频的简明教程
基本方法 搞一张照片,搞一段语音,合成照片和语音,同时让照片中的人物动起来,特别是头.眼睛和嘴. 语音合成 语音合成的方法很多,也比较成熟了,大家可以选择自己方便的,直接录音也可以,只要能生成一个语音 ...
- docker笔记-安装、操作和Registry
注意事项 强烈建议docker宿主机关闭firewalld,改用iptables 1 docker安装 1.1 离线安装 下载 Docker 二进制文件(https://download.docker ...
- k8s+containerd安装
准备环境 准备两台服务器节点,如果需要安装虚拟机,可以参考<wmware和centos安装过程> 机器名 IP 角色 CPU 内存 centos01 192.168.109.130 mas ...
- 虚拟化学习:vps和云计算的区别
1 vps 可以由虚拟机实现,但并不是虚拟机; 虚拟机是云计算的核心,但虚拟机也不等于云主机. 2 vps是面向单台服务器的虚拟化技术,服务器挂了,其上的vps也跟着挂了. 3 云计算是面向服务器集群 ...
- IDEA:使用Test注解,控制台无法输入
解决方案 步骤一: 点击help ===> Edit Custom VM Options... 步骤二: 添加文件末尾添加如下内容 -Deditable.java.test.console=tr ...
- .NET下数据库的负载均衡“经典方案”(大项目必备,建议收藏)
[前言] 本文讲述的"数据库负载均衡"方案,为市面上最经典(没有之一),由.NET界骨灰级大佬推出.采用该技术方案的大公司,一年省下了几个亿的支出. [正文] 支持.Net Cor ...
- Hi3798MV200 恩兔N2 NS-1 (三): 制作 Ubuntu rootfs
目录 Hi3798MV200 恩兔N2 NS-1 (一): 设备介绍和刷机说明 Hi3798MV200 恩兔N2 NS-1 (二): HiNAS海纳思使用和修改 Hi3798MV200 恩兔N2 NS ...
- [pytest]基础
简介 The pytest framework makes it easy to write small, readable tests, and can scale to support compl ...
- 部署安装kafka集群
准备 zookeeper节点: 172.50.13.103 172.50.13.104 172.50.13.105 kafka版本: 2.13-2.7.0 安装步骤 部署安装zookeeper集群.参 ...