Windows Server 2012 R2 Essentialsのドメイン環境に参加している一つのクライアントPCに対しリモート デスクトップ接続ができない現象に遭遇しました。
調べてみると、よくある「DNS サーバに登録されているIPアドレスとクライアントPCのIPアドレスが異なっている」ためでした。
今回は、 DNS サーバに登録されているレコードが更新されない場合の対処法をメモ。
Windows Server 2012 R2 EssentialsのDNSサーバ
家庭やSOHOの場合、一般的にDNSサーバとDHCPサーバは個人向けルータが役割を担っていると思います。この環境にWindows Server 2012 R2 Essentialsを導入し、クライアントPCにコネクタをインストールすると
- DNS サーバ → Windows Server 2012 R2 Essentialsが役割を担う(変更点)
- DHCP サーバ → ルータ等が役割を担う
クライアントPCのネットワーク設定を見ると、優先 DNS サーバのアドレスはWindows Server 2012 R2 EssentialsのIPアドレスが設定されるため、Webサイトのドメイン名の名前解決だけでなく、社内のホスト名(FQDN:xxxx.ドメイン名.local)の名前解決もWSE 2012 R2が行います。
DNS レコードのリフレッシュ タイミング
DNS サーバはクライアントのIPアドレスの変化をいつ知り、いつ変更するのか?それは、「動的更新」という機能を使っており、クライアントPCからDNS サーバに対しリソース レコードを登録し、変更が発生するたびにそのリソース レコードを動的に更新するそうです。
動的更新の動きは下記リンクから確認できます。
動的更新とはレコードのリフレッシュ タイミングですが、上記リンクと「エージングと清掃とは」を見る限り
- クライアントPCの電源がオンになった時
- IP アドレスが追加、削除、または変更された時
- DNS のクライアント名登録を手動で強制的に更新した時
- Windows DNS クライアント サービス(dnscache)が定期的にリフレッシュを送信された時
- DHCP サーバなど、他のネットワーク サービスもリフレッシュを試みた時
試しにDNS マネージャ上からクライアント PCのレコードに登録されているIPアドレスを強制変更し、クライアントPCを再起動した結果、OS起動後(サインインはしていない)状態で既に該当レコードのIPアドレスは更新されていました。
今回の現象
色々と調べていて分かった事は、「DNS に対してエージングと清掃を有効にする」に明記されている古いリソース レコードは、動的更新を実行した結果、発生することがあります。このプロセスでは、コンピュータがネットワーク上で起動すると、リソース レコードが自動的にゾーンに追加されるためです。この際、コンピュータがネットワークから離脱するときに、リソース レコードが自動的に削除されないことがあります。たとえば、コンピュータが起動時に自身のホスト (A) リソース レコードを登録し、その後、不適切にネットワークから切断された場合は、そのホスト (A) リソース レコードが削除されないことがあります。ネットワークにモバイル ユーザーまたはモバイル コンピュータが存在する場合、この状況はしばしば発生します。に当たると思っています。
理由は、Windows 8.1 Updateを適用したクライアントPCをドメインから離脱→再参加を行いました。
上記説明でいう不適切にネットワークから切り離ししたためではないか?と考えています。
下記画像は、4月5日にDNS マネージャで確認した時のスクリーンショットです。レコード タイムスタンプが過去のままで3月24日から一切更新されていません。
対処法
「DNS に対してエージングと清掃を有効にする」に明記されている「古いリソース レコードの清掃を行う」を実行しましたが、改善しなかったため今回は手動で変更処理をしてみました。それ以外として可能な方法も明記しておきます。
サーバサイドでレコードを手動修正
- クライアントPCのIPアドレスを事前に確認
- Windows Server 2012 R2 Essentialsにリモート デスクトップ接続をする
- [Win]+[R]→[dnsmgmt.msc]を実行
- [サーバ名]→[前方参照ゾーン]→[xxxxx.local]をクリック、対象となるホスト名のレコードをダブルクリック
- 登録されているIP アドレスを変更し、[OK]ボタンをクリック
今回の場合は、第4オクテット(14)を変更します
適用すると、レコード タイムスタンプが更新されます。
- クライアントPCにおいて、nslookup コマンドを実行、正しく正引き出来るかを確認
場合によっては、ipconfig /flushdnsを実行しDNS リゾルバー キャッシュを破棄する。
クライアントサイドからDNS情報の動的更新を実行する
サーバサイドで処理をしてしまったので試すことが出来ませんでしたが、クライアントサイドからDNS情報の動的更新を実行するコマンドがありますので、コマンドの実行方法を併せてメモしておきます。
- [TCP/IP 詳細設定]→[DNS]を開き、動的更新が可能であることを確認
- [この接続アドレスを DNS に登録する]のチェックをオン
- [この接続の DNS サフィックスを DNS 登録に使う]のチェックをオフ
- 管理者権限でコマンド プロンプトを起動
- ipconfig /registerdnsを実行
- nslookup コマンドを実行し、正しく正引き出来るかを確認