PR
PR

【初心者向け】digコマンドの基本と使い方

記事内に広告が含まれています。

Webサイトが表示されないときや、新しくドメインを設定したとき、「設定が本当に反映されているのかな?」と不安になったことはありませんか?

そんなときに大活躍するのが「dig(ディグ)」コマンドです。

今回は、digコマンドの基本的な使い方と、ちょっと難しそうに見える実行結果の読み方を簡単に解説します。

digコマンドってなに?

dig(Domain Information Groper)は、DNSサーバーに問い合わせをして、ドメインに関する情報を取得するためのコマンドです。

簡単に言えば、「このWebサイトのIPアドレスを教えて」と、DNSサーバーに直接問い合わせするためのツールです。

digのインストール

もし手元の環境にdigコマンドが無い場合は、まずインストールを行いましょう。

Ubuntu/Debian系であれば、「dnsutils」パッケージをインストールします。

$ sudo apt update
$ sudo apt install dnsutils 

RedHat系であれば「bind-utils」パッケージをインストールします。

# dnf install bind-utils

どんなときに使う?

digコマンドは、主に以下のような場面でよく使われます。

  • ドメインやホスト名が、正しくサーバーのIPアドレスに紐づいているか確認したいとき
  • DNS(AレコードやMXレコードなど)の設定変更が反映されたかチェックしたいとき
  • Webサイトにアクセスできない原因が、DNSの設定にあるのか調べたいとき

【基本】まずは一番シンプルな使い方

digコマンドの使い方はとても簡単です。

ターミナルを開いて、以下のように入力するだけです。

dig ホスト名(FQDN)

ホスト名は基本的に、「ホスト名」+「ドメイン名」を組み合わせたFQDN(Fully Qualified Domain Name)形式で指定します。

実際に確認を行う場合は、以下の実行例にあるように調べたいホスト名を入力してください。

ワンポイント解説 「ネイキッドドメイン」「ゾーンAPEX」とは?

「example.com」のように、頭に「www」などのホスト名が付いていない状態のドメインを「ネイキッドドメイン(Naked Domain)」や「ゾーンAPEX(Zone Apex)」などと呼びます。

近年のWebサイトでは、「www.example.com」ではなく、ホスト名を省略して「example.com」のままでWebサイトにアクセスできるように設定されていることが一般的です。

この場合、ドメイン名そのものがホスト名(サーバーの場所)としての役割も兼ねています。

実行例

実際の実行結果を見てみましょう。

ここでは「example.com」を指定して実行してみます。

$ dig example.com

; <<>> DiG 9.18.39-0ubuntu0.24.04.5-Ubuntu <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32487
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
example.com.            135     IN      A       104.20.23.154
example.com.            135     IN      A       172.66.147.243

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Jul 09 13:25:21 JST 2026
;; MSG SIZE  rcvd: 72

実行すると、英語のテキストがズラズラっと表示されますが、まず注目すべきは「;; ANSWER SECTION:」と書かれた部分で、ここが「質問に対する回答」になります。

ANSWER SECTIONの読み方

「ANSWER SECTION」に表示されている、以下の1行を詳しく読んでみましょう。

example.com.            135     IN      A       104.20.23.154
  • example.com. : 調べた名前(ドメイン名やホスト名)
  • 135 : TTL(情報の有効期限。この秒数だけキャッシュされます)
  • A :レコードの種類(「A」はIPv4アドレスを意味します)
  • 104.20.23.154 :レコードの値(今回判明したIPアドレスです)

まずは、この「ANSWER SECTION」に書かれている 「レコードの種類」と「一番右側の値」を見つけることを意識しましょう。

普段よく使う便利なオプション3選

基本の使い方がわかったら、次はトラブルシューティング等でよく使う便利なオプションを覚えましょう。

結果をシンプルにしたいとき (+short)

デフォルトの出力は情報が多すぎるので、「IPアドレスだけサクッと知りたい!」というときは 「+short」オプションを後ろにつけます。

$ dig example.com +short
172.66.147.243
104.20.23.154

余計な情報がすべて削ぎ落とされ、IPアドレスだけが返ってきます。

画面がとても見やすくなるので、普段使いに一番おすすめのオプションです。

特定のレコードを指定して調べたいとき

DNSには、IPアドレス(Aレコード)以外にも様々な情報が登録されています。

例えば、メールの配送先を指定する「MXレコード」を調べたいときは、ドメイン名の後ろにスペースを空けて「レコード名」を指定します。

$ dig gmail.com mx +short
40 alt4.gmail-smtp-in.l.google.com.
20 alt2.gmail-smtp-in.l.google.com.
5 gmail-smtp-in.l.google.com.
10 alt1.gmail-smtp-in.l.google.com.
30 alt3.gmail-smtp-in.l.google.com.

表示結果から、「gmail.com」では、5つのサーバがメールの配送先(MXレコード)として登録されていることがわかります。

ホスト名の前に表示されている数字(5、10、20…)は優先順位を表していて、数字が小さいものから優先的に選択される仕様になっています。

補足:これだけは押さえたい! よく使うDNSレコード一覧

digコマンドで指定できる主なレコードの種類をまとめました。

どれも重要度の高い基本の6種類です。

A レコード

ドメイン名やホスト名に対応する「IPv4アドレス」です。

