DIG(1)

名称
dig - ドメイン名問い合わせパケットをネームサーバに送る

書式
dig [@server] domain [<query-type>] [<query-class>] [+<query-option>] [- <dig-option>] [%comment]

解説
dig (ドメイン情報手探り器; domain information groper) は、 DNS (Domain Name System) サーバから情報を集めるために使われる 柔軟なコマンドラインツールです。 dig は 2 つのモードを持っています。 これは、1 つの問い合わせを行う単純な対話的利用モードと、 いくつかの問い合わせ行のリスト中の各問い合わせを実行するバッチモードです。 すべての問い合わせオプションは、コマンドラインから利用可能です。

普通の簡単な dig の使用法は、以下のような形式です。

dig @server domain query-type query-class

ここで、

server
    は、ドメイン名かドット表記のインターネットアドレス (IPv4/IPv6) のどちらかです。 もし、このオプションフィールドが省略された場合、 dig は、そのマシンのデフォルトのネームサーバを利用しようとします。

    注: ドメイン名が指定された時は、ドメイン名システムリゾルバ (つまり、BIND) を使うことで解決しようとします。システムが DNS を 提供していない時は、ドット形式のアドレスを指定する必要があります。 利用できるサーバがどこかにある場合は、必要なことは /etc/resolv.conf が存在し、 server 自身が解決できるように、そのデフォルトネームサーバがどこにあるかが 記述されていることだけです。 /etc/resolv.conf についての情報は resolver(5) を参照してください。 警告: /etc/resolv.conf を変更すると、標準のリゾルバライブラリと (潜在的に) それを使ういくつかのプログラムに影響を与えます。 オプションとして、ユーザは環境変数 LOCALRES を設定し、 /etc/resolv.conf の代わりに使うファイルの名前を指定できます。 (LOCALRES 変数は dig リゾルバ固有のもので、標準のリゾルバでは 参照されません) 。 LOCALRES 変数が設定されていないか、 設定されたファイルが読み込めない場合は、 /etc/resolv.conf が使われます。

domain
    は、あなたが情報を要求しているドメイン名です。 逆アドレスの問い合わせのための便利な方法は、 -x オプションを参照してください(この節の その他のオプション の項で述べられています)。

query-type
    は、あなたが要求している情報のタイプ(DNS 問い合わせタイプ)です。 省略された場合のデフォルトは、 “a” (T_A = アドレス) が使われます。以下のタイプが認識されます。

    a       T_A
        ネットワークアドレス
    any     T_ANY
        指定されたドメインのすべて/任意の情報
    mx      T_MX
        ドメインのメール交換情報 (MX)
    ns      T_NS
        ネームサーバ
    soa     T_SOA
        ゾーンの権威者を表すレコード
    hinfo   T_HINFO
        ホスト情報
    axfr    T_AXFR
        ゾーン転送情報(権威を持ったサーバに尋ねなければなりません)
    txt     T_TXT
        任意の数の文字列

    (完全なリストは、RFC 1035 を参照してください。)

query-class
    は、問い合わせで要求されるネットワーククラスです。 省略された場合のデフォルトは、 “in” (C_IN = Internet) です。 以下のクラスが認識されます。

    in      C_IN
        インターネットクラスドメイン
    any     C_ANY
        すべて/任意のクラスの情報

    (完全なリストは、RFC 1035 を参照してください。)

    注: “any” は、 クラス や問い合わせの タイプ を指定するために使われます。 dig は、最初に現れた “any” を query-type = T_ANY として解析します。 query-class = C_ANY にするためには、 “any” を 2 度指定するか、 -c オプション(以下参照)を利用して問い合わせクラスを 指定しなければなりません。

  その他のオプション

%ignored-comment
    “%” は、単に解析されない引数を含むために使われます。 これは、 dig をバッチモードで実行する時に有効です。 問い合わせリスト中のすべての @server-domain-name を解決する代わりに、 そのオーバヘッドを避けつつコマンドライン上にドメイン名を書くことが出来ます。 以下の例を参照。

    dig @128.9.0.32 %venera.isi.edu mx isi.edu

