Linux digコマンド完全ガイド!基本から応用まで分かりやすく解説!

最終更新日 2025年2月26日

スポンサーリンク

dig コマンドとは?基本概要と用途

dig コマンド(Domain Information Groper)は、DNS(Domain Name System)の情報を取得するための最も強力なコマンドラインツールです。ネットワーク管理者やエンジニアにとって不可欠なツールであり、ドメイン名のIPアドレス取得、DNSレコードの確認、DNSトラブルシューティングなど幅広い用途で活用されます。

特に、nslookup よりも詳細な情報を取得できる点が特徴で、DNSの動作確認や設定検証に最適です。本記事では、dig コマンドの役割やnslookupとの違い、主な用途について詳しく解説します。

  1. digコマンドの役割と特徴
  2. nslookupとの違い
  3. digコマンドの主な用途
  4. まとめ
digコマンドとは?

DNSの情報を取得する強力なツール

digコマンド(Domain Information Groper)は、DNS(Domain Name System)の情報を取得するための最も強力なコマンドラインツールです。

ネットワーク管理者に不可欠

ドメイン名のIPアドレス取得、DNSレコードの確認、DNSトラブルシューティングなど幅広い用途で活用されます。

nslookupよりも詳細な情報を取得

特に、nslookupよりも詳細な情報を取得できる点が特徴で、DNSの動作確認や設定検証に最適です。
digコマンドとは?

digコマンドの役割と特徴

dig コマンドは、DNSサーバーに問い合わせを行い、応答を詳細に表示するコマンドです。デフォルトではシステムが指定するDNSサーバーを使用しますが、特定のDNSサーバー(Google Public DNS や Cloudflare DNS など)を指定することもできます。

LinuxやMacでは標準で利用でき、WindowsではBINDパッケージを導入することで使用可能です。シンプルなDNSクエリから、詳細なトレース調査まで対応可能なため、ネットワークの問題解析に非常に役立ちます。

新人エンジニア
新人エンジニア

先輩、dig コマンドって何に使うんですか?

先輩エンジニア
先輩エンジニア

DNSの問い合わせ結果を詳細に確認するためのツールだよ。ドメインのIPアドレスを調べたり、DNSレコードの設定が正しく反映されているか確認したりできるんだ。

新人エンジニア
新人エンジニア

じゃあ、普段ネットで使っているDNSの情報も取得できるんですか?

先輩エンジニア
先輩エンジニア

そうだね。デフォルトのDNSサーバーだけじゃなくて、Googleの8.8.8.8やCloudflareの1.1.1.1を指定して問い合わせることもできるよ。

digコマンドの役割と特徴

DNSサーバーへの問い合わせ

digコマンドは、DNSサーバーに問い合わせを行い、応答を詳細に表示するコマンドです。デフォルトではシステムが指定するDNSサーバーを使用しますが、特定のDNSサーバーを指定することもできます。

幅広い対応範囲

LinuxやMacでは標準で利用でき、WindowsではBINDパッケージを導入することで使用可能です。シンプルなDNSクエリから、詳細なトレース調査まで対応可能なため、ネットワークの問題解析に非常に役立ちます。
digコマンドの役割と特徴
スポンサーリンク

nslookupとの違い

nslookup もDNS情報を取得するコマンドですが、dig に比べて機能が限定的で、詳細なDNS情報を取得するには適していません

比較項目dignslookup
詳細なDNS情報の取得可能限定的
クエリ結果のカスタマイズ多彩なオプションありほぼ不可
DNSSEC対応可能不可
推奨度高い(DNS管理向け)低い(簡易調査向け)
新人エンジニア
新人エンジニア

先輩、nslookup でもDNS情報を取得できますよね?

先輩エンジニア
先輩エンジニア

確かにできるけど、nslookup は古いツールで、情報量が少ないし、DNSSECにも対応していないんだ。正確な調査をするなら dig を使ったほうがいいよ。

新人エンジニア
新人エンジニア

つまり、dig のほうがより詳しく調べられるってことですね?

先輩エンジニア
先輩エンジニア

そういうこと。特にDNSの詳細なトラブルシューティングをするなら dig 一択だね。

nslookupとの違い

比較項目

dig

nslookup

詳細なDNS情報の取得

可能

限定的

クエリ結果のカスタマイズ

多彩なオプションあり

ほぼ不可

DNSSEC対応

可能

不可

推奨度

高い(DNS管理向け)

低い(簡易調査向け)
nslookupとの違い
スポンサーリンク

digコマンドの主な用途

dig は、DNSの詳細な情報を取得できるため、以下のような用途で活用されます。

1. ドメイン名のIPアドレスを調査

特定のドメインがどのIPアドレスに紐づいているか確認できます。

dig example.com

2. メールサーバー(MXレコード)の取得

特定のドメインのメールサーバー情報を調査できます。

dig example.com MX

3. DNSレコードの設定確認(A、CNAME、TXT など)

ドメインに設定されている各種DNSレコードを取得し、設定ミスがないか確認できます。

dig example.com TXT
dig example.com CNAME

4. DNSの伝播状況を確認

