ギーク
DNS 名前解決における dig 活用のすすめ
Masato Kaneko
みなさんこんにちは。
インフラ担当の金子です。
本日は、ドメイン名が適切に設定されているか、DNS サーバが期待した応答を返しているかなど、DNS の名前解決のテストを dig を用いて手動で行う方法を少しご紹介したいと思います。
1 歩進んだ DNS のトラブルシューティングとして役立てていただければ幸いです。
dig とはなにか
dig とは、Domain Information Groper の略で、DNS サーバ実装である ISC BIND に含まれる、コマンドラインの DNS 問い合わせツールです。
DNS の名前解決を行う際、DNS クエリ (問い合わせ) を DNS サーバに向けて送信するわけですが、そのクエリの内容を細かく指定することが出来ます。
今回は、よく使うオプションとその効果について、次に挙げる 3 つの具体的な利用シーンを例にご紹介したいと思います。
利用シーン
- 権威サーバに対して直接問い合わせたい時
- 権威サーバを移行した後、切り替わりを確認したい時
- Lame Delegation (委任不全) に陥っていないか調べる時
権威サーバに対して直接問い合わせたい時
権威サーバに対して直接問い合わせを行いたい時は、再帰問い合わせではなく、反復 (非再帰) 問い合わせを行う必要があるので、次の例のように +norec オプションと、アットマークの後に問い合わせ先となる権威サーバを指定します。
ちなみに、dig のデフォルトでは再帰問い合わせを送信するようになっています。
再帰問い合わせと反復 (非再帰) 問い合わせの違いは、次のページなどを参考にしてください。
例
# www.nowhere.co.jp の IP アドレスを nowhere.co.jp の権威サーバに直接問い合わせ
$ dig +norec @ns0.nowhere.co.jp. www.nowhere.co.jp. IN A
# nowhere.co.jp ドメインの DMARC 設定を nowhere.co.jp の権威サーバに問い合わせ
$ dig +norec @ns1.nowhere.co.jp. _dmarc.nowhere.co.jp. IN TXT
コマンドライン中の IN はクラスを表し、A や TXT は問い合わせを行いたいレコードタイプを表しています。
上記のようなコマンドを利用することで、「行儀よく」権威サーバに問い合わせをすることができ、意図せず DNS キャッシュを参照してしまっているという事態も防ぐことができます。
権威サーバを移行した後、切り替わりを確認したい時
続いて、権威サーバを移行し、新しい権威サーバに切り替わったか確認する方法になります。
これは、対象のドメイン名の上位 (トップレベルドメインなど) の権威サーバに対して反復クエリを送信して、対象のドメインの NS レコードが正しく応答されているかを確認します。
例
# ルートサーバに jp ドメインの権威サーバ一覧を問い合わせ
$ dig +norec @198.41.0.4 jp. IN NS
# jp ドメインの権威サーバに nowhere.co.jp ドメインの権威サーバ一覧を問い合わせ
$ dig +norec @a.dns.jp. nowhere.co.jp. IN NS
$ dig +norec @b.dns.jp. nowhere.co.jp. IN NS
...
権威サーバの引越し時は、最寄りのキャッシュサーバに問い合わせを行うことはせず、上位の権威サーバに直接問い合わせを行って確認するようにしましょう。
Lame Delegation (委任不全) に陥っていないか調べる時
最後に、対象ドメイン名が Lame Delegation (委任不全) に陥っていないか調べる方法になります。
これは、上記の例と同様に、上位の権威サーバに問い合わせを行った後、対象ドメイン名の権威サーバに対して問い合わせを行い、すべての権威サーバが同じ応答をしているか、擦り合わせて確認します。
DNS においては、上位の権威サーバから権威の「委任」を受けて運用するので、その委任関係を検証することが Lame Delegation に陥っていないかどうかの確認になります。
例
# jp ドメインの権威サーバが持っている nowhere.co.jp の権威サーバ一覧を問い合わせ
$ dig +norec @a.dns.jp. nowhere.co.jp. IN NS
# nowhere.co.jp の権威サーバが持っている nowhere.co.jp の権威サーバの一覧を問い合わせ
$ dig +norec @ns0.nowhere.co.jp. nowhere.co.jp. IN NS
...
まとめ
DNS のトラブルシューティングなどに利用することができる、dig を活用した手動での名前解決の方法を少しご紹介しました。
dig には他にも数多くのオプションがあり、nslookup よりもはるかに強力なツールになります。
今回は紹介しませんが、この他にも例えば次のようなケースにも利用することができます。
- キャッシュの確認
- キャッシュサーバとして動作していないかの確認
- 権威サーバの特定
- TCP の対応状況の確認
- EDNS0 の対応状況の確認
- DNSSEC の対応状況の確認
DNS の細かい設定値を指定して問い合わせすることのできる大変便利なツールですので、是非活用してみてください。
Featured Image by El Taller del Bit – dig dominio dns (2012) / CC BY SA 2.0