[Day8] やってはいけない DNS サーバーの参照設定


# Microsoft Azure Tech Advent Calendar 2019 の 8 日目です。

Azure に限った話ではないですが、DNS サーバーの参照設定を誤っている人が多いので、注意喚起の意味を込めて。

この設定を見て、何がおかしいか分かりますか?

上図では、 外部用の DNS サーバー (Google Public DNS) と、内部用の DNS サーバー (AD DC 兼 DNS サーバー) を参照する設定になっています。設定者の意図としては、パブリックな名前解決は前者で、 イントラの名前解決は後者で行われることを期待して、こうした誤った設定が行われていることが多いですが、実際にはそのようには機能しません。

実際にイントラ向けの名前解決をしてみると、以下のように優先 DNS サーバーに設定された Google の Public DNS サーバーに問い合わせたものの、Non-existent domain (NXDOMAIN) がかえってきて名前解決に失敗するかと思います。

これは何故かというと、Primary DNS サーバーに設定された Google Public DNS は、社外に公開されていないイントラのゾーン (intra.contoso.local 等) を知りえないからです。Windows OS の DNS クライアント (スタブリゾルバ) としては、エラーを受け取った時点で名前解決は失敗したものとして扱いますので、Secondary DNS サーバーに対して名前解決は試行されません。

では、どのように設定するのが正しいかというと、クライアント端末にはイントラの名前解決ができる内部向けの DNS サーバーを参照させましょう。

そして、参照先の DNS サーバー (AD 兼 DNS サーバー等) においてフォワーダーやルートヒントで外部の名前解決を行えるようにすれば、自身が管理していない外部の名前解決はフォワーダーやルートヒントを利用して行ってくれるようになります。

念のため、[再帰を無効にする] がチェックされていないことも確認しましょう。

これで、外部・内部ともに正常に名前解決が行えるようになったかと思います。

P.S. Azure VM の場合は、OS 内の NIC の設定で参照先の DNS サーバーを指定するのではなく、Azure VNet や Azure としての NIC の設定 (つまり、Azure Portal ) で DNS サーバーを指定しましょう。(OS 内の NIC の設定は触らないのが原則です。)


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください