2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

便利なdigコマンドを使おう!

DNSサーバの正引き、逆引きのテストをする場合もしくは、目的のドメインのサーバ情報を得る場合に、従来よりnslookupコマンドが使われている。このnslookupコマンドは皆さんもよく知っていると思う。
nslookupコマンドを使えば正引き情報、逆引き情報やNSレコード、MXレコード等の個別のサーバの情報もゲットできる。今回は、nslookupコマンドと役割は同じdigコマンドについて紹介する。digコマンドは、nslookupコマンドよりオプションが豊富で便利なコマンドである。さらに、将来的にはnslookupコマンドからdigコマンドへの移行が噂されているようなのでここでは、このdigコマンドについて説明したいと思う。この説明を見てみなさんもdigコマンドをこれから使ってみよう!


1.一般的な構文と説明

digの一般的な構文は以下のようになっている。

dig [@server] domain [q-type] [q-class] {q-opt} {d-opt} [%comment]

が正式な構文。しかし、通常使うのは以下の書式程度と推測する。

dig @ server domain query-type query-class -dig-option
     ①    ②     ③      ④       ⑤

① server

ドメイン名もしくは最後に(.)で指定するインターネットアドレスの何れかである。 省略された場合、 自ホストの/etc/resolv.confファイルに記述されたネームサーバが使われる。
ドメイン名が指定された場合は、DNSのリゾルバで解決する。システムがDNSをサービスしていない場合は、最後に( . )でアドレスを指定する。 利用できるサーバがそのドメインのどこかにある場合に必要なことは/etc/resolv.confで問い合わせたホストを解決するための、デフォルトネームサーバがどこにあるかが記述されていなければならない。 

② domain

参照するドメイン名を指定する。逆引きクエリを指定する便利な方法は、クエリオプションの-xオプションで説明する。

③ query-type

取得したいレコードタイプ。

● A

ネットワークアドレス。

● ANY

指定されたドメインのすべてを指定する。

● MX

メールエクスチェンジ。

● NS

ネームサーバ。

● SOA

権限の開始点。いわゆる、ゾーンファイルのSOAの部分から表示される。

● AXFR

ゾーン転送。ゾーン転送を行うには、権限のあるサーバに対してクエリを実行しなければならない。
このサーバは、そのゾーンのNSレコードを参照する事によって探す事が出来る。

● TXT

TXTレコード。

● SRV

サービスを示す。新しいレコードタイプで、Windows2000でサービスを探すために利用する。
結構便利なレコードで、MXレコードとNSレコードの代替ともなる。

④ query-class

取得したいレコードのクラス。
とりあえず、デフォルトのin(インターネット)を主に使うので、説明を省く。

⑤ -dig-option

digの動作を変更するオプション。

● -x <ドット表記アドレス>

逆引き表記アドレス、in-addr.arpaと同こと。逆引き参照パラメータ。デフォルトのクエリタイプはANY。

● -f file

バッチファイル。ファイルにクエリを記入しておくと、バッチがその内容を実行する。

● -T time

バッチ内の連続クエリを開始する時間間隔。バッチの同期を取る事が出来る。

● -p port

特にウェルノウンポート以外に対してクエリを実行する。デフォルトは、ウェルノウン53番。

● -p ping-string

pingを発行して応答時間を比較する。

● -t query-type

クエリタイプを指定するもう一つの方法。

● -c query-class

クエリクラスを指定するのもう一つの方法。数値クラス以外、記号も指定できる。

● -k keydir:keyname

名前つきTSIGカギを使ってクエリに署名を付加する。

● -envsav

すべての引数が解析された後でデフォルトや表示オプション等を現在のデフォルト環境としてファイルに保存する。
標準のデフォルトを替えたい時、 digを毎回使う度に複数のオプションを指定することのが面倒な場合に便利。 

● -envset

バッチの問い合わせを実行する時に使用する。digのバッチファイル中で “-envset ” が指定されていると、この引数が解析された以降のdig環境は、バッチファイルが実行されている間もしくは、次の “-envset ” が指定されるまでの間は、デフォルト値となる。 

● -[no]stick

バッチ問い合わせ実行に使用する。dig環境をdigのバッチファイル中で各問い合わせの前に(初期状態もしくは、“-envset ” で設定) 元の状態に戻す旨を指定する。 デフォルトの “-nostick ” は、dig環境を回復しないという意味で、digのバッチファイルの各行で指定されたオプションは、以降の行でもその効果が残ったままになる(“sticky” 時のデフォルトのようには回復されない)。 


