DNSサーバーAとDNSサーバーBに対し
- DNSサーバーAのフォワーダーをDNSサーバーBに設定
- DNSサーバーBのフォワーダーをDNSサーバーAに設定し
DNSサーバーAにフォワードするDNSクエリを問い合わせたら、フォワーダーのループはどのようになるでしょうか?
レジュメ
結論、無限ループせずにDNSクエリが失敗となる
上記のようなDNSふぁわーだーのループ構造を作った上で、DNSクエリをnslookupしたところ、
結果的に、クエリの数は増えましたがDNSクエリの無限ループはしなかったです。
DNSループは起きないんですね。
LinuxでDNSフォワーダーループ環境を構築した結果
- CentOS Linux 7.3.1611
- bind 9.9.4-37.el7
でDNSサーバーAとDNSサーバーBで構築。
DNSサーバーAから127.0.0.1に対し、nslookupでwww.aaa.comのクエリを送った結果、以下のようになった。
- 127.0.0.1へクエリを送り
- 2回フォワーダーによるループが発生
- 127.0.01へ再送されて
- 2回フォワーダーによるループが発生
- 127.0.01へ再再送、再再送されて
- 1回フォワーダーによるループが発生し終了。
少し謎めいた動きではありますが、
一回のnslookupのクエリに対し、9回のDNSのやり取りが発生しました。
WindowsでDNSフォワーダーループ環境を構築した結果
- Windows Server 2012 R2
- 役割と機能の追加よりDNS
でDNSサーバーAとDNSサーバーBで構築。
DNSサーバーAから127.0.0.1に対し、nslookupでwww.bbb.comのクエリを送った結果、以下のようになった。
テストは、
nslookup
server 127.0.0.1
set type=A
www.bbb.com.
を実行した結果です。
Windowsのクエリログの方が非常にわかりやすい表示ですね
- 127.0.0.1からDNSサーバーAがクエリを受けた
- DNSサーバーAからDNSサーバーBにクエリをフォワードした。
- DNSサーバーBからDNSサーバーAにクエリをフォワードした。
- DNSサーバーAから127.0.0.1に失敗を送る。
- DNSサーバーAからDNSサーバーBに失敗を送る。
- DNSサーバーBからDNSサーバーAに失敗が届く
- DNSサーバーBからDNSサーバーAに失敗が届く
IPアドレスの横のIDを確認すると、すべてのクエリに対し失敗が伝えられたことがわかる。
一回のnslookupのクエリに対し、7回のDNSのやり取りが発生しましたが、DNSフォワードの無限ループは起きませんでした。
WindowsサーバーでDNSクエリログを取得する設定方法
DNSサーバーを右クリックし、「プロパティ」を開く。
「デバックのログ」タブを開き、
- 「デバックのためにパケットのログを記録する」にチェックを入れ
- 「ファイルへのパスと名前」にログファイルのパスを書き
「OK」ボタンを押します。