- <dig option>
    “-” は、 dig の操作に影響を与えるオプションを指定するために 使われます。以下のオプションが現在利用可能です ( 便利であるかどうかは保証しません )。

    -x dot-notation-address
        逆アドレス変換を指定する便利な形式です。 “dig 32.0.9.28.in-addr.arpa” の代わりに、 “dig -x 28.9.0.32” と指定できます。

    -x IPv6-address
        逆アドレス変換を指定する便利な形式です。 “dig 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa” の代わりに、 “dig -x ::1” と指定できます。

    -f file
        dig のバッチモードのためのファイルです。ファイルは、 つづいて実行される問い合わせの指定 ( dig のコマンドライン) の リストを含んでいます。 ‘’;, ‘#’, ‘\n’ で始まる行は無視されます。その他のオプションは、 コマンドラインで現れるものは、個々のバッチによる問い合わせでも 影響があります。

    -T time
        バッチモードで実行した時、連続した問い合わせの始まる時間間隔を秒で与え ます。2 つ以上のバッチ dig コマンドの実行を大体同期することができる ようになります。デフォルトは 0 です。

    -p port
        ポート番号です。標準でないポート番号で待つネームサーバに問い合わせます。 デフォルトは 53 です。

    -P[ping-string]
        問い合わせからかえってきた後で、 ping(8) コマンドを応答時間の比較のために実行します。これは、美しくないのですが、 シェルを呼び出します。統計の最後の 3 行がコマンドのために 表示されます。

        ping -s -server_name -56 -3

        オプションの “ping-string” が存在した時は、シェルコマンドでは “ping -s” を置き換えます。

    -t query-type
        問い合わせのタイプを指定します。タイプフィールド内の整数値か、 上で述べたニーモニック表現 (つまり mx = T_MX ) かで 指定することができます。

    -c query-class
        問い合わせのクラスを指定します。クラスフィールド内の整数値か、 上で述べたニーモニック表現 (つまり in = C_IN) で 指定することができます。

    -k keydir:keyname
        ディレクトリ keydir 中の TSIG キー名 keyname で、問い合わせます。

    -envsav
        このフラグを指定すると、すべての引数が解析された後で dig 環境 (デフォルトや表示オプション等) を デフォルト環境としてファイルに保存します。 標準のデフォルトが気に入らず、 dig を使う度にたくさんのオプションを指定することが嫌な場合は便利です。 環境は、 dig 出力 (以下参照) で詳しく述べられるフラグと同じように、 リゾルバの状態変数フラグや、タイムアウト、再試行回数からなります。 シェル環境変数 LOCALDEF がファイルの名前に設定されている場合、 これが、デフォルトの dig 環境が保存される場所となります。 そうでない場合は、ファイル “DiG.env” が現在の作業ディレクトリに 作成されます。

        注: LOCALDEF は、 dig のリゾルバ固有であり、 標準のリゾルバライブラリの操作には影響を与えません。

        dig が実行される度に、 “./DiG.env” またはシェル環境変数 LOCALDEF で指定されたファイルが探されます。そのようなファイルが 存在し読める場合は、引数を解析する前にこのファイルから環境が 読み込まれます。

    -envset
        このフラグは、バッチ問い合わせを実行する時にだけ影響があります。 dig バッチファイル中で “-envset” が指定されていると、 この引数が解析された後の dig 環境は、バッチファイルが実行されている間もしくは、次の “-envset” が指定されるまでの間は、 デフォルトの環境となります。

        - [no] stick このフラグは、バッチ問い合わせ実行にだけ影響を与えます。 これは、 dig 環境を dig バッチファイル中での 各問い合わせ (行) の前に (初期状態もしくは、 “-envset” で設定された) 元の状態に戻すことを指定します。 デフォルトの “-nostick” は、 dig 環境を回復しないという意味ですので、 dig バッチファイルの各行で指定されたオプションは、 後の行でもその効果が残ったままになります (つまり “sticky” 時のデフォルトのようには回復されません)。

