ダイナミックDNS(DDNS)は、IPアドレスが変更された際にホストアドレスレコードを自動的に更新するDNSメカニズムであり、手動でのレコード編集が不要となり、DHCPやプロバイダ割り当て環境において、ホスト名が変更されるアドレスに正しくマッピングされ続けるようにします。 このシステムは、RFC 2136 更新またはプロバイダーのサービスを通じて、アドレスの変更情報を権威DNSサーバーに送信することで機能します。TSIGキーなどの認証制御により、許可された送信者のみがレコードを変更できるようにしています。 DDNSを適切に設定するには、DNS、DHCP、およびIPアドレス管理を連携させるとともに、TTL値、リバースゾーン、セキュリティ制限を管理し、レコードの古化、ハイジャック、および名前衝突を防ぐ必要があります。
DDNSの仕組み
DDNSは、ホストのアドレスが変更されるたびに、権威DNSサーバーに変更情報を送信することで機能します。この変更情報は、ホスト自体、ホストに代わって動作するDHCPサーバー、またはプロバイダの更新クライアントから送信される場合があります。
- アドレス変更:ホストがDHCPから新しいIPアドレスを取得した場合、ルーターがインターネットプロバイダから新しいアドレスで再接続した場合、または静的割り当てが編集された場合を指します。
- 更新リクエスト:ホスト、DHCPサーバー、または小規模な更新クライアントが、新しいアドレスをDNSサーバーに送信します。標準に準拠した導入環境では、RFC 2136に規定されたダイナミック更新メッセージが使用されます。多くのホスティングサービスでは、代わりにHTTPベースの更新リクエストが使用されています。
- 認証:DNSサーバーは、送信者がそのレコードを変更する権限を持っているかどうかを確認します。標準に基づいた更新は、通常、RFC 8945で定義されているトランザクション署名(TSIG)や、その他の鍵によってセキュリティが確保されています。ホスティングサービスでは、通常、アカウントの認証情報やトークンが使用されます。
- レコードの変更:サーバーは古いAレコードまたはAAAAレコードを新しいアドレスに置き換え、セカンダリサーバーが変更を反映できるようにゾーンのシリアル番号をインクリメントします。
- 解決方法:名前を照会するクライアントは、古い応答のキャッシュされたコピーが期限切れになると、新しいアドレスを受け取ります。この期限切れは、レコードの有効期間(TTL)によって制御されます。
動的更新により、逆引き用のPTRレコードなど、関連するレコードが削除または変更される場合もあります。TTLを短く設定すると、クライアントが古いアドレスを使用する期間が短縮されますが、クエリの量が増加します。
DDNSの一般的な問題
DHCPクライアント用に作成されたレコードは、DHCPサーバーがそれらを削除しないか、削除する権限がない場合、リース期間が終了した後も残ります。その後、別のデバイスが同じアドレスを割り当てられると、2つの名前がそのデバイスに解決されてしまいます。
送信者に権限がない場合、鍵やTSIG署名が一致しない場合、またはゾーンで動的更新が許可されていない場合、DNSサーバーは「REFUSED」応答を返します。その結果、レコードは以前のアドレスを維持し、クライアント側には明らかなエラーは表示されません。
DHCPサーバーとクライアントの両方が同じレコードを更新しようとした場合、または2つのホストが同じ名前を主張した場合、一方が他方を上書きするか、更新が失敗します。クライアントとサーバー間の更新責任が不明確であることが、一般的な原因です。
フォワードのAレコードまたはAAAAレコードは更新されますが、PTRレコードは更新されません。これは、リバースゾーンが存在しないか、動的ではないか、または認証されていないためです。その結果、リバースルックアップが失敗するか、古い名前が返され、ログ記録や一部の認証チェックが機能しなくなります。
動的に更新されるレコードのTTLを長く設定すると、更新が成功した後もリゾルバーは古いアドレスを維持することになります。キャッシュされた応答の有効期限が切れるまで、ユーザーには断続的な障害が発生します。