dig 命令使用技巧

in Notes with 1 comment

学习 Consul 的过程中,遇到 DNS 接口的部分,借此机会顺便学一波 dig 命令的使用,并写下下面的内容。

dig,和 nslookup 作用有些类似,都是DNS查询工具。dig,其实是一个缩写,即Domain Information Groper。

一些专业的DNS管理员在追查DNS问题时,都乐于使用dig命令,是看中了dig设置灵活、输出清晰、功能强大的特点。

安装 dig

yum install bind-utils

理解输出信息的意思

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

dig www.linpx.com

100841547564405_.pic_hd.jpg

dig 命令默认的输出信息比较丰富,大概可以分为 5 个部分。

默认情况下 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 记录(反垃圾邮件)。

dig 的更多用法

通过 man dig 获取更多 dig 的使用帮助,列举部分如下:

Usage:  dig [@global-server] [domain] [q-type] [q-class] {q-opt}
            {global-d-opt} host [@local-server] {local-d-opt}
            [ host [@local-server] {local-d-opt} [...]]
Where:  domain      is in the Domain Name System
        q-class  is one of (in,hs,ch,...) [default: in]
        q-type   is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default:a]
                 (Use ixfr=version for type ixfr)
        q-opt    is one of:
                 -x dot-notation     (shortcut for reverse lookups)
                 -i                  (use IP6.INT for IPv6 reverse lookups)
                 -f filename         (batch mode)
                 -b address[#port]   (bind to source address/port)
                 -p port             (specify port number)
                 -q name             (specify query name)
                 -t type             (specify query type)
                 -c class            (specify query class)
                 -k keyfile          (specify tsig key file)
                 -y [hmac:]name:key  (specify named base64 tsig key)
                 -4                  (use IPv4 query transport only)
                 -6                  (use IPv6 query transport only)
                 -m                  (enable memory usage debugging)

部分选项的补充说明:

跟踪 dig 全过程

dig非常著名的一个查询选项就是+trace,当使用这个查询选项后,dig会从根域查询一直跟踪直到查询到最终结果,并将整个过程信息输出出来。

dig +trace www.linpx.com

; <<>> DiG 9.10.6 <<>> +trace www.linpx.com
;; global options: +cmd
.            259959    IN    NS    l.root-servers.net.
.            259959    IN    NS    i.root-servers.net.
.            259959    IN    NS    k.root-servers.net.
.            259959    IN    NS    b.root-servers.net.
.            259959    IN    NS    a.root-servers.net.
.            259959    IN    NS    h.root-servers.net.
.            259959    IN    NS    c.root-servers.net.
.            259959    IN    NS    g.root-servers.net.
.            259959    IN    NS    f.root-servers.net.
.            259959    IN    NS    e.root-servers.net.
.            259959    IN    NS    d.root-servers.net.
.            259959    IN    NS    m.root-servers.net.
.            259959    IN    NS    j.root-servers.net.
;; Received 339 bytes from 192.168.31.1#53(192.168.31.1) in 51 ms

com.            172800    IN    NS    l.gtld-servers.net.
com.            172800    IN    NS    h.gtld-servers.net.
com.            172800    IN    NS    e.gtld-servers.net.
com.            172800    IN    NS    j.gtld-servers.net.
com.            172800    IN    NS    m.gtld-servers.net.
com.            172800    IN    NS    c.gtld-servers.net.
com.            172800    IN    NS    b.gtld-servers.net.
com.            172800    IN    NS    d.gtld-servers.net.
com.            172800    IN    NS    f.gtld-servers.net.
com.            172800    IN    NS    a.gtld-servers.net.
com.            172800    IN    NS    k.gtld-servers.net.
com.            172800    IN    NS    i.gtld-servers.net.
com.            172800    IN    NS    g.gtld-servers.net.
com.            86400    IN    DS    30909 8 2 E2D3C916F6DEEAC73294E8268FB5885044A833FC5459588F4A9184CF C41A5766
com.            86400    IN    RRSIG    DS 8 1 86400 20190128050000 20190115040000 16749 . b05rLsStUJJtB1apLb5OyQdmW9uxP4il93QHIMYEYbujgyfM5vHMoxcV TVxLobK/+hjrXlWC42jFA0Z6A+VIpo81t0Il4QWTq9oa6SAT7YpyfdMo MbxJh7gtHLlpzZDbuFfGaqgAEU26J5WQ3/r/7SHh2yBYfuWGbNjajbaT TPINPRiDB3byWaXeEgVhWn+8jGPwUITPFJW6Xuhy8RWDHiM9N4qe4uZV OeLTO/H2pODGvIs1osw/BN4CdN1zgnulK+IMhVWihki6Omj2kHYFxHT9 fE/nOnDNGVrFiGtTmay6SuCrRzvKtEXXw5pggEO1T2dudpaIURgKQII3 oScFLA==
;; Received 1173 bytes from 202.12.27.33#53(m.root-servers.net) in 189 ms

linpx.com.        172800    IN    NS    vip1.alidns.com.
linpx.com.        172800    IN    NS    vip2.alidns.com.
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN NSEC3 1 1 0 - CK0Q1GIN43N1ARRC9OSM6QPQR81H5M9A  NS SOA RRSIG DNSKEY NSEC3PARAM
CK0POJMG874LJREF7EFN8430QVIT8BSM.com. 86400 IN RRSIG NSEC3 8 2 86400 20190119054242 20190112043242 37490 com. ELqwhVedLdRD0AC7RtXYFvUCZ5cv34ywi4gl7RXMe4AheO8nzL51s83h pwW9A82twu9PuqOv3T2jPtBR9y/34okW6AYycHIjxz3EOFeX4ENjDVON glkhiu5oU9B25HVYbM/AKSjAEweV3KmXGEUNvZBwl2eYgGL45hKRevhi C3s=
8KS5LSSC5GOG7CO7OVMQ5T1LRLA9Q7AI.com. 86400 IN NSEC3 1 1 0 - 8KS8A4MMD5IEOOBOLRTG22FD42PDPLAT  NS DS RRSIG
8KS5LSSC5GOG7CO7OVMQ5T1LRLA9Q7AI.com. 86400 IN RRSIG NSEC3 8 2 86400 20190122060522 20190115045522 37490 com. DnFGpn4CJtnls9iGjLqtxsELjSGOrOMuUVir84xHeqDgDfkAFfjWMuLH VGxZuGcWeTBLtcNjG9sk+KB0O2saM3849IP7vwqyp7tcREwjiRyOio7q Q/1WFf3HqA7BTJJLg4FclaHelE+ab9rXa9fdnbgaysRGL5QpGIjIZ3be Y2Q=
;; Received 916 bytes from 192.42.93.30#53(g.gtld-servers.net) in 298 ms

www.linpx.com.        600    IN    A    139.129.42.236
;; Received 58 bytes from 140.205.228.51#53(vip1.alidns.com) in 33 ms

DNS 缓存

假如 DNS 服务器每次都需要迭代或递归查询上一级的 DNS 服务器,那么 DNS 可能就不堪重负,考虑到域名的 DNS 信息不会频繁的修改,所以每一级中的 DNS 服务器都会缓存结果(包括浏览器这样的客户端也会缓存 DNS 结果)。

缓存带来的弊端可能就是 DNS 信息可能不是最新的,比如某个域名管理员修改了某个域名的 A 记录,由于每一级的 DNS 服务器都有缓存,所以最后客户端拿到的结果不是最新的,为了获取到最新的结果,可以直接向权威域名服务器进行信息查询。

结束

大概就这样吧~

Responses
  1. wwaf

    宅男福利 https://6wll.com

    Reply