DNSQUERY(1)

名称
dnsquery - resolver を用いて domain name server に問い合わせる

書式
dnsquery [-n nameserver] [-t type] [-c class] [-r retry] [-p retry_period] [-d] [-s] [-v] host

解説
dnsquery プログラムは、BIND リゾルバのライブラリ呼び出しを利用した、 ネームサーバとの一般的なインタフェースです。 このプログラムは、オペコード QUERY によるネームサーバへの問い合わせを サポートしています。 このプログラムは、nstest, nsquery, nslookup などのプログラムを 置き換えるもの、あるいは補うものとして作成されました。 host と ns 以外の全ての引数は大文字と小文字を区別しません。

オプション

-n  問い合わせに用いるネームサーバです。ネームサーバの指定は、 w.x.y.z の形式のインタネットアドレスで表現しても、ドメイン名で表現しても 構いません。(デフォルトは /etc/resolv.conf で指定したものになります)

-t  関心のあるリソースレコードタイプです。タイプには以下のものがあります:

    A   アドレス
    NS  ネームサーバ
    CNAME
        canonical name
    PTR ドメインネームへのポインタ
    SOA start of authority
    WKS well-known service
    HINFO
        ホスト情報
    MINFO
        mailbox 情報
    MX  mail exchange
    RP  responsible person
    MG  mail group member
    AFSDB
        DCE または AFS サーバ
    ANY ワイルドカード

    大文字と小文字のどちらも使用できます。(デフォルトは ANY です)

-c  関心のあるリソースレコードのクラス。クラスには以下のものがあります:

    IN  Internet
    HS  Hesiod
    CHAOS
        Chaos
    ANY ワイルドカード

    大文字と小文字のどちらでも使用できます。(デフォルトは IN です)

-r  ネームサーバが応答しない場合のリトライ回数です。(デフォルトは 4 です)

-p  タイムアウト時間です。(デフォルトは RES_TIMEOUT です)

-d  デバッグ機能を有効にします。これを指定すると、リゾルバの options フィールドの RES_DEBUG ビットをセットします。(デフォルトはデバッグ機能無しです)

-s  パケットではなく stream を用います。つまり、ネームサーバとの接続に UDP データグラムではなく TCP ストリームを用います。リゾルバの options フィールドの RES_USEVC ビットをセットします。(デフォルトは UDP です)

-v

host
    関心のあるホスト名 (あるいはドメイン名) です。

関連ファイル
/etc/resolv.conf     デフォルトのネームサーバと検索リスト
<arpa/nameser.h>     利用可能な RR タイプとクラスのリスト
<resolv.h>    リゾルバのフラグのリスト

関連項目
nslookup(8), nstest(1), nsquery(1), named(8), resolver(5)

診断
もしリゾルバが問い合わせに対する回答に失敗し、デバッグ機能が有効になっていない 場合は、 dnsquery は単に以下のようなメッセージを表示します:

Query failed (rc = 1) : Unknown host

リターンコードの値は h_errno に入ります。

バグ
IN 以外のクラスを問い合わせると面白い結果が得られることがあります。 というのは、ネームサーバは普通、クラス IN のリソースレコードとして ルートネームサーバのリストしか持っていないからです。

問い合わせでは、'-n' オプションの引数が正しいインタネットアドレスかどうか の判定に inet_addr() の呼び出しを使っています。 残念ながら、inet_addr() は一部の (正しくない) アドレス (例えば 1.2.3.4.5) に対してセグメンテーションフォルトを起こすことがあるようです。

作者
Bryan Beecher