異なるDNSサーバーを指定し、キャッシュの影響を受けずに最新のレコードを取得できます。

dig @8.8.8.8 example.com
dig @1.1.1.1 example.com

5. DNSSEC(DNSのセキュリティ拡張)の検証

DNSSECが有効かどうかをチェックできます。

dig +dnssec example.com
新人エンジニア
新人エンジニア

ドメインのIPアドレスだけじゃなくて、メールサーバーやDNSの設定も確認できるんですね!

先輩エンジニア
先輩エンジニア

そうだよ。しかも特定のDNSサーバーを指定して、最新の情報を取得することもできるから、DNSの伝播状況を調べるのにも便利なんだ。

新人エンジニア
新人エンジニア

DNSのトラブルシューティングにも使えますか?

先輩エンジニア
先輩エンジニア

もちろん!例えば、+trace オプションを使えば、どのDNSサーバーがどのように問い合わせを処理しているかを確認できる。これはDNSの問題を特定するのにすごく役立つんだ。

digコマンドの主な用途

IPアドレスの調査

特定のドメインがどのIPアドレスに紐づいているか確認できます。

メールサーバー情報の取得

特定のドメインのメールサーバー情報を調査できます。

DNSレコードの設定確認

ドメインに設定されている各種DNSレコードを取得し、設定ミスがないか確認できます。

DNSの伝播状況確認

異なるDNSサーバーを指定し、キャッシュの影響を受けずに最新のレコードを取得できます。
digコマンドの主な用途
スポンサーリンク

まとめ

dig コマンドは、DNSの詳細な情報を取得し、ドメインやネットワークの調査・トラブルシューティングを行うための強力なツールです。nslookup よりも高度な機能を備え、DNSレコードの設定確認やDNSの問題解析に最適です。

ネットワーク管理をするなら、dig コマンドの使い方を習得しておくことが必須といえます。本記事で紹介した用途やオプションを活用し、DNSの仕組みを深く理解しながら実践してみてください。

dig コマンドの基本構文とよく使用するオプション

dig コマンドは、DNSの問い合わせを行うためのコマンドラインツールで、さまざまなオプションを組み合わせることで詳細な情報を取得できます。基本構文はシンプルですが、オプションを活用することで、より実践的な使い方が可能になります。

この章では、dig コマンドの基本的な使い方と、よく使われるオプション(+short+trace+nocmd)について解説します。

  1. digコマンドの基本構文
  2. +short(簡潔な結果表示)
  3. +trace(DNSの流れを追跡)
  4. +nocmd(余計な情報を省略)
  5. まとめ

digコマンドの基本構文

最も基本的な構文は、以下のようにドメイン名を指定して実行するだけです。

dig example.com

このコマンドを実行すると、デフォルトのDNSサーバーに対して example.com のAレコード(IPv4アドレス)が問い合わせられます。

新人エンジニア
新人エンジニア

先輩、dig コマンドを使うと何が分かるんですか?

先輩エンジニア
先輩エンジニア

指定したドメインのDNS情報を取得できるよ。デフォルトではAレコード(IPv4アドレス)を返すけど、MX(メールサーバー情報)やTXTレコードも調べられるんだ。

新人エンジニア
新人エンジニア

じゃあ、メールサーバーの情報を調べるには?

先輩エンジニア
先輩エンジニア

MX レコードを指定すればいいよ。例えば、dig example.com MX でメールサーバーの情報が取得できる。

digコマンドの基本構文

基本的な使い方

最も基本的な構文は、以下のようにドメイン名を指定して実行するだけです。

dig example.com

このコマンドを実行すると、デフォルトのDNSサーバーに対してexample.comのAレコード(IPv4アドレス)が問い合わせられます。

レコードタイプの指定

特定のDNSレコードタイプを指定して問い合わせることもできます。

dig example.com MX

この例では、example.comのMXレコード(メールサーバー情報)を取得します。
digコマンドの基本構文
スポンサーリンク

+short(簡潔な結果表示)

+short オプションを使うと、余計な情報を省略してシンプルな結果を表示できます。

dig example.com +short

実行結果

93.184.216.XX

通常の dig コマンドの出力にはヘッダー情報やクエリの詳細が含まれますが、+short をつけることで必要な情報だけを表示できます。

新人エンジニア
新人エンジニア

先輩、dig の出力って情報が多すぎませんか?

先輩エンジニア
先輩エンジニア

確かに。IPアドレスだけ知りたいなら +short オプションを使うとスッキリした結果が得られるよ。

新人エンジニア
新人エンジニア

簡潔に結果を表示するだけなら、nslookup でも良くないですか?

先輩エンジニア
先輩エンジニア

それもアリだけど、dig のほうがより詳細な調査ができるし、スクリプトでの利用もしやすいんだ。

スポンサーリンク

+trace(DNSの流れを追跡)

+trace オプションを使うと、ルートDNSサーバーから最終的なネームサーバーまでの問い合わせの流れを表示できます。

dig example.com +trace

実行結果

.                       518400  IN      NS      a.root-servers.net.
...
example.com.            172800  IN      NS      ns1.example.com.
example.com.            172800  IN      NS      ns2.example.com.

