linux dig 命令使用
linux dig 命令使用方法
dig 命令主要用来从 DNS 域名服务器查询主机地址信息。
查询单个域名的 DNS 信息
dig 命令最典型的用法就是查询单个主机的信息。
$ dig baidu.com
dig 命令默认的输出信息比较丰富,大概可以分为 5 个部分。
第一部分显示 dig 命令的版本和输入的参数。
第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
第三部分中的 "QUESTION SECTION" 显示我们要查询的域名。
第四部分的 "ANSWER SECTION" 是查询到的结果。
第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器,在什么时间进行的查询等等。
默认情况下 dig 命令查询 A 记录,上图中显示的 A 即说明查询的记录类型为 A 记录。在尝试查询其它类型的记录前让我们先来了解一下常见的 DNS 记录类型。
常见 DNS 记录的类型
类型 | 目的 |
A | 地址记录,用来指定域名的 IPv4 地址,如果需要将域名指向一个 IP 地址,就需要添加 A 记录。 |
AAAA | 用来指定主机名(或域名)对应的 IPv6 地址记录。 |
CNAME | 如果需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录。 |
MX | 如果需要设置邮箱,让邮箱能够收到邮件,需要添加 MX 记录。 |
NS | 域名服务器记录,如果需要把子域名交给其他 DNS 服务器解析,就需要添加 NS 记录。 |
SOA | SOA 这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。 |
TXT | 可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。 |
查询 CNAME 类型的记录
除了 A 记录,常见的 DNS 记录还有 CNAME,我们可以在查询时指定要查询的 DNS 记录类型:
$ dig abc.filterinto.com CNAME
这样结果中就只有 CNAME 的记录。其实我们可以在查询中指定任何 DNS 记录的类型。
从指定的 DNS 服务器上查询
由于一些原因,希望从指定的 DNS 服务器上进行查询(从默认的 DNS 服务器上获得的结果可能不准确)。指定 DNS 服务器的方式为使用 @ 符号:
$ dig @8.8.8.8 abc.filterinto.com
从上图可以看到本次查询的 DNS 服务器为 8.8.8.8。
如果不指定 DNS 服务器,dig 会依次使用 /etc/resolv.conf 里的地址作为 DNS 服务器:
$ dig abc.filterinto.com
上面查询的 DNS 服务器就变成了:
反向查询
在前面的查询中我们指定了查询服务器为 8.8.8.8,这是谁家的 DNS 服务器?其实我们可以使用 dig 的 -x 选项来反向解析 IP 地址对应的域名:
$ dig -x 8.8.8.8 +short
好吧,应该是谷歌家的,可以放心使用了。
控制显示结果
dig 命令默认返回的结果展示详细的信息,如果要获得精简的结果可以使用 +short 选项:
$ dig +short abc.filterinto.com
这下显示的结果就清爽多了。
其实我们还可以通过更多选项来控制输出的内容,比如只想显示 "ANSWER SECTION" 的内容:
$ dig abc.filterinto.com +nocomments +noquestion +noauthority +noadditional +nostats
这个结果很不错,就是使用的选项太多了(dig 命令有很多这样的选项,详情请参考使用手册)。我们可以换一种优雅一些的方式来实现和上面相同的结果:
$ dig abc.filterinto.com +noall +answer
查看 TTL(Time to Live)
TTL 是 DNS 解析中很重要的指标,主要是控制 DNS 记录在 DNS 服务器上的缓存时间:
$ dig abc.filterinto.com
查询结果中的单位是秒。通过下面的命令可以显示精简一些测结果:
$ dig +nocmd +noall +answer +ttlid abc.filterinto.com
跟踪整个查询过程
如果你好奇 dig 命令执行查询时都经历了哪些过程,你可以尝试使用 +trace 选项。它会输出从根域到最终结果的所有信息:
$ dig +trace abc.filterinto.com
上图中显示的并不是一个完整的结果,感兴趣的朋友可以自己尝试。
总结
dig 是一个很给力 DNS 查询工具,本文仅介绍了其常见用法,更多的命令选项及使用方法请查看 man page。
linux dig 命令使用的更多相关文章
- linux dig 命令
dig 命令主要用来从 DNS 域名服务器查询主机地址信息. 查询单个域名的 DNS 信息 dig 命令最典型的用法就是查询单个主机的信息. $ dig baidu.com dig 命令默认的输出信息 ...
- linux dig 命令使用方法
ref:https://www.imooc.com/article/26971?block_id=tuijian_wz dig 命令主要用来从 DNS 域名服务器查询主机地址信息. 查询单个域名的 D ...
- linux dig命令 转
dig 命令主要用来从 DNS 域名服务器查询主机地址信息. 查询单个域名的 DNS 信息 dig 命令最典型的用法就是查询单个主机的信息. $ dig baidu.com dig 命令默认的输出信息 ...
- Linux dig命令
dig(Domain Information Groper),和nslookup作用有些类似,都是DNS查询工具 1.dig命令格式 dig @dnsserver name querytype 如果你 ...
- 【转载】 linux dig 命令使用方法
原文地址: https://www.imooc.com/article/26971?block_id=tuijian_wz 作者:ibeautiful来源:慕课网 ------------------ ...
- Linux下dig命令使用
Dig简介: Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具.由于一直缺失Dig man page文档,本文就权当一个dig使用向导吧. Dig的 ...
- Linux下解析域名命令-dig 命令使用详解
Linux下解析域名除了使用nslookup之外,开可以使用dig命令来解析域名,dig命令可以得到更多的域名信息.dig 命令主要用来从 DNS 域名服务器查询主机地址信息.dig的全称是 (dom ...
- linux命令总结之dig命令
Dig简介: Dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具.Dig的源码是ISC BIND大包的一部分,但是大多编译和安装Bind的文档都不把它包括在内 ...
- nslookup、dig命令Linux安装包
linux下提供nslookup,dig命令的软件就是 bind-utils yum install bind-utils -y
随机推荐
- docker创建tomcat容器
配置阿里云镜像地址:先在阿里云搜索:容器镜像服务 --> 最下面找到 容器加速服务 docker配置 etc目录下 创建docker文件夹 mkdir --->docker --- ...
- AJAX 调用WebService 、WebApi 增删改查(笔记)
经过大半天努力,终于完成增删改查了!心情有点小激动!!对于初学者的我来说,一路上都是迷茫,坑!!虽说网上有资料,可动手起来却不易(初学者的我).(苦逼啊!) WebService 页面: /// &l ...
- 浅谈hash
hash 算法介绍 hash说得通俗一点,就是给一个变量编上一个马甲 比如说一个人聪明可爱,举世无双,天资聪慧.活泼机灵...,那么就是叫我了(真不要脸 但是这样是不是显得些许麻烦? 于是人类发明了名 ...
- 洛谷 P1828 【香甜的黄油 Sweet Butter】
这道题应该就是模板题了吧qwq. 统计每一个牧场的放糖的情况,选择最优的即可 有亿点水的绿题. #include <bits/stdc++.h> using namespace std; ...
- 洛谷 P2296 【寻找道路】
这道题真的很女少啊 言归正传: 这道题其实就是考验的思路,读题后,我们发现对于某个点他所连接的点必须连接终点,那么我们直接反向存图,从终点进行bfs,可以找到未连接的点,然后对这些点所连接的点进行标记 ...
- python基础知识练习1
1.要求:输入A.B.C获得方程的解. 分析:通过input函数接收A,B,C的值.通过公式计算出detal的值,再根据条件进行判断,输出所需要的值: def args_input(): try: A ...
- git bash中提示 bash:node: command not found
昨天小伙伴私信,git bash以及windows 的cmd命令行下均无法运行node npm. 究其原因是环境变量的问题.解决步骤: 1>在"此电脑"中右击,选择" ...
- JAVASE经典面试问题(必须熟背),你Get到了吗?
JAVASE经典面试问题(必须熟背) 1. 编译java程序使用什么命令?运行java使用什么命令? javac *.java java 类名 2. 什么是JDK,什么是JRE,JDK与JRE有什么区 ...
- 解决vue项目中使用ivew定制主题报 .bezierEasingMixin();错误
背景:在使用view-design(iview)定制主体时(覆盖变量方式)出现less错误 完整错误如下 解决方法: 在vue.config.js中添加 less-loader:5.0.x modul ...
- Scala 基础(四):Scala变量 (一) 基础
1.概念 变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门 牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值). 2 变量使用的基本步骤 1) 声明/定义变量 ( ...