2.実際にdigコマンドを使う

● 単純なホスト指定。

# dig www.kozupon.com

; <<>> DiG 8.2 <<>> www.kozupon.com
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUERY SECTION:
;; www.kozupon.com, type = A, class = IN

;; ANSWER SECTION:
www.kozupon.com. 23h54m46s IN CNAME michi.kozupon.com.
michi.kozupon.com. 23h54m46s IN A 203.141.144.180

;; AUTHORITY SECTION:
kozupon.com. 23h54m46s IN NS TEGTAN1.INTERLINK.OR.JP.
kozupon.com. 23h54m46s IN NS michi.kozupon.com.

;; ADDITIONAL SECTION:
TEGTAN1.INTERLINK.OR.JP. 23h54m46s IN A 203.141.128.33
michi.kozupon.com. 23h54m46s IN A 203.141.144.180

;; Total query time: 4 msec
;; FROM: hoge to SERVER: default — 192.168.0.4
;; WHEN: Wed Aug 7 15:26:38 2002
;; MSG SIZE sent: 33 rcvd: 152

● バッチファイルを使う方法。

dig-batと言うファイル名でバッチファイルをカレントディレクトリに作る。内容は、以下の通り。

www.kozupon.com. A +pfmin +ko +vc
michi.kozupon.com. A

その後、コマンドラインから以下のコマンドを実行すると結果が表示される。

# dig -f dig-bat

;; res options: init usevc recurs defnam styopn dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36537
;; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
;; QUERY SECTION:
;; www.kozupon.com, type = A, class = IN

;; ANSWER SECTION:
www.kozupon.com. 1D IN CNAME michi.kozupon.com.
michi.kozupon.com. 1D IN A 203.141.144.180


;; res options: init usevc recurs defnam styopn dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36540
;; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 1
;; QUERY SECTION:
;; michi.kozupon.com, type = A, class = IN

;; ANSWER SECTION:
michi.kozupon.com. 1D IN A 203.141.144.180

● 問い合わせ先ドメインのMXサーバを見つける方法

# dig kozupon.com MX

; <<>> DiG 8.2 <<>> kozupon.com MX
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; QUERY SECTION:
;; kozupon.com, type = MX, class = IN

;; ANSWER SECTION:
kozupon.com. 23h59m8s IN MX 10 mail.kozupon.com.

;; AUTHORITY SECTION:
kozupon.com. 23h45m34s IN NS TEGTAN1.INTERLINK.OR.JP.
kozupon.com. 23h45m34s IN NS michi.kozupon.com.

;; ADDITIONAL SECTION:
mail.kozupon.com. 23h59m8s IN A 203.141.144.180
TEGTAN1.INTERLINK.OR.JP. 23h45m34s IN A 203.141.128.33
michi.kozupon.com. 23h45m34s IN A 203.141.144.180

;; Total query time: 4 msec
;; FROM: hoge to SERVER: default — 192.168.0.4
;; WHEN: Wed Aug 7 15:35:50 2002
;; MSG SIZE sent: 29 rcvd: 155

● BINDのバージョンを表示させる方法

1)このホストのBINDバージョン表示
# dig CHAOS version.bind TXT

; <<>> DiG 9.2.1 <<>> CHAOS version.bind TXT
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1757
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind. CH TXT

;; ANSWER SECTION:
version.bind. 0 CH TXT “9.2.1

;; Query time: 28 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Aug 7 15:30:45 2002
;; MSG SIZE rcvd: 48

2)ホストを指定してのBINDバージョン表示
# dig @sv.xxxxxxxxxx.co.jp version.bind CHAOS txt

; <<>> DiG 9.3.3rc2 <<>> @sv.xxxxxxxxxx.co.jp version.bind CHAOS txt
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49525
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;version.bind. CH TXT

;; ANSWER SECTION:
version.bind. 0 CH TXT “9.2.1

;; Query time: 29 msec
;; SERVER: xxx.xxx.xxx.xxx#53(xxx.xxx.xxx.xxx)
;; WHEN: Thu May 10 14:04:14 2007
;; MSG SIZE rcvd: 48

● root.hintsを更新する

カレントディレクトリから以下のコマンドを実行して、root.hintsを更新する。root.hintsファイルは、時々変更されているので気をつけたい。bindエラーの原因の一つになることがあるので注意が必要だ。

# dig @e.root-servers.net . ns > named.ca

以上

コメント