このオプションを使うと、DNSのどのサーバーがどのように名前解決をしているかが分かるため、DNSのトラブルシューティングに役立ちます。

新人エンジニア
新人エンジニア

DNSの名前解決の流れを調べる方法ってありますか?

先輩エンジニア
先輩エンジニア

+trace オプションを使えば、ルートDNSサーバーから順番にどのネームサーバーが応答したかを確認できるよ。

新人エンジニア
新人エンジニア

DNSの伝播状況を調べるのにも使えますか?

先輩エンジニア
先輩エンジニア

そうだね。新しく設定したDNSが正しく伝播しているかチェックするのに +trace は便利だよ。

+nocmd(余計な情報を省略)

+nocmd オプションを使うと、ヘッダー部分を省略し、クエリの結果だけを表示できます。

dig example.com +nocmd

実行結果

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

このオプションを使うことで、クエリの送信情報や余計なヘッダーを省略し、結果の解析がしやすくなります。

新人エンジニア
新人エンジニア

dig の結果って情報が多すぎて見づらいんですよね…

先輩エンジニア
先輩エンジニア

そういうときは +nocmd を使うと、ヘッダー情報を省いてスッキリ見やすくなるよ。

新人エンジニア
新人エンジニア

+short とは何が違うんですか?

先輩エンジニア
先輩エンジニア

+short は本当に必要な情報だけを返すのに対して、+nocmdヘッダーを省略するだけで詳細な情報は残るっていう違いがあるよ。

スポンサーリンク

まとめ

dig コマンドは、DNSの詳細な情報を取得する強力なツールで、オプションを組み合わせることでより便利に活用できます。

  • +short → 簡潔な結果を表示(IPアドレスのみを取得)
  • +trace → ルートサーバーからの名前解決の流れを追跡
  • +nocmd → 余計なヘッダー情報を省略し、解析しやすくする

これらのオプションを適切に使い分けることで、DNSのトラブルシューティングや調査が効率化できます。dig をマスターして、よりスムーズにネットワークの問題を解析しましょう!

よく使用するdigのオプション

+short

簡潔な結果表示。余計な情報を省略してシンプルな結果を表示できます。

dig example.com +short

+trace

DNSの流れを追跡。ルートDNSサーバーから最終的なネームサーバーまでの問い合わせの流れを表示できます。

dig example.com +trace

+nocmd

余計な情報を省略。ヘッダー部分を省略し、クエリの結果だけを表示できます。

dig example.com +nocmd
よく使用するdigのオプション
スポンサーリンク

DNSレコードの取得方法

dig コマンドを使うことで、ドメインに紐づくさまざまなDNSレコードを取得できます。特定のレコードを調査することで、Webサーバーの設定確認やメールサーバーの情報取得、DNSのトラブルシューティングが可能になります。

以下では、主要なDNSレコードの取得方法について解説します。

  1. Aレコード(IPv4アドレス)の取得
  2. AAAAレコード(IPv6アドレス)の取得
  3. MXレコード(メールサーバー情報)の取得
  4. TXTレコード(SPF, DKIMなど)の取得
  5. CNAME, NS, SOAレコードの確認方法
  6. まとめ

Aレコード(IPv4アドレス)の取得

Aレコードは、ドメイン名に紐づくIPv4アドレスを示すレコードです。WebサイトのサーバーIPを調べる際によく使われます。

基本コマンド

dig example.com A

実行結果

;; ANSWER SECTION:
example.com.  300  IN  A  93.184.216.34
新人エンジニア
新人エンジニア

先輩、Aレコードって何ですか?

先輩エンジニア
先輩エンジニア

ドメイン名に対応するIPv4アドレスを返すレコードのことだよ。ブラウザがWebサイトを表示する際に、この情報をもとにアクセスするんだ。

新人エンジニア
新人エンジニア

dig example.com だけでもAレコードが取れますよね?

先輩エンジニア
先輩エンジニア

そうだね。でも、特定のレコードを明示的に指定することで、他のレコードと混ざらずに確認できるから、A をつけるのがオススメだよ。

Aレコード(IPv4アドレス)の取得

Aレコードとは

Aレコードは、ドメイン名に紐づくIPv4アドレスを示すレコードです。WebサイトのサーバーIPを調べる際によく使われます。

基本コマンド

dig example.com A

実行結果の例:

;; ANSWER SECTION:
example.com. 300 IN A 93.184.216.34
Aレコード(IPv4アドレス)の取得
スポンサーリンク

AAAAレコード(IPv6アドレス)の取得

AAAAレコードは、ドメイン名に紐づくIPv6アドレスを示すレコードです。IPv6を使用するサーバーの確認に必要になります。

基本コマンド

dig example.com AAAA

実行結果

;; ANSWER SECTION:
example.com.  300  IN  AAAA  2606:2800:220:1:248:1893:25c8:1946
新人エンジニア
新人エンジニア

IPv4のAレコードは知ってるんですが、AAAAレコードは何ですか?

先輩エンジニア
先輩エンジニア

