DNS (Domain Name System) – DNS の動的更新

DNS サーバー

Active Directory ドメインサービス環境では Dynamic DNS を利用したレコードの自動登録を行っていると思います.
もし DHCP サーバーによる動的更新を行いたい場合ハマり所がありますのでその解説を行います.

DNS 動的更新とは

DNS の動的更新については「DNS (Domain Name System) – DNS ゾーンの作成」で文章で書いていますが,文章だけなのでもう少しわかりやすく説明します.

2つの動的更新の仕組み

Active Directory ドメインサービス環境では,ドメインに参加しているクライアントの DNS A と PTR レコードの DNS 動的更新を利用しているケースが多いと思います.
(DNS 動的更新は Active Directory 環境に限った話ではないですが,本記事は Windows DNS のお話ですので Active Directory ドメインサービスを前提に説明します)

まず,動的更新の方法として二つあります.

  • クライアントが DNS サーバーに対して直接レコード更新のリクエストを行う
  • DHCP サーバーが代行して DNS サーバーに対してレコード更新のリクエストを行う

どういった違いがあるのかを次で説明します.

クライアントが DNS サーバーに対して直接レコード更新のリクエストを行う

Windows (サーバーもクライアントも) はデフォルトでクライアントが DNS の自動更新を行う設定が有効になっています.

IP アドレスを設定した,DHCP からリースを受け取った,NIC の切断と接続を行った.などのタイミングで DNS サーバーに対してレコード更新のリクエストを送信します.

この動作は Active Directory ドメインに参加している,していないに関わらず,以下の画面の箇所の設定が動的更新要求の動作に関わってきます.

その後,更新要求を DNS サーバーが受け取った後に DNS サーバー側でどのように判断,処理するのかは設定によります.

クライアントが直接更新を行う (DNSサーバー側)

DNS (Domain Name System) – DNS ゾーンの作成」でも説明していますが改めて説明します.

DNSサーバーのゾーンプロパティをみると,動的更新は「セキュリティ保護のみ」がデフォルトの設定となっており,「認証」が成功したクライアントからのみ更新を受け付ける.という動作になります.

従って,デフォルトは Active Directory ドメインに参加クライアントからのみ DNS 更新要求を受け付け,更新が行われるという動作になります.
Active Directory ドメイン参加すると DNS レコードが自動で追加されようになる.という動作はこの設定と更新の動きによるものです.

お薦めはしませんが,設定を「非セキュリティ保護およびセキュリティ保護」に変更する事で,ドメイン参加していないクライアントからの更新要求も受け付ける事ができます.

DHCP サーバーが代行して DNS サーバーに対してレコード更新のリクエストを行う

先に… 説明はしますが,Windows DNS のセキュリティの兼ね合いから,基本的には Active Directory ドメイン参加クライアントのみ,直接更新の方式.を推奨します.

Windows DHCP サーバーは DNS サーバーに対してレコード更新要求を代行する機能を持っています.
Windows DHCP サーバー以外でも,例えば Linux などで利用される ISC DHCP も同様の機能を持っています.

上で説明している直接クライアントが更新する方法を取らずに代行の方法をとるケースは以下の場合です.

  • クライアントからの直接更新を止めたい
  • クライアントから直接更新する機能が無い
  • ドメインに所属していないクライアントも動的に管理したい

というケースが考えられますが,DHCP サーバーが代行して DNS レコードの更新を行う場合は直接更新と代行の併用は推奨しません.

DHCP サーバーが代行する (DHCP サーバー観点)

DHCP サーバーが代行する場合「動的更新を有効にする」が設定されている必要があります.
この設定は,スコープを作ると規定で有効です.

となると,Windows クライアントも DHCP もそれぞれ DNS 更新要求出すのか? となりますが,次の DHCP のオプションによって挙動が制御されています.

DHCPクライアントから要求があったときのみ DNS レコードを動的に更新する

この設定にしている場合,DHCP REQUEST 内で Option 81 のフラグが「0x1」の場合に DHCP が更新を行う動作となります.
Windows クライアントは Option 81 のフラグは「0x0」固定の為、DHCP が代行する事はありません.

DNS レコードを常に動的に更新する

この設定にしている場合,Option 81 のフラグに関係なく DHCP サーバーが DNS 更新要求を代行します.

DNS 動的更新のトラブル事例

DNS レコードの権限の問題 (クライアントと DHCP サーバーのバッティング)

