連載
» 2017年11月09日 05時00分 公開

Linux基本コマンドTips(158):【 dig 】コマンド――ドメイン名からIPアドレスを調べる

本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回はドメイン名からIPアドレスを調べる「dig」コマンドです。

[西村めぐみ,@IT]
「Linux基本コマンドTips」のインデックス

Linux基本コマンドTips一覧

 本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、ドメイン名からIPアドレスを調べる「dig」コマンドです。

digコマンドとは?

 「dig」コマンドはDNSサーバに問い合わせることで、ドメイン名からIPアドレスを調べるコマンドです(逆も可能)。nslookupコマンド(第156回)やhostsコマンド(第157回)とよく似た機能を備えています。

 問い合わせ内容をファイルから読み込むバッチモードや、オプション指定によってhostコマンドよりも表示内容を細かく指定できることがdigコマンドの特徴です。なお、nslookupコマンドとは異なり、対話モードを備えていません。



digコマンドの書式

dig [@DNSサーバ] ドメイン名 [クエリタイプ] [クエリクラス] [クエリオプション]

※クエリオプションはドメイン名の前にも指定可能。ドメイン名の代わりに「-x IPアドレス」を指定可能。[ ]は省略可能な引数を示しています。




digで指定する主なクエリタイプ

タイプ 意味
a ネットワークアドレス(T_A)、デフォルト
any 指定されたドメインの全て/任意の情報(T_ANY)
hinfo ホスト情報(T_HINFO)
mx メール交換情報(T_MX)
ns ネームサーバ(T_NS)
soa ゾーンの権威者を表すレコード(T_SOA)
axfr ゾーン転送情報(T_AXFR)※1

※1 AXFR(Authoritative Transfer)は名前解決の情報(ゾーン情報)を別のサーバから取得するゾーン転送プロトコル。DNSサーバ同士の同期などに使われる。



digで指定する主なクエリクラス

クラス 意味
in インターネットクラスドメイン(C_IN)、デフォルト
any 全て/任意のクラスの情報(C_ANY)※2

※2 anyはクエリタイプとクエリクラスの両方で使われるが、anyのみ指定した場合は「クエリタイプ=any」として扱うので、クエリクラスをanyにするにはタイプも別途指定するか、「-c any」で指定する。なお、全てのクエリタイプとクエリクラスのリストは、RFC 1035を参照



digで指定する主なクエリオプション

オプション 意味
-4 IPv4で問い合わせる
-6 IPv6で問い合わせる
-x IPアドレス 逆引きを行う
-t クエリタイプ クエリタイプ(-t aまたは -t T_Aのように使用)
-c クエリクラス クエリクラス(-c inまたは-c C_INのように使用)
-p ポート番号 問い合わせに使用するポート番号(デフォルトは53)
-f ファイル ファイルを読み込んで問い合わせを実行する(バッチモード)
-T 秒数 バッチモードで実行した際、各問い合わせの間隔(デフォルトは0秒)
+debug、+nodebug デバッグモードの有効/無効(省略形:deb)
+recurse、+norecurse 再帰的な探索の有効/無効(省略形:rec)
+retry=回数 リトライの回数(省略形:ret)、デフォルトは4回
+time=秒数 タイムアウトまでの秒数(省略形:ti)、デフォルトは4秒
+defname、+nodefname デフォルトドメインを使用するかどうか(省略形:def)
+search、+nosearch ドメインサーチリストを使うかどうか(省略形:sea)
+trace、+notrace ルートDNSからの名前解決をトレースするかどうか(省略形:tra)
+dnssec、+nodnssec DNSSEC ※3を使用するかどうか(省略形:dn)

※3 DNSSEC(DNS Security Extensions、DNSセキュリティ拡張)は、正しいサーバから応答されたものであることを、デジタル署名によって保証する仕組み。DNS応答が偽装あるいは改ざんされると、ドメイン名とは異なるサーバに接続し、セキュリティ上の問題が起きる可能性がある。



digで指定する主なクエリオプション(表示指定関係)

オプション 意味
+cmd、+nocmd コマンドを表示するかどうか(省略形:cm)
+stats、+nostats 問い合わせの統計を表示するかどうか(省略形:st)
+comment、+nocomments コメントを表示するかどうか(省略形:co)
+ques、+noques 質問ブロックを表示するかどうか(省略形:qu)
+answer、+noanswer 回答ブロックを表示するかどうか(省略形:an)
+all、+noall 表示指定を全て有効/無効にする
+multiline、+nomultiline 拡張フォーマットで表示するかどうか(省略形:m)
+short、+noshort 短い表示を行うかどうか(省略形:shor)


ドメイン名からIPアドレスを調べる

 「dig ドメイン名」で対応するIPアドレスを調べます(画面1)。IPアドレスからドメインを調べたい場合は「dig -x IPアドレス」とします。これを「逆引き」と表現しますが、逆引きができるかどうかはサーバの設定によって異なります。

コマンド実行例

dig ドメイン名

(ドメイン名に対応するIPアドレスを調べる)

dig www.google.co.jp

(www.google.co.jpのIPアドレスを調べる)(画面1

dig -x IPアドレス

(IPアドレスに対応するドメイン名を調べる、逆引き)


図1 図1 www.google.co.jpというドメイン名からIPアドレスなどを調べたところ 「->>HEADER<<-」行に「NOERROR」とあり、正常な応答であると分かる(ドメイン名が見つからない場合は「NXDOMAIN」、応答が異常な場合は「SERVFAIL」)


使用するDNSサーバを変更する

 「dig @DNSサーバ ドメイン」と入力することで、問い合わせるDNSサーバを指定します(画面2)※4。

※4 インターネット上では多数のDNSサーバがドメイン名とIPアドレスのひも付けを分散管理している。ネットワーク構成上最も近いDNSサーバに、digコマンドが最初の問い合わせを行い、そのDNSサーバ上に情報がなければ、他のDNSサーバの情報も参照する(+norecurseを指定しなかった場合)。コマンド実行例にある「8.8.8.8」はGoogle Public DNSが運営するDNSサーバのIPアドレス。



コマンド実行例

dig @DNSサーバ ドメイン

dig @8.8.8.8 www.google.co.jp

(8.8.8.8に問い合わせてwww.google.co.jpのIPアドレスを調べる)(画面2


図2 図2 問い合わせるDNSサーバのIPアドレスを指定したところ デフォルトのDNSサーバよりも応答が遅かった(44ミリ秒)


表示内容を調整する

 「dig ドメイン名」は問い合わせのコマンドやそれに対する回答、コメントなどが表示されます。「dig ドメイン名 +noques +nocomments」のようにすることで不要な項目を非表示に、「+short」でIPアドレスのみにすることができます(画面3)。

コマンド実行例

dig ドメイン名 +noques +nocomments

(「QUESTION SECTION」とコメント行を表示しない)

dig ドメイン名 +noques +nocomments +nostats

(上記に加えて最後に表示される統計情報を表示しない)(画面3

dig ドメイン名 +short

(IPアドレスだけを表示する)(画面3


図3 図3 質問ブロックやコメント、統計情報などの表示を抑制したところ


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801NからのDOSユーザー。PC-486DX時代にDOS版UNIX-like toolsを経てLinuxへ。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。


Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。