AAAAレコードはIPv6アドレスを返すレコードだよ。最近はIPv6の普及が進んでいるから、サーバーがIPv6に対応しているか確認するのに使うんだ。

新人エンジニア
新人エンジニア

IPv6を使っていない場合は、AAAAレコードは取得できないんですか?

先輩エンジニア
先輩エンジニア

その通り。対応していない場合は、ANSWER SECTION に何も表示されないよ。

AAAAレコード(IPv6アドレス)の取得

AAAAレコードとは

AAAAレコードは、ドメイン名に紐づくIPv6アドレスを示すレコードです。IPv6を使用するサーバーの確認に必要になります。

基本コマンド

dig example.com AAAA

実行結果の例:

;; ANSWER SECTION:
example.com. 300 IN AAAA 2606:2800:220:1:248:1893:25c8:1946
AAAAレコード(IPv6アドレス)の取得
スポンサーリンク

MXレコード(メールサーバー情報)の取得

MX(Mail Exchange)レコードは、メールを送受信するためのメールサーバー情報を示すレコードです。メールのトラブルシューティング時に必要になります。

基本コマンド

dig example.com MX

実行結果

;; ANSWER SECTION:
example.com.  600  IN  MX  10 mail.example.com.
example.com.  600  IN  MX  20 backup-mail.example.com.
新人エンジニア
新人エンジニア

メールが届かないとき、MXレコードを確認するといいって聞いたんですが?

先輩エンジニア
先輩エンジニア

そうだね。MXレコードには、ドメイン宛てのメールを受信するサーバーの情報が入っているから、正しく設定されているか確認できるよ。

新人エンジニア
新人エンジニア

MXレコードに優先順位の数字が付いているのは何ですか?

先輩エンジニア
先輩エンジニア

それは優先度を表していて、数字が小さいほど優先的に使用されるんだ。例えば、10 mail.example.com のほうが 20 backup-mail.example.com より優先される。

MXレコード(メールサーバー情報)の取得

MXレコードとは

MX(Mail Exchange)レコードは、メールを送受信するためのメールサーバー情報を示すレコードです。メールのトラブルシューティング時に必要になります。

基本コマンド

dig example.com MX

実行結果の例:

;; ANSWER SECTION:
example.com. 600 IN MX 10 mail.example.com.
example.com. 600 IN MX 20 backup-mail.example.com.
MXレコード(メールサーバー情報)の取得
スポンサーリンク

TXTレコード(SPF, DKIMなど)の取得

TXTレコードは、ドメインに関するテキスト情報を格納するレコードです。特に、SPFやDKIMなどのメール認証情報として使われます。

基本コマンド

dig example.com TXT

実行結果

;; ANSWER SECTION:
example.com.  300  IN  TXT  "v=spf1 include:_spf.example.com ~all"
新人エンジニア
新人エンジニア

SPFレコードって何ですか?

先輩エンジニア
先輩エンジニア

SPF(Sender Policy Framework)は、メール送信元を認証する仕組みだよ。TXTレコードに設定されていて、不正な送信を防ぐのに使われる。

新人エンジニア
新人エンジニア

DKIMとかDMARCもTXTレコードで管理されているんですか?

先輩エンジニア
先輩エンジニア

そうだよ。メールのセキュリティ対策では、SPF、DKIM、DMARCの3つを組み合わせて設定するのが一般的だね。

TXTレコード(SPF, DKIMなど)の取得

TXTレコードとは

TXTレコードは、ドメインに関するテキスト情報を格納するレコードです。特に、SPFやDKIMなどのメール認証情報として使われます。

基本コマンド

dig example.com TXT

実行結果の例:

;; ANSWER SECTION:
example.com. 300 IN TXT "v=spf1 include:_spf.example.com ~all"
TXTレコード(SPF, DKIMなど)の取得
スポンサーリンク

CNAME, NS, SOAレコードの確認方法

CNAME(別名)レコードの取得

dig example.com CNAME

CNAMEレコードは、ドメインのエイリアスを指定するためのレコードです。

NS(ネームサーバー)レコードの取得

dig example.com NS

NSレコードは、そのドメインの管理を担当するネームサーバーを示します。

SOA(Start of Authority)レコードの取得

dig example.com SOA

SOAレコードは、ゾーン管理に関する情報(プライマリネームサーバーや管理者メールアドレスなど)を含みます。

新人エンジニア
新人エンジニア

CNAMEレコードって何のためにあるんですか?

先輩エンジニア
先輩エンジニア

ドメインを別のドメインに紐づけるときに使うんだ。例えば、www.example.comexample.com にリダイレクトするときに使えるよ。

新人エンジニア
新人エンジニア

NSレコードを調べると何が分かりますか?

先輩エンジニア
先輩エンジニア

そのドメインの管理をしているDNSサーバーが分かる。DNSの設定を確認するときに重要だよ。

その他のDNSレコードの確認方法

CNAME(別名)レコード

CNAMEレコードは、ドメインのエイリアスを指定するためのレコードです。

dig example.com CNAME

NS(ネームサーバー)レコード

NSレコードは、そのドメインの管理を担当するネームサーバーを示します。