+<query-option>
    “+” はパケット問い合わせ中のオプション変更や dig 出力仕様を変更するために使われます。 これらの多くは、 nslookup(8) で受け入れられるパラメータと同じものです。 オプションが値を必要とする場合、その指定形式は以下のようになります。

    + keyword [=value]

    ほとんどのキーワードは、省略が可能です。 “+” オプションの解釈は非常に単純です。 値はキーワードとスペースで区切ってはなりません。 以下のキーワードが現在利用可能です。

    キーワード 省略形 意味 [デフォルト]

        [no] debug (deb) デバッグモードを変更 [deb]
        [no] d2 追加のデバッグモードを変更 [nod2]
        [no] recurse (rec) 再帰的探索を使うかどうか指定 [rec]
        retry=# (ret) 再試行の回数を # に設定 [4]
        time=# (ti) タイムアウト時間を # 秒に設定 [4]
        [no] ko 繋げておくオプション(vc を暗黙指定) [noko]
        [no] vc 仮想回線を使うかどうか指定 [novc]
        [no] defname (def) デフォルトドメイン名を使うかどうか指定 [def]
        [no] search (sea) ドメインサーチリストを使うかどうか指定 [sea]
        domain=NAME (do) デフォルトドメイン名を NAME に指定
        [no] ignore (i) trunc. エラーを無視するかどうか指定 [noi]
        [no] primary (pr) プライマリサーバを使うかどうか指定 [nopr]
        [no] aaonly (aa) 権威を持った問い合わせのみのフラグ [noaa]
        [no] cmd 解析された引数を表示 [cmd]
        [no] stats (st) 問い合わせの統計を表示 [st]
        [no] Header (H) 基本的なヘッダを表示 [H]
        [no] header (he) ヘッダフラグを表示 [he]
        [no] ttlid (tt) TTL を表示 [tt]
        [no] trunc (tr) 名前から origin を削除 [tr]
        [no] cl クラス情報を表示 [nocl]
        [no] qr 出て行った問い合わせを表示 [noqr]
        [no] reply (rep) 応答節を表示 [rep]
        [no] ques (qu) 質問節を表示 [qu]
        [no] answer (an) 回答節を表示 [an]
        [no] author (au) 権威節を表示 [au]
        [no] addit (ad) 追加節を表示 [ad]
        [no] dnssec (dn) OPT 擬似レコード中で DNSSEC OK ビットを設定 [nodn]
    pfdef
        デフォルト表示フラグを設定
    pfmin
        最小のデフォルト表示フラグを設定
    pfset=#
        表示フラグを # に設定 (# は 16 進 /8 進/10 進が可能です)
    pfand=#
        表示フラグに # とのビット論理積 (and) 適用
    pfor=#
        表示フラグに # とのビット論理和 (or) 適用

    再試行回数 と 時間 のオプションは、問い合わせデータグラムを送る際に、 リゾルバライブラリによって使われる再送戦略に影響を与えます。 アルゴリズムは以下の通りです

        for i = 0 to retry - 1
            for j = 1 to num_servers
        	send_query
        	wait((time * (2**i)) / num_servers)
            end
        end

    (注: dig はいつも “num_servers” として値 1 を使います。)

  詳細
dig は、かつて BINDの resolver(3) ライブラリの変更版を要求しました。 BIND のリゾルバは、(BIND 4.9のように) dig を正しく動作させるようになって来ています。本質的には、 dig は、引数の解釈と適切なパラメータ設定を(見事にではなく)卒直に行うものです。 dig はリゾルバの関数 res_init(), res_mkquery(), res_send() を使い、また _res 構造体を操作します。

環境変数
LOCALRES
    /etc/resolv.conf の代わりに使うファイル
LOCALDEF
    デフォルトの環境ファイル

上述した -envsav, -envset, - [no] stick オプションの説明も参照してください。

関連ファイル
/etc/resolv.conf
    初期状態のドメイン名とネームサーバのアドレス
./DiG.env
    デフォルトオプションを保存するデフォルトファイル

関連項目
named(8), resolver(3), resolver(5), nslookup(8)

規格
RFC 1035

作者
Steve Hotz hotz@isi.edu

謝辞
dig は、Andrew Cherenson によって書かれた nslookup(8) の関数を使っています。

バグ
dig は "潜行性機能過多" を患っています。 これは開発中に潜在的な用途をいくつも考えていた結果です。 苛酷なダイエットをしたらきっとよくなるでしょう。 同様に、表示フラグとそれで指定できる表示項目の粗さとから、 これらがその場限りの必要性から追加されたものだということが わかるはずです。

リゾルバ中のどこかで問題が発生した時に、 dig はうまく (しかるべき終了ステータスで) 終了してくれるとは限りません。 ( 注: 大概のよくある終了条件はきちんと処理できます) 。 これは、特にバッチモードで実行している時に頭の痛い問題です。 異常終了し (さらにそれが捕捉されなかっ) た時には、 バッチ全体が終了してしまいますが、 そのようなイベントが捕捉された時には、 dig はそのまま次の問い合わせを続けるだけです。