【dig】Linuxコマンド_DNS情報を確認する

LinuxOSでドメイン情報を確認する場合は、DNS(Domain Name System)を利用します。
インターネット上、もしくは内部のドメイン名はこのDNSによって管理されています。

DNSサーバーからIPアドレスなどのホストに関する情報を取得する際に「dig」コマンドを実行します。




「dig」コマンドの使い方(Linux)

「dig」コマンドは知りたいドメイン名のDNS情報を検索するために使用します。
名前解決の正常性、知りたいドメイン名の検索をしたいときによく使われるコマンドです。

「dig」コマンドのインストール

digコマンドを使用するには、以下コマンドでパッケージをインストールします。

CentOS8

[root@centos8 ~]# dnf -y install bind-utils

CentOS7

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



ドメイン名からIPアドレスを確認する

以下では「Google」のドメイン名からIPアドレスを確認した出力結果となります。

[root@centos8 ~]# dig google.com

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14104
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.			IN	A

;; ANSWER SECTION:
google.com.		122	IN	A	216.58.199.238

;; Query time: 25 msec
;; SERVER: 192.168.65.1#53(192.168.65.1)
;; WHEN: Sun Feb 14 08:12:41 UTC 2021
;; MSG SIZE  rcvd: 44

digコマンドで「google.com」のIPアドレスを調べます。
上記で問い合わせたドメイン名への回答が「ANSWER SECTION:」で表示されます。

ここでは、「google.com」のIPアドレスが「216.58.199.238」ということがわかります。

ただし、インターネット上のドメイン名によっては「ANSWER SECTION」などの表示がセキュリティ上表示されない場合があります。

ネームサーバーを指定した「dig」コマンド実行例

digコマンドには問い合わせを行うネームサーバーを指定することができます。

以下では「google.com」の公開ネームサーバーを確認するために、オプションで「ns」コマンドを指定しています。

[root@centos8 ~]# dig google.com ns

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> google.com ns
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19850
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com.			IN	NS

;; ANSWER SECTION:
google.com.		4502	IN	NS	ns1.google.com.
google.com.		4502	IN	NS	ns2.google.com.
google.com.		4502	IN	NS	ns3.google.com.
google.com.		4502	IN	NS	ns4.google.com.

;; Query time: 22 msec
;; SERVER: 192.168.65.1#53(192.168.65.1)
;; WHEN: Sun Feb 14 09:34:06 UTC 2021
;; MSG SIZE  rcvd: 100


13-16行目でネームサーバー名が確認できます。
このネームサーバーを指名して「dig」コマンドを実行します。

コマンドは「dig」コマンドの直後に「@」をつけてネームサーバーを指定し、その後に問い合わせするドメイン名を指定します。

コマンドは以下で「google.com」をネームサーバー「ns1.google.com」を指名して検索します。

[root@centos8 ~]# dig @ns1.google.com google.com   

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> @ns1.google.com google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22364
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

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

;; ANSWER SECTION:
google.com.		300	IN	A	216.58.196.238

;; Query time: 90 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Sun Feb 14 09:35:31 UTC 2021
;; MSG SIZE  rcvd: 55

「example.com」のIPアドレスが「216.58.196.238」ということが確認できます。

GoogleDNSサーバーを指定した例

次にインターネット上で一般公開されているGoogleDNSサーバーへ問い合わせした例となります。

[root@centos8 ~]# dig @8.8.8.8 example.com

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> @8.8.8.8 example.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53465
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
example.com.		19467	IN	A	93.184.216.34

;; Query time: 15 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Feb 14 08:36:47 UTC 2021
;; MSG SIZE  rcvd: 56

こちらも同じ結果が帰ってきたことが確認できます。

「dig」コマンドオプション

digコマンドの主なオプションとしては「-x」オプションを利用することが多いです。
「-x」オプションはIPアドレスからドメイン名の情報を検索する際に使用します。

以下は逆引き検索の例となります。

[root@centos8 ~]# dig -x 216.58.196.238

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> -x 216.58.196.238
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13383
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;238.196.58.216.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
238.196.58.216.in-addr.arpa. 4502 IN	PTR	kix06s01-in-f238.1e100.net.
238.196.58.216.in-addr.arpa. 4502 IN	PTR	kix06s01-in-f14.1e100.net.

;; Query time: 17 msec
;; SERVER: 192.168.65.1#53(192.168.65.1)
;; WHEN: Sun Feb 14 09:38:00 UTC 2021
;; MSG SIZE  rcvd: 115

「ANSWER SECTION:」でドメイン名が表示されています。
この「1e100.net」というドメイン名はGoogleが所有しているドメイン名となります。

ネームサーバーを指定した「dig」コマンド例

次にネームサーバーを指定した逆引きの検索例となります。

[root@centos8 ~]# dig  @ns1.google.com -x 216.58.196.238

; <<>> DiG 9.11.20-RedHat-9.11.20-5.el8 <<>> @ns1.google.com -x 216.58.196.238
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51334
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;238.196.58.216.in-addr.arpa.	IN	PTR

;; ANSWER SECTION:
238.196.58.216.in-addr.arpa. 86400 IN	PTR	kix06s01-in-f238.1e100.net.
238.196.58.216.in-addr.arpa. 86400 IN	PTR	kix06s01-in-f14.1e100.net.

;; Query time: 88 msec
;; SERVER: 216.239.32.10#53(216.239.32.10)
;; WHEN: Sun Feb 14 09:38:21 UTC 2021
;; MSG SIZE  rcvd: 126

主に使用するオプションは逆引きが多いですが、他にも以下のようなオプションが使用可能です。

[root@centos8 ~]# 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)
                 -r                  (do not read ~/.digrc)
                 -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 -
                                      global option)
                 +[no]comments       (Control display of packet header
                                      and section name comments)
                 +[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]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 answers - global option)
                 +[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)
[root@centos8 ~]# 

Linux「dig」コマンドの使用例は以上となります。

最新情報をチェックしよう!