dig コマンド

| | コメント(4) | トラックバック(0)

ネームサーバに対して問い合わせを行い、その応答結果を表示するコマンドです。
BINDとともに提供されています。

DNSサーバの情報を調べるコマンドに「nslookup」コマンドがあります。
しかし、「nslookup」は「dig」と比べて以下のような違いがあります。

  • 情報が加工されて表示される
  • キャッシュサーバの挙動を前提としている
  • そのうちなくなる方向

Windowsで使うにはBINDをインストールする必要があるようです。
単体でバイナリはネット上に転がっているのは見つけられませんでした。
(「Windows版」の項目参照)
自分でコンパイルする方法もあるかもしれませんが。

RedHat上で使っていました。

dig <@利用するDNSサーバ> <情報を得たいドメイン名> <得たいタイプ>

ここで、
@利用するDNSサーバ : 例えばJPゾーンを管理しているコンテンツサーバは「a.dns.jp」です。
得たいタイプ : 色々ありますが、下のようなものがあります。(一部)

  • A : IPアドレス
  • NS : DNSサーバ
  • MX : メールサーバ
  • SOA : SOA情報
  • ANY : 知っている全ての情報


「www.asahi.com」のIPアドレス(Aレコード)を調べてみようと思います。

(2006/07/25 追記 ここから)
この時、「+norec」オプションをつけて実行した方が良いらしい。
再帰問い合わせを行わないようになり、そのDNSサーバで扱っているドメインの情報でなければ、 再帰的に問い合わせないので、自動で権限のあるDNSサーバから回答を得られなくなります。
このオプションを付けると、「flags」に「rd」が付かなくなります。
(2006/07/25 追記 ここまで)

# 「a.dns.jp」のDNSサーバを使って「www.asahi.com」の
# 全ての種類(ANY)を調べます。
# a.dns.jpはJPゾーンを管理しているDNSサーバです
$ dig @a.dns.jp www.asahi.com
 
; <<>> DiG 9.2.1 <<>> @a.dns.jp www.asahi.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9459
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13
 
;; QUESTION SECTION:
;www.asahi.com.                 IN      A
 
;; AUTHORITY SECTION:
.                       260168  IN      NS      B.ROOT-SERVERS.NET.
.                       260168  IN      NS      J.ROOT-SERVERS.NET.
.                       260168  IN      NS      K.ROOT-SERVERS.NET.
.                       260168  IN      NS      L.ROOT-SERVERS.NET.
.                       260168  IN      NS      M.ROOT-SERVERS.NET.
.                       260168  IN      NS      I.ROOT-SERVERS.NET.
.                       260168  IN      NS      E.ROOT-SERVERS.NET.
.                       260168  IN      NS      D.ROOT-SERVERS.NET.
.                       260168  IN      NS      A.ROOT-SERVERS.NET.
.                       260168  IN      NS      H.ROOT-SERVERS.NET.
.                       260168  IN      NS      C.ROOT-SERVERS.NET.
.                       260168  IN      NS      G.ROOT-SERVERS.NET.
.                       260168  IN      NS      F.ROOT-SERVERS.NET.
 
;; ADDITIONAL SECTION:
B.ROOT-SERVERS.NET.     346568  IN      A       128.9.0.107
J.ROOT-SERVERS.NET.     346568  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     346568  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     346568  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     346568  IN      A       202.12.27.33
I.ROOT-SERVERS.NET.     346568  IN      A       192.36.148.17
E.ROOT-SERVERS.NET.     346568  IN      A       192.203.230.10
D.ROOT-SERVERS.NET.     346568  IN      A       128.8.10.90
A.ROOT-SERVERS.NET.     346568  IN      A       198.41.0.4
H.ROOT-SERVERS.NET.     346568  IN      A       128.63.2.53
C.ROOT-SERVERS.NET.     346568  IN      A       192.33.4.12
G.ROOT-SERVERS.NET.     346568  IN      A       192.112.36.4
F.ROOT-SERVERS.NET.     346568  IN      A       192.5.5.241
 
