条件付きDNS転送とは、特定のドメイン名に対するクエリをデフォルトのリゾルバーではなく、指定されたDNSサーバーにルーティングするDNS設定のことです。これにより、合併、ハイブリッドクラウドの導入、パートナーとの接続などにより複数のネームスペースを持つ組織は、システム間でゾーンデータをコピーすることなく、各ドメインの権威データを保持するサーバーを通じてそのドメインを解決できるようになります。 運用上の課題は、多くのサーバーにわたって転送ルールを一貫して管理し、廃止されたサーバーを指す古いエントリを防ぐことにあります。こうしたエントリはタイムアウトや断続的なアプリケーション障害を引き起こし、ユーザーにはサービス停止として認識されてしまいます。 適切に実装するには、慎重なルール管理、ネットワーク接続性の検証、ネットワーク境界を越える平文のDNSトラフィックに関するセキュリティ上の配慮、および設定のずれや運用リスクを低減するための転送先の監視が必要となります。
条件付きDNS転送の仕組み
条件付き転送が設定されたDNSサーバーは、受信した各クエリ名をドメインルールのリストと照合します。その結果に基づいて、サーバーがクエリを転送するか、通常通り解決するかが決定されます。
- クエリの受信:クライアントは、設定済みのDNSサーバーに対して再帰クエリを送信します。例えば、パートナードメインや内部ドメイン内のホスト名に対するリクエストなどです。
- ドメインの照合:サーバーは、クエリされた名前を、設定された転送ドメインと比較し、最も具体的な一致するサフィックスを選択します。
- クエリの転送:ルールに一致した場合、サーバーはデフォルトのパスを使用する代わりに、そのドメインに指定されたDNSサーバーにクエリを送信します。
- デフォルトのパスを使用する:どのルールにも一致しない場合、サーバーはルートヒントまたは汎用フォワーダーを使用して、通常通り名前を解決します。
- 応答の返送:サーバーは応答をクライアントに中継し、レコードの有効期間(TTL)に応じてキャッシュする場合があります。
この手順では、障害時の動作については説明していません。指定されたサーバーが応答しない場合にデフォルトの解決にフォールバックするかどうかはサーバーによって異なり、その設定は信頼性とクエリがどこに公開されるかの両方に影響します。また、転送先はネットワーク経由で到達可能である必要があり、ルーティングおよびファイアウォールのルールでDNSトラフィックが許可されている必要があります。
条件付きDNS転送でよくある問題
あるルールが、廃止された、あるいは番号が変更されたサーバーを依然として指し続けている。そのドメインへのクエリはタイムアウトし、ユーザーからはアプリケーションの動作が遅い、あるいは動作しないという報告が寄せられる一方で、他のドメイン名は正常に解決される。
ルールは一部のDNSサーバーには追加されていますが、他のサーバーには追加されていません。クライアントが使用するリゾルバーによって、同じ名前でもあるサイトでは解決されるのに、別のサイトでは解決に失敗することがあります。
2台のサーバーが互いにドメインを転送し合うか、あるいはターゲットが送信元へ転送し返します。クエリはタイムアウトするまで行き来し続け、SERVFAIL応答が増えるにつれてリゾルバーの負荷が高まります。
広範なサフィックス・ルールとより限定的なサフィックス・ルールが異なるサーバーを指しており、管理者は誤った方が優先されると予想しています。その結果、サブドメインはゾーンを持たないサーバーに対して解決され、NXDOMAINが返されます。