このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【Linux】DNSによる名前解決を行う:hostコマンドとdigコマンド

 DNS(Domain Name System)による名前解決を行う際に使用される代表的なコマンドが、hostコマンドとdigコマンドです。これらのコマンドを使うことで、指定したホスト名やドメイン名に対応するIPアドレスやDNSレコードの詳細情報を取得できます。

hostコマンドの概要

 hostコマンドは、指定したホスト名やドメイン名に対して、DNSサーバから名前解決を行うためのシンプルなコマンドです。基本的な情報を迅速に取得するのに適しています。

【構文】
host [オプション] 検索対象のホスト名(もしくはIPアドレス)

hostコマンドの主なオプションと説明
オプション説明
-t特定のレコードタイプを指定して検索します。例: A, MX, NS, CNAME, SOA, TXT
hostコマンドの主なオプションと説明
hostコマンドの使用例

例として、www.yahoo.co.jpのAレコードを取得するコマンドを示します。

host -t a www.yahoo.co.jp

出力例

$ host -t a www.yahoo.co.jp
www.yahoo.co.jp is an alias for edge12.g.yimg.jp.
edge12.g.yimg.jp has address 182.22.16.251

digコマンドの概要

 digコマンド(Domain Information Groper)は、DNS問い合わせの詳細情報を得るための強力なツールです。hostコマンドよりも詳細な情報を提供し、DNSのデバッグやトラブルシューティングに適しています。

【構文】
dig [オプション] 検索対象のドメイン名(もしくはIPアドレス) [検索タイプ]

digコマンドの主な検索タイプと説明
検索タイプ説明
aドメイン名に対応するIPv4アドレスを取得します。
aaaaドメイン名に対応するIPv6アドレスを取得します。
anyそのドメイン名に関するすべてのレコードを取得します。
mxメールサーバーの情報(MXレコード)を取得します。
nsドメインのネームサーバー(NSレコード)を取得します。
soaドメインに関する管理情報(SOAレコード)を取得します。
digコマンドの主な検索タイプと説明
digコマンドの使用例

以下に、www.yahoo.co.jpのAレコードを取得する例を示します。

dig -t a www.yahoo.co.jp

出力例

user01@ubuntu-vm:~$ dig -t a www.yahoo.co.jp

; <<>> DiG 9.18.28-0ubuntu0.22.04.1-Ubuntu <<>> -t a www.yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57037
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.yahoo.co.jp.		IN	A

;; ANSWER SECTION:
www.yahoo.co.jp.	288	IN	CNAME	edge12.g.yimg.jp.
edge12.g.yimg.jp.	14	IN	A	182.22.24.252

;; Query time: 16 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Aug 18 13:36:11 JST 2024
;; MSG SIZE  rcvd: 88
  • QUESTION SECTION
     このセクションには、クエリで尋ねた内容が表示されます。ここでは、www.yahoo.co.jpのAレコードを問い合わせています。
  • ANSWER SECTION
     ここにはDNSサーバからの応答が表示され、指定したドメインに対する結果が示されています。例では、www.yahoo.co.jpに対して2つのIPv4アドレスが返されています。

コマンドの使用例と解説

1.Aレコードを指定してhostコマンドを実行する。

・「host -t a www.yahoo.co.jp」コマンドを実行します。

このコマンドは、www.yahoo.co.jpに対応するIPv4アドレス(Aレコード)を取得します。

user01@ubuntu-vm:~$ host -t a www.yahoo.co.jp
www.yahoo.co.jp is an alias for edge12.g.yimg.jp.
edge12.g.yimg.jp has address 183.79.250.251
2.Aレコードを指定してdigコマンドを実行する。

・「dig -t a www.yahoo.co.jp」コマンドを実行します。

 このコマンドも、www.yahoo.co.jpに対応するIPv4アドレス(Aレコード)を取得しますが、詳細な出力が表示されます。

user01@ubuntu-vm:~$ dig -t a www.yahoo.co.jp

; <<>> DiG 9.18.28-0ubuntu0.22.04.1-Ubuntu <<>> -t a www.yahoo.co.jp
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55229
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.yahoo.co.jp.		IN	A

;; ANSWER SECTION:
www.yahoo.co.jp.	737	IN	CNAME	edge12.g.yimg.jp.
edge12.g.yimg.jp.	21	IN	A	182.22.28.252

;; Query time: 17 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Aug 18 13:46:26 JST 2024
;; MSG SIZE  rcvd: 88
3.Aレコードを指定してdigコマンドを実行する。

・「dig www.yahoo.co.jp a」コマンドを実行します。

 digコマンドは、レコードタイプを引数としてコマンドに渡すこともできます。結果は上記のコマンドと同様に表示されます。

user01@ubuntu-vm:~$ dig www.yahoo.co.jp a

; <<>> DiG 9.18.28-0ubuntu0.22.04.1-Ubuntu <<>> www.yahoo.co.jp a
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36806
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.yahoo.co.jp.		IN	A

;; ANSWER SECTION:
www.yahoo.co.jp.	251	IN	CNAME	edge12.g.yimg.jp.
edge12.g.yimg.jp.	11	IN	A	182.22.24.252

;; Query time: 24 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Aug 18 13:47:11 JST 2024
;; MSG SIZE  rcvd: 88

まとめ

 hostコマンドとdigコマンドは、DNSに関する情報を取得するための強力なツールです。hostコマンドはシンプルかつ迅速な結果が得られる一方で、digコマンドはより詳細な情報を提供します。DNSの正引きと逆引きを理解し、これらのツールを効果的に使うことで、ネットワークのトラブルシューティングやドメイン管理を円滑に行うことができます。