;; Query time: 14 msec
;; SERVER: 61.120.151.100#53(a.dns.jp)
;; WHEN: Fri Oct 24 15:07:11 2003
;; MSG SIZE  rcvd: 450
 
# 上の実行結果では、「ANSWER SECTION」がありませんでした。
# 「AUTHORITY SECTION」では、ルートを管理している
# DNSサーバ(のひとつ)は「B.ROOT-SERVERS.NET」ということが
# 分かるので、「B.ROOT-SERVERS.NET」に問い合わせてみます
$ dig @B.ROOT-SERVERS.NET www.asahi.com
 
; <<>> DiG 9.2.1 <<>> @B.ROOT-SERVERS.NET www.asahi.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2035
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13
 
;; QUESTION SECTION:
;www.asahi.com.                 IN      A
 
;; AUTHORITY SECTION:
com.                    172800  IN      NS      A.GTLD-SERVERS.NET.
com.                    172800  IN      NS      G.GTLD-SERVERS.NET.
com.                    172800  IN      NS      H.GTLD-SERVERS.NET.
com.                    172800  IN      NS      C.GTLD-SERVERS.NET.
com.                    172800  IN      NS      I.GTLD-SERVERS.NET.
com.                    172800  IN      NS      B.GTLD-SERVERS.NET.
com.                    172800  IN      NS      D.GTLD-SERVERS.NET.
com.                    172800  IN      NS      L.GTLD-SERVERS.NET.
com.                    172800  IN      NS      F.GTLD-SERVERS.NET.
com.                    172800  IN      NS      J.GTLD-SERVERS.NET.
com.                    172800  IN      NS      K.GTLD-SERVERS.NET.
com.                    172800  IN      NS      E.GTLD-SERVERS.NET.
com.                    172800  IN      NS      M.GTLD-SERVERS.NET.
 
;; ADDITIONAL SECTION:
A.GTLD-SERVERS.NET.     172800  IN      A       192.5.6.30
G.GTLD-SERVERS.NET.     172800  IN      A       192.42.93.30
H.GTLD-SERVERS.NET.     172800  IN      A       192.54.112.30
C.GTLD-SERVERS.NET.     172800  IN      A       192.26.92.30
I.GTLD-SERVERS.NET.     172800  IN      A       192.43.172.30
B.GTLD-SERVERS.NET.     172800  IN      A       192.33.14.30
D.GTLD-SERVERS.NET.     172800  IN      A       192.31.80.30
L.GTLD-SERVERS.NET.     172800  IN      A       192.41.162.30
F.GTLD-SERVERS.NET.     172800  IN      A       192.35.51.30
J.GTLD-SERVERS.NET.     172800  IN      A       192.48.79.30
K.GTLD-SERVERS.NET.     172800  IN      A       192.52.178.30
E.GTLD-SERVERS.NET.     172800  IN      A       192.12.94.30
M.GTLD-SERVERS.NET.     172800  IN      A       192.55.83.30
 
;; Query time: 148 msec
;; SERVER: 128.9.0.107#53(B.ROOT-SERVERS.NET)
;; WHEN: Fri Oct 24 15:07:38 2003
;; MSG SIZE  rcvd: 463
 
# まだ「ANSWER SECTION」がありません。
# 「AUTHORITY SECTION」では、「com」を管理している
# DNSサーバ(のひとつ)は「A.GTLD-SERVERS.NET」
# ということが分かるので、「A.GTLD-SERVERS.NET」に
# 問い合わせてみます
$ dig @A.GTLD-SERVERS.NET www.asahi.com
 
; <<>> DiG 9.2.1 <<>> @A.GTLD-SERVERS.NET www.asahi.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18872
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 2
 
;; QUESTION SECTION:
;www.asahi.com.                 IN      A
 
