このページで解説している内容は、以下の 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コマンドの使用例
例として、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コマンドの使用例
以下に、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の正引きと逆引きを理解し、これらのツールを効果的に使うことで、ネットワークのトラブルシューティングやドメイン管理を円滑に行うことができます。