dig挖出DNS的秘密
【最简单的dig用法】
最简单的dig用法,当然就是直接输入dig按回车。
1
2
3
4
5
6
|
$ dig ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> //Dig 命令的版本信息 ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
从上面的输出,你一定观察到了,当直接使用dig命令,不加任何参数和选项时,dig会向默认的上连DNS服务器查询“.”(根域)的NS记录。
【dig加个点】
刚才直接输入dig,这次我们在后面加上一个“.”,看看结果和刚才有何区别:
1
2
3
4
5
6
|
$ dig . ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> . ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
【我想用google-DNS来查baidu.com的A记录】
1
2
3
4
5
6
7
|
$ dig @8.8.8.8 www.baidu.com A // 命令格式为 dig @dnsserver name querytype ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> @8.8.8.8 www.baidu.com A ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
从这个例子,大家学习到了dig的基本的命令格式是:
1
|
dig @dnsserver name querytype |
如果你设置的dnsserver是一个域名,那么dig会首先通过默认的上连DNS服务器去查询对应的IP地址,然后再以设置的dnsserver为上连DNS服务器。
如果你没有设置@dnsserver,那么dig就会依次使用/etc/resolv.conf里的地址作为上连DNS服务器。
而对于querytype,如果你看过我上一篇有关nslookup命令的讲解,那么你应该对querytype有所了解,你可以设置A/AAAA/PTR/MX/ANY等值,默认是查询A记录。
【一些常用的选项】
1 -c选项,可以设置协议类型(class),包括IN(默认)、CH和HS。
2 -f选项,dig支持从一个文件里读取内容进行批量查询,这个非常体贴和方便。文件的内容要求一行为一个查询请求。来个实际例子吧:
01
02
03
04
05
06
07
08
09
10
11
|
$ cat querylist // 文件内容,共有两个域名需要查询 www.baidu.com www.sohu.com $ dig -f querylist -c IN -t A // 设置-f参数开始批量查询 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> www.sohu.com ;; Got answer: ;; ->>HEADER< |
3 -4和-6两个选项,用于设置仅适用哪一种作为查询包传输协议,分别对应着IPv4和IPv6。
4 -t选项,用来设置查询类型,默认情况下是A,也可以设置MX等类型,来一个例子:
1
2
3
4
5
6
|
$ dig roclinux.cn -t MX ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> roclinux.cn -t MX ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
5 -q选项,其实它本身是一个多余的选项,但是它在复杂的dig命令中又是那么的有用。-q选项可以显式设置你要查询的域名,这样可以避免和其他众多的参数、选项相混淆,提高了命令的可读性,来个例子:
1
2
3
4
5
6
|
$ dig -q www.roclinux.cn ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> -q www.roclinux.cn ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
6 -x选项,是逆向查询选项。可以查询IP地址到域名的映射关系。举一个例子:
1
2
3
4
5
6
|
$ dig -x 193.0.14.129 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> -x 193.0.14.129 ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
【dig特有的查询选项(query option)】
和刚才的选项不同,dig还有一批所谓的“查询选项”,这批选项的使用与否,会影响到dig的查询方式或输出的结果信息,因此对于这批选项,dig要求显式的在其前面统一的加上一个“+”(加号),这样dig识别起来会更方便,同时命令的可读性也会更强。
dig总共有42个查询选项,涉及到DNS信息的方方面面,如此多的查询选项,本文不会一一赘述,只会挑出最最常用的几个重点讲解。
【TCP代替UDP】
众所周知,DNS查询过程中的交互是采用UDP的。如果你希望采用TCP方式,需要这样:
1
2
3
4
5
6
|
$ dig +tcp www.baidu.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> +tcp www.baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
【默认追加域】
大家直接看例子,应该就能理解“默认域”的概念了,也就能理解+domain=somedomain的作用了:
1
2
3
4
5
6
|
dig +domain=baidu.com image ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6_3.2 <<>> +domain=baidu.com image ;; global options: +cmd ;; Got answer: ;; ->>HEADER< |
【跟踪dig全过程】
dig非常著名的一个查询选项就是+trace,当使用这个查询选项后,dig会从根域查询一直跟踪直到查询到最终结果,并将整个过程信息输出出来。
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
$ dig +trace roclinux.cn ; <<>> DiG 9.2.4 <<>> +trace roclinux.cn ;; global options: printcmd . 335937 IN NS l.root-servers.net. . 335937 IN NS b.root-servers.net. . 335937 IN NS d.root-servers.net. . 335937 IN NS k.root-servers.net. . 335937 IN NS h.root-servers.net. . 335937 IN NS j.root-servers.net. . 335937 IN NS a.root-servers.net. . 335937 IN NS e.root-servers.net. . 335937 IN NS c.root-servers.net. . 335937 IN NS m.root-servers.net. . 335937 IN NS g.root-servers.net. . 335937 IN NS i.root-servers.net. . 335937 IN NS f.root-servers.net. ;; Received 400 bytes from 10.23.0.231 #53(10.23.0.231) in 0 ms //从本地DNS查找到根域DNS列表 cn. 172800 IN NS c.dns.cn. cn. 172800 IN NS a.dns.cn. cn. 172800 IN NS b.dns.cn. cn. 172800 IN NS e.dns.cn. cn. 172800 IN NS ns.cernet.net. cn. 172800 IN NS d.dns.cn. ;; Received 292 bytes from 192.228.79.201 #53(b.root-servers.net) in 460 ms //选择了b.root-servers.net这台根域DNS来查找cn.域DNS列表 roclinux.cn. 21600 IN NS ns11.edong.com. roclinux.cn. 21600 IN NS ns12.edong.com. ;; Received 76 bytes from 203.119.27.1 #53(c.dns.cn) in 0 ms //选择了c.dns.cn这台cn.域DNS服务器来查找roclinux.cn的DNS列表 roclinux.cn. 3600 IN A 116.255.245.206 roclinux.cn. 3600 IN NS ns12.edong.com. roclinux.cn. 3600 IN NS ns11.edong.com. ;; Received 124 bytes from 61.147.124.145 #53(ns11.edong.com) in 104 ms //最终查找到A记录 |
【精简dig输出】
1 使用+nocmd的话,可以节省输出dig版本信息。
2 使用+short的话,仅会输出最精简的CNAME信息和A记录,其他都不会输出。就像这样:
1
2
3
4
|
$ dig +short www.baidu.com www.a.shifen.com. 119.75.218.77 119.75.217.56 |
3 使用+nocomment的话,可以节省输出dig的详情注释信息。
4 使用+nostat的话,最后的统计信息也不会输出。当+nocmd、+nocomment和+nostat都是用上,是这样:
1
2
3
4
5
|
$ dig +nocmd +nocomment +nostat www.baidu.com ;www.baidu.com. IN A www.baidu.com. 260 IN CNAME www.a.shifen.com. www.a.shifen.com. 244 IN A 119.75.217.56 www.a.shifen.com. 244 IN A 119.75.218.77 |
【我们还需要学习什么】
坚持看我的博客的同学,已经掌握了nslookup和dig两个DNS工具,我想,下一步你可以
自己搭建一套内部的DNS服务器了,自己设置master/slave服务器,自己添加Zone,
自己添加正解、反解,自己设置缓存超时等等,相信通过这一番折腾,
你对DNS会有不一样的理解和认识。
dig挖出DNS的秘密的更多相关文章
- Linux命令之dig命令挖出DNS的秘密
=== [初次见面] 我相信使用nslookup的同学一定比使用dig的同学多,所以还是有必要花些时间给大家介绍一下dig的. dig,和nslookup作用有些类似,都是DNS查询工具. dig,其 ...
- DiG HOWTO How to use dig to query DNS name servers.
Contents Introduction Understanding the default output What can I discover? How do I … Get a short a ...
- 一步一步挖出Compute
前几天在做结账的时候,对数据表DataGridView控件的单列求和纠结了一番. 如今差点儿养成了习惯,对于一些东西疏于開始的思考,不会先想到百度,这里我是先想到了第一版的机房收费那块的 ...
- DNS相关知识
1 DNS解析过程详解 2 DNS原理总结及其解析过程详解 3 DNS原理及其解析过程[精彩剖析] 4 DNS域名解析原理 5 dig挖出DNS的秘密 6 nslookup通往DNS的桥梁 7 DNS ...
- Domain Name System (DNS)
1.DNS和WINS的作用 DNS:(Domain Name Server,域名服务)用于实现域名和IP地址的相互转换. WINS:(Windows Internet Name Service) 用来 ...
- 工作中常用的 Linux 命令
awk 示例: env变量值如下,需要获得pkg_url的链接值: {"name": "michael", "sex": "mal ...
- 使用dig查询dns解析
原文地址:使用dig查询dns解析 作者:chenwenming 一般来说linux下查询域名解析有两种选择,nslookup或者dig,而在使用上我觉得dig更加方便顺手. 如果是在debian下的 ...
- DNS信息收集工具dig使用
Dig是域信息搜索器的简称(Domain Information Groper),使用dig命令可以执行查询域名相关的任务 常见域名记录: A(主机记录 把一个域名解析成IP地址) C name(别名 ...
- 10 Linux DIG Command Examples for DNS Lookup--reference
by RAMESH NATARAJAN on FEBRUARY 29, 2012 http://www.thegeekstuff.com/2012/02/dig-command-examples/ D ...
随机推荐
- 如何实现dede首页栏目文章指定调用
如何实现dede首页栏目文章指定调用,首页文章栏目指定ID调用 dobote | 浏览 11891 次 推荐于2016-05-20 10:53:26 最佳答案 {dede:arclist flag=' ...
- win7下IIS的安装和配置
win7下IIS的安装和配置 图文教程,需要的朋友可以参考下 http://www.jb51.net/article/29787.htm 最近工作需要IIS,自己的电脑又是Windows7系统,找了下 ...
- thinkphp3.2后台模块怎么添加(admin),直接复制Home?还是在入口文件生成?
1.都可以,复制home改下命名空间也行,在入口添加下参数自动生成也行 2ThinkPHP3.2后支持模块化开发,在Home目录的同级目录下创建一个新的文件夹,命名为Admin,或者就如你自己所说,直 ...
- Aliase_小白学Python_Day0_前言
听到有老师介绍,说你为什么不把你的学习过程保存下来,一是当做总结,二是作为分享.我想,也对.这算是我的第一个博客,本次想写写我为什么选择学习Python. 很多人都问过我一个问题,行业那么多,你为什么 ...
- 我的java学习之路--Java注解专题
学习网址:http://www.imooc.com/video/8861 1.引言 2.Java中的常见注解 JDK自带注解:<br>@Override @Deprecated @Supp ...
- Python-Blog1-搭建开发环境
注:本系列是根据廖雪峰python实战过程,详情可见(https://www.liaoxuefeng.com/) 环境准备 Python 版本:Python 3.X,查看python版本python ...
- DS18B20温度传感器知识点总结
2018-01-1818:20:48 感觉自己最近有点凌乱,一个很简单的问题都能困扰自己很久.以前能很好使用和调试的DS18B20温度传感器,今天愣是搞了很久,妈卖批. 仅仅一个上拉电阻就困扰了我很久 ...
- arduino笔记
接下来,初来博客,准备自己也写一系列的arduino的学习经验. http://zhongbest.com/2017/05/23/arduino%e4%b8%ad%e7%9a%84%e4%b8%ad% ...
- awk的sub函数和gsub函数的用法
1. sub函数 [root@nhserver1 10]# echo "a b c 2011-11-22 a:d" | awk 'sub(/-/,"",$4)' ...
- Event Sourcing pattern
Event Sourcing pattern Instead of storing just the current state of the data in a domain, use an app ...