;; AUTHORITY SECTION:
asahi.com.              172800  IN      NS      penguin.kddnet.ad.jp.
asahi.com.              172800  IN      NS      ns3.asahi.com.
asahi.com.              172800  IN      NS      ns4.asahi.com.
 
;; ADDITIONAL SECTION:
ns3.asahi.com.          172800  IN      A       209.249.129.33
ns4.asahi.com.          172800  IN      A       209.249.129.34
 
;; Query time: 217 msec
;; SERVER: 192.5.6.30#53(A.GTLD-SERVERS.NET)
;; WHEN: Fri Oct 24 15:08:29 2003
;; MSG SIZE  rcvd: 133
 
# まだ「ANSWER SECTION」がありません。
# 「AUTHORITY SECTION」では、「asahi.com」を
# 管理しているDNSサーバ(のひとつ)は「penguin.kddnet.ad.jp」
# ということが分かるので、「penguin.kddnet.ad.jp」に
# 問い合わせてみます
$ dig @penguin.kddnet.ad.jp www.asahi.com
 
; <<>> DiG 9.2.1 <<>> @penguin.kddnet.ad.jp www.asahi.com
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27158
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 3
 
;; QUESTION SECTION:
;www.asahi.com.                 IN      A
 
;; ANSWER SECTION:
www.asahi.com.          3600    IN      CNAME   wwwld3.asahi.com.
wwwld3.asahi.com.       7200    IN      A       209.249.129.20
 
;; AUTHORITY SECTION:
asahi.com.              7200    IN      NS      ns3.asahi.com.
asahi.com.              7200    IN      NS      penguin.kddnet.ad.jp.
asahi.com.              7200    IN      NS      ns4.asahi.com.
 
;; ADDITIONAL SECTION:
ns3.asahi.com.          7200    IN      A       209.249.129.33
penguin.kddnet.ad.jp.   86400   IN      A       210.132.91.129
ns4.asahi.com.          7200    IN      A       209.249.129.34
 
;; Query time: 13 msec
;; SERVER: 210.132.91.129#53(penguin.kddnet.ad.jp)
;; WHEN: Fri Oct 24 15:09:38 2003
;; MSG SIZE  rcvd: 186

「www.asahi.com」のCNAME(別名)は「wwwld3.asahi.com」であることや、そのAレコードは「209.249.129.20」である事が分かります。

Windows版

コメントで「.(ドット?)」さんに教えてもらいました。Thanks。

● インストールしてみる

・dig, a DNS query tool for Windows and replacement for nslookup
http://pigtail.net/LRP/dig/

Windows 2000に入れてみました。

  1. 「host.exe」「dig.exe」「libdns.dll」「libeay32.dll」「libisc.dll」「msvcr70.dll」「resolv.conf」を「C:\dig\」に保存
  2. お勧めされてる「whois.exe」も「C:\dig\」に保存。一緒に「cygwin1.dll」も。
  3. 「c:\dig\resolv.conf」をエディタで編集して、「C:\WINNT\system32\drivers\etc\resolv.conf」として保存
    nameserver [ISPから教えてもらったDNSサーバのIPアドレス]
    
    nameserver 210.xxx.xxx.1
    nameserver 210.xxx.xxx.2
    

● 使ってみる

# ヘルプの表示
C:\dig> dig -h
# 13個のルートレベルネームサーバ表示
C:\dig> dig . NS
# comドメインをコントロールしてるトップレベルネームサーバ表示
C:\dig> dig com. NS
# jpドメインをコントロールしてるトップレベルネームサーバ表示
C:\dig> dig jp. NS
# co.jpドメインをコントロールしてるトップレベルネームサーバ表示
C:\dig> dig co.jp. NS
# example.comドメインのネームサーバを表示
C:\dig> dig example.com. NS
# example.comドメインの Mail eXchange サーバを表示
C:\dig> dig example.com. MX
# www.example.com. のIPアドレスを表示
C:\dig> dig www.example.com.
# dns.example.jpを使ってwww.example.com. のIPアドレスを表示?
C:\dig> dig www.example.com. @dns.example.jp
# IPアドレスからホスト名を表示
C:\dig> dig -x 210.xxx.xxx.1