dig example.com NS

SOA(Start of Authority)レコード

SOAレコードは、ゾーン管理に関する情報(プライマリネームサーバーや管理者メールアドレスなど)を含みます。

dig example.com SOA
その他のDNSレコードの確認方法
スポンサーリンク

まとめ

dig コマンドを使えば、A、AAAA、MX、TXT、CNAME、NS、SOAなど、あらゆるDNSレコードを取得でき、ネットワークやメールの設定確認、トラブルシューティングに活用できる。適切なレコードを調べて、DNSの仕組みを理解しよう!

特定のDNSサーバーを指定してクエリを実行

dig コマンドでは、デフォルトのDNSサーバーではなく、特定のDNSサーバーを指定してクエリを実行することが可能です。これにより、DNSの伝播状況を確認したり、異なるDNSサーバーの応答を比較したりできます。

例えば、Google Public DNS(8.8.8.8)やCloudflare DNS(1.1.1.1)を指定することで、キャッシュの影響を受けない最新の情報を取得することができます。また、社内ネットワークのDNSを直接問い合わせることで、内部ドメインの解析も可能になります。

以下では、特定のDNSサーバーを指定する方法について詳しく解説します。

  1. 公開DNS(Google DNS, Cloudflare DNS, OpenDNS)を利用する
  2. 内部DNSサーバーを指定して問い合わせる
  3. @を使った特定サーバーへの問い合わせ
  4. まとめ

公開DNS(Google DNS, Cloudflare DNS, OpenDNS)を利用する

Google Public DNS、Cloudflare DNS、OpenDNSなどの公開DNSサーバーを指定してクエリを実行することで、特定のプロバイダのDNS情報を取得できます。これは、DNSの伝播状況やキャッシュの影響を確認する際に役立ちます。

基本コマンド(Google DNS を指定)

dig @8.8.8.8 example.com

主要な公開DNS一覧

DNSプロバイダIPアドレス
Google Public DNS8.8.8.8 / 8.8.4.4
Cloudflare DNS1.1.1.1 / 1.0.0.1
OpenDNS208.67.222.222 / 208.67.220.220
新人エンジニア
新人エンジニア

先輩、GoogleのDNSを指定して dig する意味って何ですか?

先輩エンジニア
先輩エンジニア

ISPのDNSサーバーはキャッシュを持っていることが多いから、最新の情報を知るにはGoogleやCloudflareのDNSに直接問い合わせるのがいいんだ。

新人エンジニア
新人エンジニア

Cloudflare DNSの 1.1.1.1 ってよく聞くんですが、どんな特徴があるんですか?

先輩エンジニア
先輩エンジニア

Cloudflareはプライバシーに配慮した高速なDNSを提供しているよ。Google Public DNSと同じように使えるけど、個人情報のログを最小限にするのが特徴だね。

公開DNSを利用したクエリ実行

公開DNSの利用

Google Public DNS、Cloudflare DNS、OpenDNSなどの公開DNSサーバーを指定してクエリを実行することで、特定のプロバイダのDNS情報を取得できます。これは、DNSの伝播状況やキャッシュの影響を確認する際に役立ちます。

主要な公開DNS一覧

Google Public DNS: 8.8.8.8 / 8.8.4.4

Cloudflare DNS: 1.1.1.1 / 1.0.0.1

OpenDNS: 208.67.222.222 / 208.67.220.220
公開DNSを利用したクエリ実行
スポンサーリンク

内部DNSサーバーを指定して問い合わせる

社内ネットワークや閉じた環境でDNSを運用している場合、内部DNSサーバーを指定して直接クエリを実行することが可能です。これにより、イントラネット上のドメインや、VPN接続時の内部リソースの解析が可能になります。

基本コマンド(内部DNSサーバーを指定)

dig @192.168.1.1 internal.example.com
新人エンジニア
新人エンジニア

外部のDNSじゃなくて、社内のDNSサーバーを使いたい場合はどうすればいいですか?

先輩エンジニア
先輩エンジニア

@ の後に社内のDNSサーバーのIPアドレスを指定すればいいよ。 例えば @192.168.1.1 ってすれば、社内DNSに直接問い合わせられる。

新人エンジニア
新人エンジニア

VPNで社内ネットワークに繋いでいるときに dig すると、名前解決ができないことがあるんですが?

先輩エンジニア
先輩エンジニア

それはVPN接続時のDNS設定が正しくない可能性があるね。dig @社内DNS サーバー名 で直接問い合わせて、内部ドメインが解決できるか試してみるといいよ。

内部DNSサーバーを指定したクエリ

内部DNSサーバーの利用

社内ネットワークや閉じた環境でDNSを運用している場合、内部DNSサーバーを指定して直接クエリを実行することが可能です。これにより、イントラネット上のドメインや、VPN接続時の内部リソースの解析が可能になります。

基本コマンド

dig @192.168.1.1 internal.example.com

この例では、192.168.1.1というIPアドレスの内部DNSサーバーに対して、internal.example.comの情報を問い合わせています。
内部DNSサーバーを指定したクエリ
スポンサーリンク

@を使った特定サーバーへの問い合わせ

