知っておくとちょっと便利!dig コマンドの使い方

今号では、dig コマンドの使い方やオプションについてご紹介します!

dig コマンドとは

dig コマンドは、DNS サーバに問合せを行ない、様々な情報を取得することができるコマンドです。

主に、下記の用途で使用される事が多いです。
 ・ホスト名から IP アドレスを調べる (正引き)
 ・IP アドレスからホスト名を調べる (逆引き)
 ・MX レコード (メールサーバ)、NS レコード (ネームサーバ) などの詳細な情報を取得する

dig コマンドにより DNS サーバに関する詳細を確認できるため、DNS に関連する設定に誤りがないか、
またネットワークの問題が発生した際に、名前解決に問題がないか等を確認できます。

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

dig コマンドは bind-utils パッケージに含まれるコマンドです。
デフォルトではインストールされていないため (RHEL6~RHEL9 の環境で確認済み)、
まずは bind-utils をインストールしましょう。

# dnf install bind-utils

基本の使い方・結果の見方

  • A レコード (IPv4 アドレス) の情報を表示する

    dig コマンドの後にホスト名を入力すると、A レコード (IPv4 アドレス) の情報 が表示されます。

    # dig example.com
    
    ; <<>> DiG 9.11.36-RedHat-9.11.36-11.el8_9.1 <<>> example.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35036
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;example.com.                   IN      A
    
    ;; ANSWER SECTION:
    example.com.            300     IN      A       93.184.215.14
    
    ;; Query time: 0 msec
    ;; SERVER: 172.31.0.2#53(172.31.0.2)
    ;; WHEN: Thu May 16 04:39:46 UTC 2024
    ;; MSG SIZE  rcvd: 56
    

    QUESTION SECTION:  example.com の A レコードへの問合せであることを示します。
    ANSWER SECTION:  example.com の A レコードが 93.184.215.14 であることを示します。
    Query time:  問合せにかかった時間 (この場合は 2ミリ秒) を示します。
    SERVER:  問合せを行なった DNS サーバのアドレス (この場合は 172.31.0.2) を示します。

  • AAAA レコード (IPv6 アドレス) の情報を表示する

    最初の例では IPv4 の情報のみ表示されますが、AAAA レコード (IPv6 アドレス) の情報を
    表示したい場合は、ホスト名の後に AAAA と記載します。
    すると、ANSWER SECTION の IP アドレスが、IPv6 に変化していることが分かります。

    # dig example.com AAAA
    
    ; <<>> DiG 9.11.36-RedHat-9.11.36-11.el8_9.1 <<>> example.com AAAA
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6927
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;example.com.                   IN      AAAA
    
    ;; ANSWER SECTION:
    example.com.            300     IN      AAAA    2606:2800:21f:cb07:6820:80da:af6b:8b2c
    
    ;; Query time: 1 msec
    ;; SERVER: 172.31.0.2#53(172.31.0.2)
    ;; WHEN: Thu May 16 04:39:51 UTC 2024
    ;; MSG SIZE  rcvd: 68
    
  • MX レコード (メールサーバ) の情報を表示する

    メールサーバに関連する情報を表示したい場合は、ホスト名の後に MX と記載します。
    すると、ANSWER SECTION に MX レコードの情報 (mail.example.com) および優先度 (10) が
    表示されていることが分かります。

    # dig example.com MX
    ; <<>> DiG 9.11.36-RedHat-9.11.36-11.el8_9.1 <<>> example.com MX
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45524
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;example.com.        IN    MX
    
    ;; ANSWER SECTION:
    example.com.    3599    IN    MX    10 mail.example.com.
    
    ;; Query time: 32 msec
    ;; SERVER: 172.31.0.2#53(172.31.0.2)
    ;; WHEN: Thu May 16 04:39:57 UTC 2024
    ;; MSG SIZE  rcvd: 64
    
  • NS レコード (ネームサーバ) の情報を表示する

    ネームサーバに関連する情報を表示したい場合は、ホスト名の後に NS と記載します。
    すると、ANSWER SECTION に NS レコードの情報 (ns1.example.com と ns2.example.com) が
    表示されていることが分かります。

    # dig example.com NS
    
    ; <<>> DiG 9.11.36-RedHat-9.11.36-11.el8_9.1 <<>> example.com NS
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7825
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;example.com.            IN    NS
    
    ;; ANSWER SECTION:
    example.com.        3600    IN    NS    ns1.example.com.
    example.com.        3600    IN    NS    ns2.example.com.
    
    ;; Query time: 32 msec
    ;; SERVER: 172.31.0.2#53(172.31.0.2)
    ;; WHEN: Thu May 16 04:41:02 UTC 2024
    ;; MSG SIZE  rcvd: 85
    
  • すべてのレコードの情報を表示する

    対象サーバのすべての情報を表示したい場合は、ホスト名の後に ANY と記載します。
    例として、メールサーバ example.com のすべての情報を表示した場合、ANSWER SECTION
    A レコード、AAAA レコード、MX レコードの情報が表示されていることが分かります。

    # dig example.com ANY
    
    ; <<>> DiG 9.10.3-P4-Ubuntu <<>> example.com ANY
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;example.com.        IN    ANY
    
    ;; ANSWER SECTION:
    example.com.        300    IN    A    93.184.215.14
    example.com.        300    IN    MX    10 mail.example.com.
    example.com.        300    IN    AAAA    2606:2800:21f:cb07:6820:80da:af6b:8b2c
    example.com.        300    IN    TXT    "v=spf1 mx -all"
    
    ;; Query time: 32 msec
    ;; SERVER: 172.31.0.2#53(172.31.0.2)
    ;; WHEN: Thu May 16 04:45:15 UTC 2024
    ;; MSG SIZE  rcvd: 128
    
  • 逆引きを行う

    逆引き (IP アドレスからホスト名を問合せる) を行いたい場合は -x オプションを指定します。
    すると、ANSWER SECTION に ホスト名 (server.example.com) が表示されていることが分かります。

    # dig -x 172.10.1.10
    
    ; <<>> DiG 9.11.36-RedHat-9.11.36-11.el8_9.1 <<>> -x 172.10.1.10
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57118
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;10.1.10.172.in-addr.arpa.     IN      PTR
    
    ;; ANSWER SECTION:
    10.1.10.172.in-addr.arpa. 264  IN      PTR     server.example.com.
    
    ;; Query time: 0 msec
    ;; SERVER: 172.31.0.2#53(172.31.0.2)
    ;; WHEN: Thu May 16 05:56:08 UTC 2024
    ;; MSG SIZE  rcvd: 115
    
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です