「DNS レコードを常に動的に更新する」の場合かつ,クライアント側設定がデフォルトのままの場合,クライアントと DHCP サーバーの両方が DNS レコードの更新を行います.
(クライアントは Active Directory ドメインに参加しているクライアントです)

この際,Windows DNS のゾーン設定で「セキュリティ保護のみ」の場合は,生成されたレコードの権限問題が浮上します.

DNS レコードにも ACL (アクセスコントロールリスト) が存在しており,基本的には DNS レコードを作成したアカウントのみが以降更新可能となります.
(Domain Admins 等の管理権限を持つアカウントは作成,更新,削除のいずれも可能です)

そのため,以下のような場合は DHCP サーバーからの DNS 更新クエリーは権限不足の為更新ができません.
じゃぁ「保護無し」にしよう! はやめてください.

DNS レコードの権限の問題 (冗長化された DHCP サーバーのバッティング)

DHCP サーバーが冗長化されており,DNS 動的更新を DHCP サーバーで行う場合も権限問題が発生します.
デフォルトでは DHCP サーバーのコンピューターアカウントで認証してレコードを作成,更新が行われます.
この例の場合,AD01 がレコードを作成した為,以降このレコードを更新できるのは AD01 のみとなります.AD02 が更新の要求を行っても権限がありませんので更新ができません.

こうなると DHCP サーバーからの DNS 動的更新の運用上問題になる為,動的更新用のユーザーアカウント(DNSUpdateProxyアカウント)を用いて更新を行う方式を取ります.

この問題を解消するための設定を説明していきます.

DNS Update Proxy の設定

冗長化されている DHCP サーバーで DNS 更新を行う場合,DNS Update Proxy アカウントを用いた更新を行う必要があります.

流れとしては次のとおりになります.

  • DNS Update 用アカウントを作成する
  • 作成したアカウントを DNSUpdateProxy グループに所属させる
  • DHCP サーバーで動的更新用アカウントを設定する

DNS Update 用アカウントの作成

サーバーマネージャーの「ツール」選択し「Active Directory ユーザーとコンピューター」をクリックします.

作成したい OU や CN を選択し,右クリックでメニューを表示して「新規作成」-「ユーザー」をクリックします.
ユーザーアカウントを作成する OU はどこでも大丈夫です.

ユーザー作成画面が表示されますので,アカウント情報を入力して「次へ」をクリックします.

DHCP サーバーでアカウント情報を入力しますので,パスワードは無期限にした方が扱いは楽です.セキュリティを考慮するのであれば定期的に更新していく運用を行いましょう.

今回は「パスワードを無期限にする」にチェックを入れて「次へ」をクリックします.

「完了」をクリックしてアカウント作成を完了します.

アカウントが作成されたことを確認します.

DnsUpdateProxy グループに所属させる

先ほど作成したアカウントを「DnsUpdateProxy」に所属させます.

「DnsUpdateProxy」グループを選択,右クリックでメニューを表示し「プロパティ」をクリックします.

「メンバー」タブを選択して「追加」をクリックします.

先ほど作成したアカウントを入力して「OK」をクリックします.

所属するメンバーに作成したアカウントが表示されていることを確認し,「適用」をクリックの上「OK」をクリックしてウィンドウを閉じます.

DHCP サーバーで動的更新用アカウントを設定する

上で作成,グループに登録したアカウントを DHCP サーバーに設定します.
1台だけ説明をしていますが,冗長化している DHCP サーバーすべてで実施する必要がありますので注意してください.

サーバーマネージャーより「ツール」-「DHCP」をクリックします.

DHCP サーバーを展開し「IPv4」を選択,右クリックでメニューを表示して「プロパティ」をクリックします.

「詳細設定」タブを選択し「資格情報」をクリックします.

アカウント情報の入力画面が表示されますのでアカウント情報を入力して「OK」をクリックします.
ドメイン名は NetBIOS 名 (短縮名) で入力する必要がありますので注意してください.

元の画面に戻りますので「OK」をクリックします.

動作確認

DHCP でアドレスを取得し,更新された DNS レコードを確認しましょう.
この際,既にレコードが存在している場合は権限が DHCP サーバーのコンピューターアカウントになっていると思います.そうなると更新に失敗しますので一度レコードを削除してから動作確認をしてください.

以上,DNS 動的更新についての解説でした.

次回以降は,ちょっと今後の雲行きが微妙なのですが,VMware (現 Broadcom) の vSphere について解説していこうと思います.

コメント

タイトルとURLをコピーしました