dig コマンドでは、@ の後にDNSサーバーを指定することで、問い合わせ先を自由に変更できます。これを利用すると、特定のネームサーバーや異なるプロバイダのDNSを比較することが可能です。

基本コマンド(特定のネームサーバーを指定)

dig @ns1.example.com example.com

このコマンドを実行すると、ns1.example.com というネームサーバーに対して example.com の情報を直接問い合わせることができます。

新人エンジニア
新人エンジニア

あるドメインの正しい情報を知りたいとき、どのDNSに問い合わせればいいんですか?

先輩エンジニア
先輩エンジニア

そのドメインのNS(ネームサーバー)に直接問い合わせるのが一番確実だよ。 まず dig example.com NS でネームサーバーを調べて、それを @ で指定するといい。

新人エンジニア
新人エンジニア

でも、ネームサーバーに問い合わせるときって、いつも応答があるわけじゃないですよね?

先輩エンジニア
先輩エンジニア

ネームサーバーはレートリミットをかけていることがあるから、何度も連続で問い合わせるのは避けたほうがいいね。 もし応答がないなら、他のDNSを試してみるのも手だよ。

@を使った特定サーバーへの問い合わせ

@の使い方

digコマンドでは、@の後にDNSサーバーを指定することで、問い合わせ先を自由に変更できます。これを利用すると、特定のネームサーバーや異なるプロバイダのDNSを比較することが可能です。

基本コマンド

dig @ns1.example.com example.com

このコマンドを実行すると、ns1.example.comというネームサーバーに対してexample.comの情報を直接問い合わせることができます。
@を使った特定サーバーへの問い合わせ
スポンサーリンク

まとめ

dig コマンドを使って、特定のDNSサーバーを指定することで、より正確なDNS情報を取得できます

  • 公開DNS(Google, Cloudflare, OpenDNS)を指定することで、最新のDNS情報を確認できる。
  • 内部DNSサーバーに問い合わせることで、社内ネットワークのドメインを解析できる。
  • @ を使って特定のネームサーバーに直接問い合わせることで、より正確な情報を取得できる。

DNSの仕組みを理解し、適切なサーバーを指定することで、トラブルシューティングやDNS設定の確認がスムーズになります。

詳細な情報を取得する高度な使い方

dig コマンドには、詳細なDNS情報を取得するための高度なオプションが用意されています。特に、DNSの名前解決の流れを追跡したり、DNSSECのセキュリティ設定を確認したり、出力フォーマットを整えて見やすくするためのオプションが便利です。

ここでは、+trace+dnssec+multiline の3つのオプションについて詳しく解説します。

+traceを使ってドメインのネームサーバーの流れを追跡

+trace オプションを使うと、DNSの名前解決の流れを追跡することができます。これは、ルートネームサーバーから順にどのDNSサーバーがどのように応答しているかを確認するのに便利です。DNSの伝播状況やネームサーバーの動作を調べる際に役立ちます。

基本コマンド

dig +trace example.com

実行結果(抜粋)

.                       518400  IN      NS      a.root-servers.net.
...
example.com.            172800  IN      NS      ns1.example.com.
example.com.            172800  IN      NS      ns2.example.com.
新人エンジニア
新人エンジニア

先輩、dig +trace って何に使うんですか?

先輩エンジニア
先輩エンジニア

DNSの名前解決の過程を確認するために使うんだ。 例えば、ルートDNSサーバーからTLD(.com など)、そして最終的なネームサーバーまで、どのように問い合わせが進んでいるかが分かるよ。

新人エンジニア
新人エンジニア

ネームサーバーの設定変更をした後に使うと便利そうですね?

先輩エンジニア
先輩エンジニア

その通り。DNSの設定変更が反映されているか確認するのに +trace は役立つよ。キャッシュを無視して最新の情報を取得できるからね。

+traceを使ったDNSの流れ追跡

+traceオプションの役割

+traceオプションを使うと、DNSの名前解決の流れを追跡することができます。これは、ルートネームサーバーから順にどのDNSサーバーがどのように応答しているかを確認するのに便利です。DNSの伝播状況やネームサーバーの動作を調べる際に役立ちます。

基本コマンド

dig +trace example.com

このコマンドを実行すると、ルートDNSサーバーから順に、TLDサーバー、権威DNSサーバーまでの問い合わせの流れが表示されます。
+traceを使ったDNSの流れ追跡
スポンサーリンク

+dnssecを使用したDNSSEC対応のチェック

DNSSEC(DNS Security Extensions)は、DNSの改ざんを防ぐためのセキュリティ拡張機能です。+dnssec オプションを使うと、DNSSECに対応しているかどうかを確認できます。

基本コマンド

dig example.com +dnssec

実行結果(抜粋)

example.com.  86400  IN  RRSIG  A 5 3 86400 ...
example.com.  86400  IN  DNSKEY  257 3 8 ...
新人エンジニア
新人エンジニア

先輩、DNSSECって何のためにあるんですか?

先輩エンジニア
先輩エンジニア

DNSの改ざんを防ぐための仕組みだよ。悪意のある攻撃者が偽のDNS応答を送るのを防ぐのに役立つ。

