linux dig命令使用详解

linux dig命令使用详解

Linux下解析域名除了使用nslookup之外,开可以使用dig命令来解析域名,dig命令可以得到更多的域名信息。dig 命令主要用来从 DNS 域名服务器查询主机地址信息。

dig的全称是 (domain information groper)。它是一个用来灵活探测DNS的工具。它会打印出DNS name server的回应。

查询单个域名的 DNS 信息

dig 命令最典型的用法就是查询单个主机的信息。

linuxidc@linuxidc:~$ dig www.linuxidc.com

; <<>> DiG 9.11.3-1Ubuntu1.5-Ubuntu <<>> www.linuxidc.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17774
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.linuxidc.com.  IN A

;; ANSWER SECTION:
www.linuxidc.com. 5 IN A 122.228.238.15
www.linuxidc.com. 5 IN A 106.42.25.203

;; Query time: 10 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 10:55:35 CST 2019
;; MSG SIZE  rcvd: 77

Linux dig 命令使用详解

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 记录。
SOASOA 这种记录是所有区域性文件中的强制性记录。它必须是一个文件中的第一个记录。
TXT可以写任何东西,长度限制为 255。绝大多数的 TXT记录是用来做 SPF 记录(反垃圾邮件)。

查询 CNAME 类型的记录

除了 A 记录,常见的 DNS 记录还有 CNAME,我们可以在查询时指定要查询的 DNS 记录类型:

linuxidc@linuxidc:~$ dig m.linuxidc.com CNAME

; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> m.linuxidc.com CNAME
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61349
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;m.linuxidc.com.   IN CNAME

;; Query time: 26 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 11:20:34 CST 2019
;; MSG SIZE  rcvd: 43

Linux dig 命令使用详解

这样结果中就只有 CNAME 的记录。其实我们可以在查询中指定任何 DNS 记录的类型。

从指定的 DNS 服务器上查询

由于一些原因,希望从指定的 DNS 服务器上进行查询(从默认的 DNS 服务器上获得的结果可能不准确)。指定 DNS 服务器的方式为使用 @ 符号:

linuxidc@linuxidc:~$ dig @8.8.8.8 m.linuxidc.com

; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> @8.8.8.8 m.linuxidc.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38966
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;m.linuxidc.com.   IN A

;; ANSWER SECTION:
m.linuxidc.com.  199 IN A 122.228.238.71
m.linuxidc.com.  199 IN A 113.107.238.155

;; Query time: 120 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Mar 03 11:21:48 CST 2019
;; MSG SIZE  rcvd: 75

Linux dig 命令使用详解

从上图可以看到本次查询的 DNS 服务器为 8.8.8.8。

如果不指定 DNS 服务器,dig 会依次使用 /etc/resolv.conf 里的地址作为 DNS 服务器:

Linux dig 命令使用详解

linuxidc@linuxidc:~$ dig m.linuxidc.com

上面查询的 DNS 服务器就变成了:

Linux dig 命令使用详解

反向查询

在前面的查询中我们指定了查询服务器为 8.8.8.8,这是谁家的 DNS 服务器?其实我们可以使用 dig 的 -x 选项来反向解析 IP 地址对应的域名:

linuxidc@linuxidc:~$ dig -x 8.8.8.8 +short
google-public-dns-a.google.com.

Linux dig 命令使用详解

好吧,应该是Google的,可以放心使用了。

控制显示结果

dig 命令默认返回的结果展示详细的信息,如果要获得精简的结果可以使用 +short 选项:

linuxidc@linuxidc:~$ dig +short m.linuxidc.com
122.228.238.15
106.119.182.141

Linux dig 命令使用详解

这下显示的结果就清爽多了。
其实我们还可以通过更多选项来控制输出的内容,比如只想显示 "ANSWER SECTION" 的内容:

linuxidc@linuxidc:~$ dig m.linuxidc.com +nocomments +noquestion +noauthority +noadditional +nostats

; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> m.linuxidc.com +nocomments +noquestion +noauthority +noadditional +nostats
;; global options: +cmd
m.linuxidc.com.  5 IN A 122.228.238.15
m.linuxidc.com.  5 IN A 106.119.182.141

Linux dig 命令使用详解

这个结果很不错,就是使用的选项太多了(dig 命令有很多这样的选项,详情请参考使用手册)。我们可以换一种优雅一些的方式来实现和上面相同的结果:

linuxidc@linuxidc:~$ dig m.linuxidc.com +noall +answer

; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> m.linuxidc.com +noall +answer
;; global options: +cmd
m.linuxidc.com.  5 IN A 113.107.238.212
m.linuxidc.com.  5 IN A 122.228.238.15

Linux dig 命令使用详解

 

跟踪整个查询过程

如果你好奇 dig 命令执行查询时都经历了哪些过程,你可以尝试使用 +trace 选项。它会输出从根域到最终结果的所有信息:

linuxidc@linuxidc:~$ dig sohu.com @202.102.134.68 -p 53 -t MX +trace

; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> sohu.com @202.102.134.68 -p 53 -t MX +trace
;; global options: +cmd
.   482761 IN NS f.root-servers.net.
.   482761 IN NS a.root-servers.net.
.   482761 IN NS c.root-servers.net.
.   482761 IN NS b.root-servers.net.
.   482761 IN NS j.root-servers.net.
.   482761 IN NS d.root-servers.net.
.   482761 IN NS k.root-servers.net.
.   482761 IN NS e.root-servers.net.
.   482761 IN NS h.root-servers.net.
.   482761 IN NS i.root-servers.net.
.   482761 IN NS m.root-servers.net.
.   482761 IN NS g.root-servers.net.
.   482761 IN NS l.root-servers.net.
;; Received 239 bytes from 202.102.134.68#53(202.102.134.68) in 40 ms

com.   172800 IN NS d.gtld-servers.net.

Linux dig 命令使用详解

上图中显示的并不是一个完整的结果,感兴趣的朋友可以自己尝试。

显示13个根域服务器

internet上有13个根域服务器,使用不加参数的dig命令显示这些服务器信息

linuxidc@linuxidc:~$ dig

; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>>
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41525
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;.    IN NS

;; ANSWER SECTION:
.   5 IN NS b.root-servers.net.
.   5 IN NS c.root-servers.net.
.   5 IN NS d.root-servers.net.
.   5 IN NS e.root-servers.net.
.   5 IN NS f.root-servers.net.
.   5 IN NS g.root-servers.net.
.   5 IN NS h.root-servers.net.
.   5 IN NS i.root-servers.net.
.   5 IN NS j.root-servers.net.
.   5 IN NS k.root-servers.net.
.   5 IN NS l.root-servers.net.
.   5 IN NS m.root-servers.net.
.   5 IN NS a.root-servers.net.

;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Sun Mar 03 11:37:11 CST 2019
;; MSG SIZE  rcvd: 239

Linux dig 命令使用详解

总结

dig 是一个很给力 DNS 查询工具,本文仅介绍了其常见用法,更多的命令选项及使用方法请查看 man page。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/143530.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

dig命令笔记

dig 命令全称域信息搜索器&#xff0c;是一个用于查询 DNS 域名服务器信息的命令行工具。因为dig命令灵活&#xff0c;容易使用&#xff0c;多数DNS管理员使用dig命令来诊断 DNS 问题。 dig 常用命令格式 dig [server] [-p port] [-t type] [-4] [-6] [trace] name 指定 DNS …

linux中dig 命令解释

dig&#xff08;域信息搜索器&#xff09;命令是个用于询问 DNS 域名服务器的灵活的工具。他执行 DNS 搜索&#xff0c;显示从受请求的域名服务器返回的答复。多数 DNS 管理员利用 dig 作为 DNS 问题的故障诊断&#xff0c;因为他灵活性好、易用、输出清楚 1、A记录&#xff1…

从dig命令理解DNS

DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;&#xff0c;是一种用于将域名解析为IP的服务器系统&#xff0c;当你上网时输入一个网址&#xff0c;它之所以能够找到该网址指向的服务器地址&#xff0c;都是靠域名系统来进行解析的。 先来讲讲域名。以华…

dig命令(dig命令怎么用)

林肯公园digdeeper是哪首歌 出自专辑《Minutes to Midnight》 nslookup、dig和host这几个命令有什么作用&#xff1f; nslookup、dig和host 这几个命令在UNIX和linux系统中使用,都可以进行域名的解析?nslookup使用交互方式查询域名与IP地址的映射关系?dig的功能是发送域名查…

Windows10 下安装 dig 命令的步骤(一)

前言&#xff1a; 今天在电脑上解析域名&#xff0c;但是发现dig命令报以下错误&#xff1a; Dig 工具全称为域名信息搜索器&#xff08;Domain InformationGroper&#xff09;&#xff0c;能够显示详细的DNS查询过程&#xff0c;是一个非常强大的DNS故障诊断工具。一般Linux…

linux中dig命令返回结果解释

dig baidu.com 返回 下面说明各项意义&#xff1a; ; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> baidu.com ;; global options: printcmd dig程序的版本号&#xff0c;和要查询的域名 Dig的部分输出告诉我们一些有关于它的版本信息(versio…

Windows系统下安装dig命令

dig 是一个 Linux 下用来 DNS 查询信息的工具&#xff0c;全称是Domain Information Groper&#xff0c;与 nslookup 类似&#xff0c;但比 nslookup 功能更强大。Windows 下只有 nslookup&#xff0c;如果也想用到 dig 命令&#xff0c;就只能自己动手安装了。 dig 作为 bind …