レコードの指定を省略した場合、このAレコードがデフォルトで選ばれます。

AAAA(クワッドエー)レコード

ドメイン名やホスト名に対応する「IPv6アドレス」です。

CNAME(シーネーム)レコード

「www.example.com」のようなホスト名(サブドメイン)を、別のドメイン名に関連付ける「別名(エイリアス)」の情報です。

外部のブログサービスやCDN(Cloudflareなど)に自分のドメインを紐付けるときによく使われます。

※仕様上、ドメイン名そのもの(ネイキッドドメイン)には設定できないという制限があります。

MX(エムエックス)レコード

メールの配送先(メールサーバー)を指定する情報です。

「メールが届かない!」といったトラブルの際に、正しいメールサーバーが指定されているかを調べるために使います。

TXT(テキスト)レコード

ドメインやホストに自由な文字列(テキスト)を関連付けるレコードです。

最近は「ドメイン所有権の証明」や、「迷惑メール対策(SPF設定やDKIM設定など)」でよく使われます。

NS(エヌエス)レコード

そのドメインのDNS情報を実際に管理している「ネームサーバー」の情報です。

問い合わせるDNSサーバーを指定したいとき (@DNSサーバ)

ドメインやホスト名の後ろに 「@DNSサーバーのIPアドレス(またはホスト名)」をつけることで、特定のDNSサーバーに直接問い合わせをすることができます。

下記の例では、Googleが提供している無料のパブリックDNSサーバー(8.8.8.8)を指定して問い合わせを行っています。

$ dig example.com @8.8.8.8

; <<>> DiG 9.18.39-0ubuntu0.24.04.5-Ubuntu <<>> example.com @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54165
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
example.com.            300     IN      A       172.66.147.243
example.com.            300     IN      A       104.20.23.154

;; Query time: 31 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Thu Jul 09 14:43:19 JST 2026
;; MSG SIZE  rcvd: 72

表示された結果の下部にある、「SERVER: 8.8.8.8#53(8.8.8.8) (UDP)」という部分から、DNSサーバとして指定した「8.8.8.8」のサーバーが回答してくれたことが分かります。

これを使えば、「ドメインの設定を変更したけれど、GoogleのパブリックDNSにはもう新しい設定が反映されているかな?」といった確認をピンポイントですることができます。

IPアドレスからドメインを調べる「逆引き」

ここまでは「ドメイン名・ホスト名」から「IPアドレス」を調べてきましたが、これを正引きと呼びます。

これとは逆に、「IPアドレス」から「ホスト名」を調べることを「逆引き」と言います。

サーバーのアクセスログに見知らぬIPアドレスがあったとき、「これってどこからのアクセスだろう?」と特定したい場合によく使われます。

逆引きのやり方(-x オプション)

digコマンドで逆引きをするときは、「-x」オプションの後にIPアドレスを指定します。

GoogleのパブリックDNS「8.8.8.8」について、実際に逆引きを行ってみます。

$ dig -x 8.8.8.8

; <<>> DiG 9.18.39-0ubuntu0.24.04.5-Ubuntu <<>> -x 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49270
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

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

;; ANSWER SECTION:
8.8.8.8.in-addr.arpa.   7153    IN      PTR     dns.google.

;; Query time: 1 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Jul 09 14:51:37 JST 2026
;; MSG SIZE  rcvd: 73

正引きのときと同じように、「ANSWER SECTION」を探してください。

;; ANSWER SECTION:
8.8.8.8.in-addr.arpa.   7153    IN      PTR     dns.google.

逆引きに成功すると、レコードの種類のところに「PTR」という文字が表示されます。

これは「PTR(ポインタ)レコード」という、逆引き専用のデータであることを示しています。

一番右側に「dns.google.」と書かれているので、この「8.8.8.8」というIPアドレスは、GoogleのDNSサーバー「dns.google.」のものだということが分かります。

逆引きが設定されていない場合

すべてのIPアドレスに逆引き(PTRレコード)が設定されているわけではないため、設定がない場合の挙動も押さえておきましょう。

試しに、設定がないIPアドレス(104.20.23.154)を調べてみます。

$ dig -x 104.20.23.154

; <<>> DiG 9.18.39-0ubuntu0.24.04.5-Ubuntu <<>> -x 104.20.23.154
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 12806
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

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

;; AUTHORITY SECTION:
20.104.in-addr.arpa.    1800    IN      SOA     cruz.ns.cloudflare.com. dns.cloudflare.com. 2288625501 10000 2400 604800 3600

;; Query time: 33 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Thu Jul 09 17:56:10 JST 2026
;; MSG SIZE  rcvd: 117

設定がない場合は、ヘッダー部分の「status」に「NXDOMAIN」と表示されます。

「NXDOMAIN」は「Non-Existent Domain(存在しないドメイン)」の略で、DNSサーバーから「レコード(IPアドレスの逆引き情報)が見つからなかったよ」と言われている状態を示しています。

また、「ANSWER SECTION」自体も表示されなくなります。

ちなみに「+short」オプションを使用した場合、返すデータが何もないため何も表示されずに終了します。

$ dig -x 104.20.23.154 +short

画面には何も出ませんが、「何も出ない=逆引きが登録されていない」という判断ができるので覚えておくと便利です。

コメント

タイトルとURLをコピーしました