新人エンジニア
新人エンジニア

dig +dnssec を使うと何が分かるんですか?

先輩エンジニア
先輩エンジニア

そのドメインがDNSSECに対応しているか、電子署名付きのレコードがあるかを確認できるよ。

新人エンジニア
新人エンジニア

DNSSECが設定されていないとどうなりますか?

先輩エンジニア
先輩エンジニア

DNSSEC関連のレコードが返ってこない。つまり、DNSSECの署名検証ができないから、DNSのセキュリティが弱い状態になるね。

+dnssecを使用したDNSSEC対応のチェック

DNSSECとは

DNSSEC(DNS Security Extensions)は、DNSの改ざんを防ぐためのセキュリティ拡張機能です。+dnssecオプションを使うと、DNSSECに対応しているかどうかを確認できます。

基本コマンド

dig example.com +dnssec

このコマンドを実行すると、DNSSECの署名情報(RRSIGレコード)やDNSKEYレコードが表示されます。これにより、ドメインがDNSSECに対応しているかどうかを確認できます。
+dnssecを使用したDNSSEC対応のチェック
スポンサーリンク

+multilineで見やすい出力形式に変更

dig の出力はデフォルトでは1行で表示されることが多く、内容が見づらいことがあります。+multiline オプションを使うと、出力を整形して可読性を向上させることができます

基本コマンド

dig example.com +multiline

実行結果(抜粋)

example.com.  3600  IN  MX  10 mail.example.com.
             3600  IN  MX  20 backup.example.com.
新人エンジニア
新人エンジニア

dig の出力って長くて見づらいんですが、もっと見やすくする方法はありますか?

先輩エンジニア
先輩エンジニア

+multiline を使うと、改行やスペースが適切に整えられて見やすくなるよ。

新人エンジニア
新人エンジニア

特にどんな場面で使うと便利ですか?

先輩エンジニア
先輩エンジニア

TXTレコードやDNSKEYのように長い文字列を含むレコードを調べるときに便利だよ。標準の出力だと1行で詰まっていて見づらいからね。

+multilineで見やすい出力形式に変更

+multilineオプションの役割

digの出力はデフォルトでは1行で表示されることが多く、内容が見づらいことがあります。+multilineオプションを使うと、出力を整形して可読性を向上させることができます。

基本コマンド

dig example.com +multiline

このコマンドを実行すると、DNSレコードの情報が複数行に分けて表示され、各フィールドが見やすく整形されます。特に長いTXTレコードやDNSKEYレコードを確認する際に便利です。
+multilineで見やすい出力形式に変更
スポンサーリンク

まとめ

dig コマンドの高度なオプションを活用することで、DNSの動作確認やセキュリティ設定のチェックをより効率的に行うことが可能になります。

  • +trace → ルートネームサーバーからの名前解決の流れを追跡
  • +dnssec → DNSSECが設定されているかを確認
  • +multiline → 出力を整形して見やすくする

DNSの設定やトラブルシューティングを行う際に、これらのオプションを適切に活用しよう!

dig コマンドの出力結果と各項目の説明

dig コマンドの出力には、DNSクエリの詳細情報が含まれています。以下の表では、dig example.com の出力例と、それぞれの項目の意味を分かりやすく解説します。

  1. digの出力結果
  2. digの出力結果の項目と説明
  3. 補足:重要な項目の詳細

digの出力結果

実行コマンド

$ dig example.com

出力結果

; <<>> DiG 9.16.1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345

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

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

;; Query time: 12 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Tue Feb 20 12:34:56 UTC 2024
;; MSG SIZE  rcvd: 56

digの出力結果の項目と説明

項目出力例説明
コマンドのバージョン情報; <<>> DiG 9.16.1 <<>> example.com実行した dig コマンドのバージョンとクエリ対象のドメイン名
グローバルオプション;; global options: +cmddig に指定されたグローバルオプション(特定の設定やカスタマイズ)
HEADER セクション;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345クエリの基本情報。status: NOERROR は成功、SERVFAIL や NXDOMAIN ならエラー
QUESTION セクション;example.com. IN Aユーザーが問い合わせた内容。ここでは example.com の Aレコード(IPv4アドレス)を取得
ANSWER セクションexample.com. 300 IN A 93.184.216.34DNSの応答(取得した情報)。この場合、example.com のIPアドレスが 93.184.216.34 で、TTL(有効期限)は 300秒
Query time;; Query time: 12 msecDNSサーバーへの問い合わせにかかった時間(12ミリ秒)
使用したDNSサーバー;; SERVER: 8.8.8.8#53(8.8.8.8)クエリに応答したDNSサーバー(この場合、Google Public DNS 8.8.8.8)
クエリ実行日時;; WHEN: Tue Feb 20 12:34:56 UTC 2024クエリを実行した日時(UTC)
メッセージサイズ;; MSG SIZE rcvd: 56dig の応答メッセージのサイズ(バイト単位)
digコマンドの出力結果と各項目の説明

項目

説明

コマンドのバージョン情報