Windows版 その2 (2004/10/02 追記)

コメントでけんさんに教えてもらいました。Thanks。

「resolv.conf」を上述のように設定すれば使えるそうです。

・ISC BIND (Internet Systems Consortium, Inc.)
http://www.isc.org/index.pl?/sw/bind/
ISCで配布しているBIND。
「Windows NT 4.0 and Windows 2000 (binary)」をダウンロード。

「BIND8.4.4Tools.zip」は例えば、
ftp://ftp.isc.org/isc/bind/contrib/ntbind-8.4.4/
http://ftp.yz.yamagata-u.ac.jp/pub/network/isc/bind/contrib/ntbind-8.4.4/
とかですかねー?

digコマンドを使って、BINDの設定確認する (2006/05/08 追記)

ローカルネットワーク内のマスターゾーンサーバとキャッシュサーバとして動作している事を確認するには、こうでいいのかな?

BINDが動作してるマシン上で、nameserverを127.0.0.1にして確認。
digコマンドの引数に 「@127.0.0.1」としても同じ?

・localの正引き確認

dig localhost

・localの逆引き確認

dig -x 127.0.0.1

・SOAレコードの確認

dig example.jp SOA

後ろの方に表示される数字の意味。

<Serial> <Refresh> <Retry> <Expire> <TTL>
  • Serial
    マスターの変更をセカンダリに通知するために必要。セカンダリのSerialが、マスタよりも小さい場合転送が行なわれる
  • Refresh
    セカンダリにデータの正合性をさせるタイミング
  • Retry
    Refresh に失敗した時の再試行のタイミング
  • Expire
    セカンダリが、ここで設定した時間マスターに接続できない場合、保持しているデータを捨てる
  • TTL
    他のネームサーバがキャッシュしたキャッシュの生存期間

・NSレコードの確認

dig example.jp NS

・ドメインの正引き確認

「/var/named/domain.zone」で指定した通りに返れば良い?

dig dns1.example.jp

・ドメインの逆引き確認

「/var/named/domain.rev」で指定した通りに返れば良い?

dig -x 192.168.99.1

・外部ホストの確認(キャッシュサーバの確認)

dig www.external.example.com

トラックバック(0)

このブログ記事を参照しているブログ一覧: dig コマンド

このブログ記事に対するトラックバックURL: http://kinshachi.ddo.jp/mt/mt-tb.cgi/121

コメント(4)

. :

> Windowsで使うにはBINDをインストールする必要があるようです。
> 単体でバイナリはネット上に転がっているのは見つけられませんでした。

http://pigtail.net/LRP/dig/

ike :

「.(ドット?ルート?)」さん
ありがとうございますー。
入れてみましたー。
本文も更新しましたー。

けん :

ISCで配布しているBINDのwin32のバイナリに含まれるdig.exeやhost.exeもresolv.confを設定してやれば使えたように思います。

ちなみにBIND8はBIND8.4.4までBIND8.4.4Tools.zipなんて配布もしてました。FTPで繋げてみてみると今もありますよー。

ike :

けんさん。
ありがとうございますー。
色々あったんですね。
本文も更新ー。

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、ikeが2003年10月24日 15:14に書いたブログ記事です。

ひとつ前のブログ記事は「Windows HotFix Briefings (@IT)」です。

次のブログ記事は「Mozilla Thunderbird」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近のコメント

On dig コマンド
  • ike: けんさん。 ありがとうございますー。 色
  • けん: ISCで配布しているBINDのwin32
  • ike: 「.(ドット?ルート?)」さん ありがと
  • .: > Windowsで使うにはBINDをイ
Powered by Movable Type 4.261