(学习日记)AD学习 #4

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

Excel表格匹配合并

在日常的工作中&#xff0c;免不了存在多个表格根据相同数据匹配合并的情况&#xff0c;很多人会因为复杂的公式导致匹配失败或错误。接下来&#xff0c;我将用一个简单的方式完成这一个任务。 1、打开网址www.excelutil.com 2、选择匹配合并 3、上传左文件和右文件 这两个文…

Excel模糊匹配相同内容的数据求和,使用SUMIF函数

看到朋友在对Excel表格数据进行机械操作&#xff0c;想到excel应该是个很强大的应用&#xff0c;这些机械操作应该可以通过函数简化操作的&#xff0c;于是不正经的研究下。 首先我们上图&#xff1a; 简单的需求&#xff0c;把每个店铺的每个月充值分别是200,500,1000,1500,2…

大模型时代的prompt学习(持续更新)

目录 为什么要学prompt基本原则prompt撰写框架Base Prompt FrameworkCRISPE Prompt Framework 场景撰写文案文档竞品分析产品设计数据分析 chain of thoughtzero shotin context learning(few shot)Self-Consistency Program-Aidedprompt tipsTo Do and Not To Doadd examples引…

excel数据分析 - 8个关联匹配类函数

1. LOOKUP函数 ①单条件定位查找 lookup( 待匹配内容, 待匹配内容所在区域 , 结果范围显示区域 ) 两个区域的列数需相同 e.g. 查找 “东区”对应的C1省会城市&#xff0c; lookup &#xff08;A2, A:A , C:C &#xff09; 杭州 A1B1C1东区 浙江杭州西区甘肃兰州 ②多条…

python excel 数据匹配_python将一个excel表格的数据匹配到另一个表中

python将一个excel表格的数据匹配到另一个表中 python将一个excel表格的数据匹配到另一个表中 打开excel表&#xff0c;需要在另一个表中匹配相应学生姓名的学号信息。 之前尝试了excel中的VLOOKUP函数&#xff0c;试了很多次都没有成功&#xff0c;因此&#xff0c;用python试…

EXCEL省份和年份的数据匹配

目录 EXCEL对两个满足两个条件的数据匹配公式 使用的函数 实例一 实例二 可能存在的问题 参考 本文用于记录处理数据的一些经验和方法 EXCEL对两个满足两个条件的数据匹配公式 使用的函数 INDEX(array, row_num, [column_num]) 说明&#xff1a;函数返回表格或区域中…

Excel的两个表格按照某一列数据进行匹配

我们在操作excel表的时&#xff0c;有时需要将一个excel表中的数据匹配到另一个表中&#xff0c;那么就需要用到VLOOKUP函数&#xff0c;VLOOKUP函数是Excel中的一个纵向查找函数&#xff0c;VLOOKUP是按列查找&#xff0c;最终返回该列所需查询列序所对应的值&#xff0c;下面…

JPA - JPQL完成复杂的多表查询

目录 前言示例建表语句Entity实体JPQL多表查询完整代码调用结果 前言 JPA中可以通过设置实体的导航属性 JPQL完成复杂的多表查询&#xff0c;简化SQL的编写。 示例 建表语句 Table CREATE TABLE school (id int(11) DEFAULT NULL,name varchar(50) COLLATE utf8_unicode_c…

JPQL HQL Spring Data JPA @Query | 最全知识清单

简单介绍 JPQL: JPA的一部分&#xff0c;是一个平台无关的面向对象查询语言&#xff0c;通过类似 SQL 的语句进行 JPA 查询&#xff0c;这在构建动态查询时非常有用。样子 SELECT u FROM User u WHERE u.status :status and u.name :name HQL: Hibernate 的面向对象查询…

JPA的查询语言JPQL

JPA的查询语言(JPQL)是一种和SQL非常类似的中间性和对象化查询语言。它可以被编译成不同的底层数据库能接受的SQL&#xff0c;从而屏蔽不同数据库的差异&#xff0c;确保用JPQL查询语言编写的代码可在不同的数据库上运行。比起EJB 2.1的查询语言&#xff0c;EJB3可以运行期构造…

JPQL语句

JPQL语言 JPQL语言&#xff0c;即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言&#xff0c;它最终会被编译成针对不同底层数据库的 SQL 查询&#xff0c;从而屏蔽不同数据库的差异。 JPQL语言的语句可以是 select 语句、upda…

jpa之jpql查询

JPQL介绍 JPQL语言&#xff0c;即 Java Persistence Query Language 的简称。JPQL 是一种和 SQL 非常类似的中间性和对象化查询语言&#xff0c;它最终会被编译成针对不同底层数据库的 SQL 查询&#xff0c;从而屏蔽不同数据库的差异。如果会hibernate的hql查询&#xff0c;那…