実行したdigコマンドのバージョンとクエリ対象のドメイン名

グローバルオプション

digに指定されたグローバルオプション(特定の設定やカスタマイズ)

HEADERセクション

クエリの基本情報。status: NOERRORは成功、SERVFAILやNXDOMAINならエラー

QUESTIONセクション

ユーザーが問い合わせた内容

ANSWERセクション

DNSの応答(取得した情報)

Query time

DNSサーバーへの問い合わせにかかった時間

使用したDNSサーバー

クエリに応答したDNSサーバー
digコマンドの出力結果と各項目の説明
スポンサーリンク

補足 重要な項目の詳細

1. HEADER セクションstatus 値と意味

dig の結果に表示される status の値によって、クエリの成功・失敗を判別できます。

status意味
NOERROR正常に応答が返ってきた(成功)
NXDOMAIN指定したドメインが存在しない
SERVFAILDNSサーバーがエラーを返した
REFUSEDDNSサーバーが問い合わせを拒否した
TIMEOUTDNSサーバーからの応答がなかった
新人エンジニア
新人エンジニア

SERVFAIL って出たんですが、これは何が問題なんですか?

先輩エンジニア
先輩エンジニア

DNSサーバーが適切な応答を返せなかったときに SERVFAIL になるよ。サーバーが落ちているか、設定ミスの可能性があるね。

2. ANSWER セクション の各フィールドの意味

ANSWER SECTION には、DNSサーバーから返された情報が表示されます。

フィールド説明
ドメイン名問い合わせたドメイン名example.com.
TTL(Time to Live)レコードの有効期限(秒)300
クラス通常は IN(インターネット)IN
レコードタイプ取得したDNSレコードの種類A(IPv4アドレス)
データ実際の情報(IPアドレスなど)93.184.216.34
新人エンジニア
新人エンジニア

TTL(有効期限)が 300 って何ですか?

先輩エンジニア
先輩エンジニア

DNSサーバーが適切な応答を返せなかったときに SERVFAIL になるよ。サーバーが落ちているか、設定ミスTTL は、そのDNS情報がキャッシュとして保持される時間(秒)だよ。300なら、5分後に再取得される可能性がある。の可能性があるね。

実践!dig を使ったトラブルシューティング

dig は、ネットワークやDNSのトラブルシューティングに非常に有効なツールです。適切なコマンドを使うことで、ネットワーク障害や設定ミス、ドメイン移行時の問題を迅速に特定できます

  1. ネットワーク障害の調査
  2. DNS設定ミスの検出
  3. ドメイン移行時のDNSチェック
実践!digを使ったトラブルシューティング

ネットワーク障害の調査

インターネットに接続できない場合、DNSの応答が正しく返ってきているかを確認することで、ネットワーク障害の原因を特定できます。

DNS設定ミスの検出

DNSの設定変更後に、正しく適用されているかを確認するためにdigを使うことができます。複数のDNSサーバーを指定して問い合わせることで、設定の反映状況をチェックできます。

ドメイン移行時のDNSチェック

ドメインを別のサーバーに移行した場合、ネームサーバーが正しく設定されているか確認することが重要です。digコマンドを使ってNSレコードを確認し、新しいサーバーが正しく反映されているかをチェックします。
実践!digを使ったトラブルシューティング
スポンサーリンク

ネットワーク障害の調査

インターネットに接続できない場合、DNSの応答が正しく返ってきているかを確認することで、ネットワーク障害の原因を特定できます。

基本コマンド

dig google.com
新人エンジニア
新人エンジニア

TTL(有効期限)Webサイトにアクセスできないとき、dig で何を調べればいいですか?が 300 って何ですか?

先輩エンジニア
先輩エンジニア

まずは dig でDNSの応答が正常か確認しよう。Aレコードが返ってこないなら、DNSの設定に問題があるかもしれない。

DNS設定ミスの検出

DNSの設定変更後に、正しく適用されているかを確認するために dig を使うことができます。複数のDNSサーバーを指定して問い合わせることで、設定の反映状況をチェックできます

基本コマンド

dig @8.8.8.8 example.com
dig @1.1.1.1 example.com
新人エンジニア
新人エンジニア

DNSの設定を変えたのに反映されません…

先輩エンジニア
先輩エンジニア

プロバイダのDNSキャッシュの影響を受けている可能性がある。Google DNSやCloudflare DNSに直接問い合わせてみよう。

ドメイン移行時のDNSチェック

ドメインを別のサーバーに移行した場合、ネームサーバーが正しく設定されているか確認することが重要です。

基本コマンド

dig example.com NS
新人エンジニア
新人エンジニア

ドメイン移行後に正しく動作しているか確認する方法は?

先輩エンジニア
先輩エンジニア

dig NS example.com でネームサーバーを確認し、新しいサーバーが正しく反映されているかをチェックするといいよ。

ゴリタンが愛用しているLinuxの教科書たち
https://amzn.to/4hBQa2y
https://a.r10.to/hkpc1F

この記事も参考になるかも!
この記事を書いた人!

ゴリタン

インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。

CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。

あなたにオススメの広告
スポンサーリンク
Linux教科書