hana_shinのLinux技術ブログ

Linuxの技術情報を掲載しています。特にネットワークをメインに掲載していきます。

digコマンドの使い方



1 digコマンドとは?

digコマンドは、DNSサーバ(*)に対して問い合わせを行い、その結果を表示します。 権威DNSサーバに問い合わせをする場合は、+norecurseオプションを指定します。

(*) キャッシュDNSサーバ、および権威DNSサーバのことを意味します。

その他、以下の記事も作成しました。
BINDの使い方(ゾーン転送) - hana_shinのLinux技術ブログ
BINDの使い方(TSIG) - hana_shinのLinux技術ブログ
DNSSECコマンドの使い方 - hana_shinのLinux技術ブログ

2 検証環境

CentOS版数は以下のとおりです。

[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)

カーネル版数は以下のとおりです。

[root@server ~]# uname -r
3.10.0-1160.el7.x86_64

検証で使用したキャッシュDNSサーバのIPアドレスは192.168.2.1です。

[root@server ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search flets-east.jp iptvf.jp
nameserver 192.168.2.1
nameserver 240b:11:4462:b10:6ab:18ff:fe77:63df

3 インストール方法

bind-utilsパッケージをインストールします。

[root@server ~]# yum -y install bind-utils

版数を確認します。

[root@server ~]# dig -v
DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8

4 オプション一覧

[root@server ~]#  dig -h
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:
                 -4                  (use IPv4 query transport only)
                 -6                  (use IPv6 query transport only)
                 -b address[#port]   (bind to source address/port)
                 -c class            (specify query class)
                 -f filename         (batch mode)
                 -i                  (use IP6.INT for IPv6 reverse lookups)
                 -k keyfile          (specify tsig key file)
                 -m                  (enable memory usage debugging)
                 -p port             (specify port number)
                 -q name             (specify query name)
                 -t type             (specify query type)
                 -u                  (display times in usec instead of msec)
                 -x dot-notation     (shortcut for reverse lookups)
                 -y [hmac:]name:key  (specify named base64 tsig key)
        d-opt    is of the form +keyword[=value], where keyword is:
                 +[no]aaflag         (Set AA flag in query (+[no]aaflag))
                 +[no]aaonly         (Set AA flag in query (+[no]aaflag))
                 +[no]additional     (Control display of additional section)
                 +[no]adflag         (Set AD flag in query (default on))
                 +[no]all            (Set or clear all display flags)
                 +[no]answer         (Control display of answer section)
                 +[no]authority      (Control display of authority section)
                 +[no]badcookie      (Retry BADCOOKIE responses)
                 +[no]besteffort     (Try to parse even illegal messages)
                 +bufsize=###        (Set EDNS0 Max UDP packet size)
                 +[no]cdflag         (Set checking disabled flag in query)
                 +[no]class          (Control display of class in records)
                 +[no]cmd            (Control display of command line)
                 +[no]comments       (Control display of comment lines)
                 +[no]cookie         (Add a COOKIE option to the request)
                 +[no]crypto         (Control display of cryptographic fields in records)
                 +[no]defname        (Use search list (+[no]search))
                 +[no]dnssec         (Request DNSSEC records)
                 +domain=###         (Set default domainname)
                 +[no]dscp[=###]     (Set the DSCP value to ### [0..63])
                 +[no]edns[=###]     (Set EDNS version) [0]
                 +ednsflags=###      (Set EDNS flag bits)
                 +[no]ednsnegotiation (Set EDNS version negotiation)
                 +ednsopt=###[:value] (Send specified EDNS option)
                 +noednsopt          (Clear list of +ednsopt options)
                 +[no]expire         (Request time to expire)
                 +[no]fail           (Don't try next server on SERVFAIL)
                 +[no]header-only    (Send query without a question section)
                 +[no]identify       (ID responders in short answers)
                 +[no]idnin          (Parse IDN names)
                 +[no]idnout         (Convert IDN response)
                 +[no]ignore         (Don't revert to TCP for TC responses.)
                 +[no]keepopen       (Keep the TCP socket open between queries)
                 +[no]mapped         (Allow mapped IPv4 over IPv6)
                 +[no]multiline      (Print records in an expanded format)
                 +ndots=###          (Set search NDOTS value)
                 +[no]nsid           (Request Name Server ID)
                 +[no]nssearch       (Search all authoritative nameservers)
                 +[no]onesoa         (AXFR prints only one soa record)
                 +[no]opcode=###     (Set the opcode of the request)
                 +[no]qr             (Print question before sending)
                 +[no]question       (Control display of question section)
                 +[no]rdflag         (Recursive mode (+[no]recurse))
                 +[no]recurse        (Recursive mode (+[no]rdflag))
                 +retry=###          (Set number of UDP retries) [2]
                 +[no]rrcomments     (Control display of per-record comments)
                 +[no]search         (Set whether to use searchlist)
                 +[no]short          (Display nothing except short
                                      form of answer)
                 +[no]showsearch     (Search with intermediate results)
                 +[no]sigchase       (Chase DNSSEC signatures)
                 +[no]split=##       (Split hex/base64 fields into chunks)
                 +[no]stats          (Control display of statistics)
                 +subnet=addr        (Set edns-client-subnet option)
                 +[no]tcp            (TCP mode (+[no]vc))
                 +timeout=###        (Set query timeout) [5]
                 +[no]topdown        (Do +sigchase in top-down mode)
                 +[no]trace          (Trace delegation down from root [+dnssec])
                 +trusted-key=####   (Trusted Key to use with +sigchase)
                 +tries=###          (Set number of UDP attempts) [3]
                 +[no]ttlid          (Control display of ttls in records)
                 +[no]ttlunits       (Display TTLs in human-readable units)
                 +[no]unknownformat  (Print RDATA in RFC 3597 "unknown" format)
                 +[no]vc             (TCP mode (+[no]tcp))
                 +[no]zflag          (Set Z flag in query)
        global d-opts and servers (before host name) affect all queries.
        local d-opts and servers (after host name) affect only that lookup.
        -h                           (print help and exit)
        -v                           (print version and exit)

5 基本的な使い方(正引き)

正引きとは、ホスト名からIPアドレスを求めることを意味します。

5.1 正引きした結果を全て表示する方法

東京都のwww.metro.tokyo.jpというホスト名のIPアドレスを求めてみます。 実行結果のANSWER SECTIONを確認すると、www.metro.tokyo.jpのIPアドレスが、 27.110.42.78であることがわかります。

[root@server ~]# dig www.metro.tokyo.jp

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.metro.tokyo.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 28696
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.metro.tokyo.jp.            IN      A

;; ANSWER SECTION:
www.metro.tokyo.jp.     3600    IN      A       27.110.42.78

;; Query time: 16 msec
;; SERVER: 192.168.2.1#53(192.168.2.1)
;; WHEN: 水 12月 22 20:28:57 JST 2021
;; MSG SIZE  rcvd: 63

なお、上記実行結果の;;SERVER: 192.168.2.1#53(192.168.2.1)の部分は、 /etc/resolv.confで指定するキャッシュDNSサーバのIPアドレスになります。

[root@server ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search flets-east.jp iptvf.jp
nameserver 192.168.2.1
nameserver 240b:11:4462:b10:6ab:18ff:fe77:63df

5.2 簡易表示する方法(+short)

ホスト名に対するIPアドレスだけを表示する場合は、+shortオプションを指定します。

[root@server ~]# dig www.metro.tokyo.jp +short
27.110.42.78

5.3 キャッシュDNSサーバを指定する方法(@キャッシュDNSサーバのIPアドレス)

次に、キャッシュDNSサーバのIPアドレスとして、googleGoogle Public DNS(8.8.8.8)を指定してみます。 キャッシュDNSサーバのIPアドレスを明に指定する場合は、@を使います。

実行結果のANSWER SECTIONを確認すると、www.metro.tokyo.jpのIPアドレスが、 27.110.42.78であることがわかります。

[root@server ~]# dig @8.8.8.8 www.metro.tokyo.jp

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> @8.8.8.8 www.metro.tokyo.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7933
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.metro.tokyo.jp.            IN      A

;; ANSWER SECTION:
www.metro.tokyo.jp.     3567    IN      A       27.110.42.78

;; Query time: 15 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 水 12月 22 20:40:23 JST 2021
;; MSG SIZE  rcvd: 63

6 タイプの使い方(-t)

6.1 NSレコードを取得する方法(-t NS)

NSレコードには、ドメインの権威DNSサーバのホスト名が登録されています。 ここでは、metro.tokyo.jpドメインの権威DNSサーバのホスト名を調べてみます。 digコマンドの実行結果よりmetro.tokyo.jpドメインには、下記4つの権威DNSサーバが動作していることがわかります。

・ns.metro.tokyo.jp. ・ns6.metro.tokyo.jp. ・ns4.metro.tokyo.jp. ・nameserver3.kvh.ne.jp.

[root@server ~]# dig -t NS metro.tokyo.jp

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -t NS metro.tokyo.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18185
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;metro.tokyo.jp.                        IN      NS

;; ANSWER SECTION:
metro.tokyo.jp.         3600    IN      NS      ns.metro.tokyo.jp.
metro.tokyo.jp.         3600    IN      NS      ns6.metro.tokyo.jp.
metro.tokyo.jp.         3600    IN      NS      ns4.metro.tokyo.jp.
metro.tokyo.jp.         3600    IN      NS      nameserver3.kvh.ne.jp.

;; Query time: 16 msec
;; SERVER: 192.168.2.1#53(192.168.2.1)
;; WHEN: 水 12月 22 20:44:28 JST 2021
;; MSG SIZE  rcvd: 129

また、次のように+shortオプションを付けると権威DNSサーバのホスト名だけが表示されます。

[root@server ~]# dig -t NS metro.tokyo.jp +short
ns6.metro.tokyo.jp.
nameserver3.kvh.ne.jp.
ns.metro.tokyo.jp.
ns4.metro.tokyo.jp.

6.2 MXレコードを取得する方法(-t MX)

MXレコードには、ドメインのメールサーバのホスト名が登録されています。 ここでは、metro.tokyo.jpドメインのメールサーバを調べてみます。 digコマンドの実行結果よりmetro.tokyo.jpドメインには ml1.tisc.tokyo.jpという名前のメールサーバが動作していることがわかります。

[root@server ~]# dig -t MX metro.tokyo.jp +short
5 ml1.tisc.tokyo.jp.

ml1.tisc.tokyo.jp.の前の数字(5)は優先度を表します。 複数のメールサーバが動作している場合は、値が小さいものが優先度が高くなります。 DNSクライアントは、複数のメールサーバの中から優先度の高いメールサーバを選択します。

6.3 SPFレコードを取得する方法(-t TXT)

SPF(Sender Policy Framework)とは、送信ドメイン認証の仕組みです。 SPFというレコードはないため、SPFの情報はTXTレコードに登録されています。 東京都のmetro.tokyo.jpドメインには、SPFレコードは登録されていないようです。

[root@server ~]# dig -t TXT metro.tokyo.jp +short
[root@server ~]#

次に、富士通のjp.fujitsu.comドメインSPFレコードを調べてみます。 富士通SPFレコード(v=spf1...)が登録されています。 ip4:202.248.135.220/30等と記載されたIPアドレスのメールサーバからメールの送信が許可されていることがわかります。

[root@server ~]# dig -t TXT jp.fujitsu.com +short
"v=spf1 ip4:210.131.7.34/31 ip4:202.248.135.220/30 ip4:192.51.44.0/24 ip4:164.71.1.128/25 include:spf-in.fujitsu.co.jp include:aspmx.pardot.com mx:jp.fujitsu.com ?all"
"docusign=c70cb1ed-527f-4f12-9ae0-34c029eed387"
"MS=3A305C35F204C15598983DEDFDAE30633BD2A325"
"khi+KOAxPwLE0ByHNCVk0vvg7EAg0k8Nw635sha06rtdUyiBhlVItbqNrVTbzKmfR20Gz6DSt5Ry5o5c6VncIw=="
"nifty-dns-verify=d4b248be357dcb3f556af5b8c97088d0"

富士通からのメールを受信したメールサーバは、SPFレコードを使って、送信元ドメイン認証をおこなうことができます。

6.4 SOAレコードを取得する方法(-t SOA)

metro.tokyo.jpドメインSOAレコードを取得してみます。

[root@server ~]# dig -t SOA metro.tokyo.jp +noall +answer

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -t SOA metro.tokyo.jp +noall +answer
;; global options: +cmd
metro.tokyo.jp.         3600    IN      SOA     ns.metro.tokyo.jp. postmaster.ns.metro.tokyo.jp. 2021121001 7200 1800 691200 900

以下に、SOAレコードの見方を示します。 ns.metro.tokyo.jpは、metro.tokyo.jpドメインのプライマリDNSサーバです。

また、SOAレコード中の各値の意味は次のとおりです。

6.5 AAAAレコードを取得する方法(-t AAAA)

AAAAレコードは、ホスト名に対するIPv6アドレスが登録されています。 ここでは、jprs.jpドメインで定義されているAAAAレコードを取得してみます。 デフォルトのキャッシュDNSサーバ(192.168.3.1)では、AAAAを取得できなかったので、googleGoogle Public DNS(8.8.8.8)を使用しました。

[root@server ~]# dig -t AAAA @8.8.8.8 jprs.jp +short
2001:218:3001:7::b0

6.6 全てのリソースレコードを取得する方法(-t ANY)

jprs.jpドメインの全てのリソースレコードを取得してみました。 jprs.jpドメインを選択したのは、色々なリソースレコード(DNSKEYやRRSIG等)があったからです。(あまり深い意味はありません)

[root@server ~]# dig -t ANY @8.8.8.8 jprs.jp

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -t ANY @8.8.8.8 jprs.jp
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23405
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 25, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;jprs.jp.                       IN      ANY

;; ANSWER SECTION:
jprs.jp.                21600   IN      SOA     ns1.jprs.co.jp. postmaster.jprs.co.jp. 1639553472 3600 900 1814400 86400
jprs.jp.                21600   IN      RRSIG   SPF 8 2 86400 20220114063112 20211215063112 16929 jprs.jp. ARb5C+esI7kNA7BAOdZ9+H5cu3YuYGg2to+NXK0UJOfgV92WoIYulUZF EbFDSWisAp0QvVoB/RQZ73kbf68hNDomkxmkB1ORwvGp/dQVMuNlUZNr qR573R71C4SGW0r+ycti8nDSVD5pITvUWEVABHre3bcrto/t/z7e0WhW s74=
jprs.jp.                21600   IN      SPF     "v=spf1 ip4:202.11.17.32/27 ip4:202.11.16.144/28 ip4:117.104.133.128/28 ip6:2001:218:3001:17::/64 ip6:2001:df0:8:17::/64 include:spf.tricorn.net ?all"
jprs.jp.                0       IN      RRSIG   NSEC3PARAM 8 2 0 20220114063112 20211215063112 16929 jprs.jp. LGZSsxk+q+OLORpaHZYad5wDDiIwlKet6Eqr5P7yLKs2jsS2D5ZyLnrm GUbSa6icH4bSkj8yRnc59vnYQcZartnMD5mO42WdS2wJJRLhCgxdWMYj IRMkxSu4IULHrFmXROtUQ82E/sqXoLPsW8Hh2HfG89qH0zC/7EnLthOM r+A=
jprs.jp.                0       IN      NSEC3PARAM 1 0 8 C9F8D77C
jprs.jp.                21600   IN      RRSIG   DNSKEY 8 2 86400 20220114063112 20211215063112 59551 jprs.jp. I9T/hUBvaznl7B5r5bb8tBCOcqwFMxSIiGlt5kG6sTH8chk7k49+qI0P +NCx3wm3v0RNQVQ9wdQojRG7PuqKVNjiRFQQFIIDC3Wiu6j1Xz/6qFFa hQtQT178H+oh2zsdqJwvvJWlBhz9mPKaXtw8Lmgnymt4Nt3w92tGqJQ/ lGC9SXRxo+4nEdHxHumWu8ty+bIoSd3hc46zctd18yqAdvCTLD9HW1S1 /rk2lDqNLYXXV8A36KLBdNFvwnbuHsScKfvKuwopfaA4tfa1vyoXa/Rq R/64hxi8xzhIkt1YMWr1FYZnIzhasWWhGSMTyvWshFAl4CIomYwy6fBG LLTRYw==
jprs.jp.                21600   IN      DNSKEY  256 3 8 AwEAAbwhOOy9HraSkaHGCABzaE98ikAiFJjah+TypQ9tiiW5EojCIXr2 zz2UA8sZDVDJdW6cgdM/x0xBiCacERO1BJYcdLGIVHGetkeYUktFQfyg VKwOsSI0PTKLV1ZYJkAdLY1fJf24N1OQ8XM7dsBXuNHA1tbAP4dWLVyd IVhr6Dnt
jprs.jp.                21600   IN      DNSKEY  257 3 8 AwEAAbra/T97DN5jJRbB5GGs3xtONaJ3gcMHjkdYemjo6AxefvcSSr0q GrqnT9cd4XbnIEzxX6SyLo8dJRPpOPwz1LOJRNGiX0VdVDmMwAjVbbPd VSpcxnQ4XEmdWaWRYFIuPlVUgM/Sh+mSE4QOhae3Eaq4DY4PEY4uaVOL 8850pqEVATUQy6frhyr2q8x5efTOh+2S3QgjxllfN8/DPcAyL07XvCja nVAm1LuT5nzlhEpP3kHhcwkUrb/eEGVqfLUSUpmiWD3Hv+sHVbj4RTVz hReUt343AsqwG1O+BkQhVBT00PTGCqcx8MfzGta6pqsP64SkfU71XcYT /xF9gqvjw5M=
jprs.jp.                300     IN      RRSIG   AAAA 8 2 300 20220114063112 20211215063112 16929 jprs.jp. CVHdiVEN+S2GJXV0Yc8Jm5er6RvszyfDXDLqULdSRKC9j0wXYwBDqskn caTqJFZdpeFzgr2W0MuhtL49DMmmoOHOniLtWYNKZ9o7y734nTLDuZ2+ 8t4YXYbUqr1Sl8coKQIRtRVH5hii3ShU5fCdd/F7Vn4r3awKe22koh/A sfI=
jprs.jp.                300     IN      AAAA    2001:218:3001:7::b0
jprs.jp.                21600   IN      RRSIG   TXT 8 2 86400 20220114063112 20211215063112 16929 jprs.jp. tENN/WDa2f95vcWhmRd1l7LzEdaQgCqtJE157Ir5f3h0C0cVxEtP75rF vaQffeNpXh8Ymkoirn+hAJiLRZeQhp48M+sJ/W7zktI5Zsh5cdYxAA28 sSym1k+KgtezHrOnB3rzI45Yjpy28pA227ax4N77NBSCQ6mYB+IpaEO6 ens=
jprs.jp.                21600   IN      TXT     "v=spf1 ip4:202.11.17.32/27 ip4:202.11.16.144/28 ip4:117.104.133.128/28 ip6:2001:218:3001:17::/64 ip6:2001:df0:8:17::/64 include:spf.tricorn.net ?all"
jprs.jp.                300     IN      RRSIG   MX 8 2 300 20220114063112 20211215063112 16929 jprs.jp. hB4GOpTR/iFKSn83R/ODYl2R6CmfnJzis7tDwUKBNgvZkcalksYBiIRS TtTzQaUOjFUi8KU4McpECTtWUmFwC9frUUD0sEztXKZyicXozDv3IPLC zz/Dj40w58xAIzYtWZ6BM6eY1dGqBO2VWFOmuV93kUGqTfW0xzRuDT9n XqM=
jprs.jp.                300     IN      MX      40 off-mx42.tyo.jprs.co.jp.
jprs.jp.                300     IN      MX      20 off-mx42.osa.jprs.co.jp.
jprs.jp.                300     IN      MX      30 off-mx41.tyo.jprs.co.jp.
jprs.jp.                300     IN      MX      10 off-mx41.osa.jprs.co.jp.
jprs.jp.                300     IN      RRSIG   A 8 2 300 20220114063112 20211215063112 16929 jprs.jp. sJMlbJk7WzjAvy9y672tRAGWvKnrhh3k5YL4rpV3HeKCFnQjNYZO/m1A s/8te/BDyemy+nuDAEsms7YD/QoqjBcQmssqv48HO/h6uFUzXtkva2F3 gZzB8ywwEU1gz/C73AGnwHY+Zbdq2EK04yp1mDFk4mZc03UpLEgH6eHc Pzs=
jprs.jp.                300     IN      A       117.104.133.164
jprs.jp.                21600   IN      RRSIG   NS 8 2 86400 20220114063112 20211215063112 16929 jprs.jp. Vpr1yFovdWMAs0U963eI6lcO8WM7fADqth4wkMpWHTp7YHRxSyQOtSU2 GoTvH4K+gOjsp8yKZ4D17Lg/F2IATOIJTWjzJjSs4RRIoQkAkgYr9Bxv tG0SQsTgHThWlBspq/C9I+QAjhxKHKrvsZ8iK/Lw8ULv3u1dmgzBwJGT JnM=
jprs.jp.                21600   IN      NS      ns4.jprs.jp.
jprs.jp.                21600   IN      NS      ns2.jprs.jp.
jprs.jp.                21600   IN      NS      ns3.jprs.jp.
jprs.jp.                21600   IN      NS      ns1.jprs.jp.
jprs.jp.                21600   IN      RRSIG   SOA 8 2 86400 20220114063112 20211215063112 16929 jprs.jp. NgZfnUtaVGgJmpt4k+OuFbszF8AtW0tUg3gNJVpKAXf+D8HiF19oMLJB 9J3m0bow95s5UXeHy8Rq9jGik12C5Nz7fBpVlaErTMP0+QBSLrMhmciS L49FbEy4D18dvbhVOiMmGzKJIFf+49mCNJD82Xm+AkEpHGuof/jhzmFF 3Lw=

;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 水 12月 22 21:28:21 JST 2021
;; MSG SIZE  rcvd: 2717

9 DNS応答を返すキャッシュDNSサーバの調べ方(+short +identify)

ホスト名www.metro.tokyo.jpのIPアドレスを返したキャッシュDNSサーバの IPアドレスが192.168.2.1であることがわかります。

[root@server ~]# dig www.metro.tokyo.jp +short +identify
27.110.42.78 from server 192.168.2.1 in 10 ms.

次に、キャッシュDNSサーバとして8.8.8.8を指定して、DNS問い合わせをしてみます。 ホスト名www.metro.tokyo.jpのIPアドレスを返したキャッシュDNSサーバの IPアドレスが8.8.8.8であることがわかります。

[root@server ~]# dig @8.8.8.8 www.metro.tokyo.jp +short +identify
27.110.42.78 from server 8.8.8.8 in 17 ms.

10 ドメインの権威DNSサーバを探す方法(+nssearch)

ドメインの権威DNSサーバとSOAレコードを表示するオプションです。 metro.tokyo.jpドメインの権威DNSサーバとSOAレコードを確認してみます。

[root@server ~]# dig metro.tokyo.jp +nssearch
SOA ns.metro.tokyo.jp. postmaster.ns.metro.tokyo.jp. 2021121001 7200 1800 691200 900 from server 61.120.195.102 in 9 ms.
SOA ns.metro.tokyo.jp. postmaster.ns.metro.tokyo.jp. 2021121001 7200 1800 691200 900 from server 61.120.205.112 in 10 ms.
SOA ns.metro.tokyo.jp. postmaster.ns.metro.tokyo.jp. 2021121001 7200 1800 691200 900 from server 61.120.205.177 in 9 ms.
SOA ns.metro.tokyo.jp. postmaster.ns.metro.tokyo.jp. 2021121001 7200 1800 691200 900 from server 202.222.250.38 in 33 ms.

metro.tokyo.jpドメインには、4つの権威DNSサーバが動作していることがわかります。 また、それぞれのSOAレコードも確認することができます。

11 見やすく表示する方法(+multiline)

+multilineオプションを使うと、SOAレコードを見やすく表示することでができます。

[root@server ~]# dig -t SOA metro.tokyo.jp +multiline

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> -t SOA metro.tokyo.jp +multiline
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14393
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;metro.tokyo.jp.                IN SOA

;; ANSWER SECTION:
metro.tokyo.jp.         3600 IN SOA ns.metro.tokyo.jp. postmaster.ns.metro.tokyo.jp. (
                                2021121001 ; serial
                                7200       ; refresh (2 hours)
                                1800       ; retry (30 minutes)
                                691200     ; expire (1 week 1 day)
                                900        ; minimum (15 minutes)
                                )

;; Query time: 16 msec
;; SERVER: 192.168.2.1#53(192.168.2.1)
;; WHEN: 水 12月 22 21:37:24 JST 2021
;; MSG SIZE  rcvd: 93

12 権威DNSサーバに問い合わせをする方法(+norecurse)

metro.tokyo.jpドメインのプライマリDNSサーバに、ホスト名www.metro.tokyoに対するIPアドレスを問い合わせをしてみます。

[root@server ~]# dig ns.metro.tokyo.jp +short
61.120.205.112
[root@server ~]#  dig @61.120.205.112 www.metro.tokyo.jp +norecurse

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> @61.120.205.112 www.metro.tokyo.jp +norecurse
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20040
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.metro.tokyo.jp.            IN      A

;; ANSWER SECTION:
www.metro.tokyo.jp.     3600    IN      A       27.110.42.78

;; AUTHORITY SECTION:
metro.tokyo.jp.         3600    IN      NS      ns6.metro.tokyo.jp.
metro.tokyo.jp.         3600    IN      NS      ns4.metro.tokyo.jp.
metro.tokyo.jp.         3600    IN      NS      ns.metro.tokyo.jp.
metro.tokyo.jp.         3600    IN      NS      nameserver3.kvh.ne.jp.

;; ADDITIONAL SECTION:
ns.metro.tokyo.jp.      3600    IN      A       61.120.205.112
ns4.metro.tokyo.jp.     3600    IN      A       61.120.205.177
ns6.metro.tokyo.jp.     3600    IN      A       202.222.250.38

;; Query time: 11 msec
;; SERVER: 61.120.205.112#53(61.120.205.112)
;; WHEN: 水 12月 22 21:44:52 JST 2021
;; MSG SIZE  rcvd: 197

13 キャッシュDNSサーバになって、非再帰問い合わせをして名前解決をする方法

通常、ホストの名前解決をする場合、キャッシュDNSサーバに名前解決を依頼します。 ここでは、自分自身がキャッシュDNSサーバとなり、権威DNSサーバに非再帰問い合わせを逐次実施することで、名前解決をしてみます。 名前解決するホスト名は、www.metro.tokyo.jpとします。

まず、ルートDNSサーバを調べます。 ルートDNSサーバは全部で13種類あることがわかります。

[root@server ~]# dig -t NS . +short
g.root-servers.net.
d.root-servers.net.
a.root-servers.net.
i.root-servers.net.
f.root-servers.net.
h.root-servers.net.
m.root-servers.net.
e.root-servers.net.
c.root-servers.net.
j.root-servers.net.
l.root-servers.net.
k.root-servers.net.
b.root-servers.net.

次に、適当なルートDNSサーバを選択します。 ここでは、a.root-servers.netに対して、www.metro.tokyo.jpの名前解決を問い合わせしてみます。 a.dns.jpからh.dns.jpまでの8つの権威DNSサーバを紹介されます。

[root@server ~]# dig @a.root-servers.net www.metro.tokyo.jp +norecurse
-snip-
;; AUTHORITY SECTION:
jp.                     172800  IN      NS      a.dns.jp.
jp.                     172800  IN      NS      b.dns.jp.
jp.                     172800  IN      NS      c.dns.jp.
jp.                     172800  IN      NS      d.dns.jp.
jp.                     172800  IN      NS      e.dns.jp.
jp.                     172800  IN      NS      f.dns.jp.
jp.                     172800  IN      NS      g.dns.jp.
jp.                     172800  IN      NS      h.dns.jp.
-snip-

次に、紹介された8つの権威DNSサーバから適当なDNSサーバを選択します。 h.dns.jpに対して、www.metro.tokyo.jpの名前解決を問い合わせしてみます。 h.dns.jpから下記4つの権威DNSサーバを紹介されます。

[root@server ~]# dig @h.dns.jp www.metro.tokyo.jp +norecurse
-snip-
;; AUTHORITY SECTION:
metro.tokyo.jp.         86400   IN      NS      ns6.metro.tokyo.jp.
metro.tokyo.jp.         86400   IN      NS      ns.metro.tokyo.jp.
metro.tokyo.jp.         86400   IN      NS      nameserver3.kvh.ne.jp.
metro.tokyo.jp.         86400   IN      NS      ns4.metro.tokyo.jp.
-snip-

最後に、上記4つの権威DNSサーバにwww.metro.tokyo.jpの名前解決を依頼してみます。 +shortオプションを使った実行結果を以下に示します。 いずれの結果も、www.metro.tokyo.jpのIPアドレスが27.110.42.78となっていることがわかります。

ns6.metro.tokyo.jpに問い合わせした結果を以下に示します。

[root@server ~]# dig @ns6.metro.tokyo.jp www.metro.tokyo.jp +norecurse +short
27.110.42.78

ns.metro.tokyo.jpに問い合わせした結果を以下に示します。

[root@server ~]# dig @ns.metro.tokyo.jp www.metro.tokyo.jp +norecurse +short
27.110.42.78

nameserver3.kvh.ne.jpに問い合わせした結果を以下に示します。

[root@server ~]# dig @nameserver3.kvh.ne.jp www.metro.tokyo.jp +norecurse +short
27.110.42.78

ns4.metro.tokyo.jp に問い合わせした結果を以下に示します。

[root@server ~]# dig @ns4.metro.tokyo.jp www.metro.tokyo.jp +norecurse +short
27.110.42.78

14 DNS問い合わせをトレースする方法(+trace)

13章では手動で権威DNSサーバに問い合わせをしましたが、+traceオプションを使うと、 手動で実施した作業をトレースすることができます。

[root@server ~]# dig www.metro.tokyo.jp +trace

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.metro.tokyo.jp +trace
;; global options: +cmd
.                       505495  IN      NS      b.root-servers.net.
.                       505495  IN      NS      m.root-servers.net.
.                       505495  IN      NS      j.root-servers.net.
.                       505495  IN      NS      e.root-servers.net.
.                       505495  IN      NS      h.root-servers.net.
.                       505495  IN      NS      l.root-servers.net.
.                       505495  IN      NS      a.root-servers.net.
.                       505495  IN      NS      d.root-servers.net.
.                       505495  IN      NS      g.root-servers.net.
.                       505495  IN      NS      f.root-servers.net.
.                       505495  IN      NS      i.root-servers.net.
.                       505495  IN      NS      k.root-servers.net.
.                       505495  IN      NS      c.root-servers.net.
.                       512844  IN      RRSIG   NS 8 0 518400 20220104050000 20211222040000 14748 . gLur3VxBhQOu1VFiobM/feJCwR1eLco6xr0B/o3GoitbRWyVRJND6PUp G5vp9egDIAezT3TbPCBaa2ZqHodyWhCTy2+PtSe4IrOgEdLWv3F259Lm bDci9metagLxa2z4E8J2juU/Up83qErUtQsFgbUcKYsMxTxXi5OkPVW0 Ep8hhtmupbnJ12oNp4eGA2PcgxgBVeZOYa+jlM5HaTD8SSZFNQFkEUwy 27YgFh82sKVcWXOETu6dOdS2D7RKeDwoI9giRrBtmm+qj8d2qBqHAgcJ S7z6oPKOg9phQW6lXO1ha+q7d6fvnwwos9WRxA8BhYKjLLJhLx4lF+26 qVf6ig==
;; Received 525 bytes from 192.168.2.1#53(192.168.2.1) in 11 ms

jp.                     172800  IN      NS      a.dns.jp.
jp.                     172800  IN      NS      b.dns.jp.
jp.                     172800  IN      NS      c.dns.jp.
jp.                     172800  IN      NS      d.dns.jp.
jp.                     172800  IN      NS      e.dns.jp.
jp.                     172800  IN      NS      f.dns.jp.
jp.                     172800  IN      NS      g.dns.jp.
jp.                     172800  IN      NS      h.dns.jp.
jp.                     86400   IN      DS      18100 8 2 C5242231AB0B249800926B3D700349CC76374B7505DD4101FEF8C54B BB464C6B
jp.                     86400   IN      RRSIG   DS 8 1 86400 20220104050000 20211222040000 14748 . h+qnixp8ZoaXTkFmip/3pAaaYqhbRy4MEXfXbTU6M9Nd5DvA7I2Luy99 Jl+dh5MDN9vxFCZ0qC4GuqclGAU6ginnPsErWSBZ9hXAoU79D2GENWwD q65MW2EZ/SG0+b8OrttBR8TvpY4cE72jLGvdkwnSk+FHtZtZyqIa009e hpsFV3W5Q71+wrkT8OsCU9UvRSftSzCtXWLYsxo2vPkW8vKR8wYrtXiS fmRyYHmy+JU6z0d97iJ11LBk6cQFe9Z/K3wYMAuJrv0u16fvF92Gq2rp jAOJ7drIazqss8+WlunC5o46td1UDGkb1/jbQsvUMJOJMRmUoNKxs65r ueo8iA==
;; Received 838 bytes from 198.97.190.53#53(h.root-servers.net) in 57 ms

metro.tokyo.jp.         86400   IN      NS      ns.metro.tokyo.jp.
metro.tokyo.jp.         86400   IN      NS      nameserver3.kvh.ne.jp.
metro.tokyo.jp.         86400   IN      NS      ns6.metro.tokyo.jp.
metro.tokyo.jp.         86400   IN      NS      ns4.metro.tokyo.jp.
82GO9K6HGU88GUTN0TLE0NNUQTJ2PA6U.jp. 900 IN NSEC3 1 1 8 6817291982 837A3O080SD5BQE9J3BHRS9AQ5GRARHT TXT RRSIG
82GO9K6HGU88GUTN0TLE0NNUQTJ2PA6U.jp. 900 IN RRSIG NSEC3 8 2 900 20220117174509 20211218174509 55413 jp. F9nY2RpnvoJEVboTPBa351S5JOoKFYZTzVz6t+k5evwz/QyTt0/kUlVq ksh3V0Jw1M8k8Rq49Juaj/Xn1EI1CuDNvXhsOp+06xJha57fMOcVVL6m BQBt8perri/XxoZHQ2Tx5pULx39OwMTQRqNzlgIGCJWwNNzx5NK7zK/3 Ml0=
DFD7V21F2CV3I1QRD4122SVN4UQMVAKQ.jp. 900 IN NSEC3 1 1 8 6817291982 DFQGT29IQMD095AKOE6NIL8KEH5P0G5D NS DS RRSIG
DFD7V21F2CV3I1QRD4122SVN4UQMVAKQ.jp. 900 IN RRSIG NSEC3 8 2 900 20220117174509 20211218174509 55413 jp. Gn5QKCcpniQ+N4lG1PRlVQk7Vc+UK62pNA4n/FRP4qhciWxqk/IUDidh BfxaI54jOqTZRTLKNctWxjw65kWnQJq3/FTltTmjLUNJq6EkEGf/jD4Z AA/TxF8MU0ie/c82ZyB9JNbGqhuEtV+iqWcWpUliZqN5yIv0GmrgKfi6 6nU=
;; Received 677 bytes from 2001:dc4::1#53(a.dns.jp) in 13 ms

www.metro.tokyo.jp.     3600    IN      A       27.110.42.78
metro.tokyo.jp.         3600    IN      NS      nameserver3.kvh.ne.jp.
metro.tokyo.jp.         3600    IN      NS      ns.metro.tokyo.jp.
metro.tokyo.jp.         3600    IN      NS      ns6.metro.tokyo.jp.
metro.tokyo.jp.         3600    IN      NS      ns4.metro.tokyo.jp.
;; Received 197 bytes from 202.222.250.38#53(ns6.metro.tokyo.jp) in 22 ms

Z 参考情報

私が業務や記事執筆で参考にした書籍を以下のページに記載します。 Linux技術のスキルアップをしよう! - hana_shinのLinux技術ブログ