RODC を利用したドメイン参加

こんにちは。Windows サポート チームの三浦です。

今回は RODC とのみ通信可能な状態でドメイン参加をすることについての情報を共有します。

ドメインに参加したいコンピューターが RODC のみと通信可能な状態では、普通にドメイン参加を試みても失敗します。
この場合の対処は次の 2 つがあります。

(1) djoin.exe を使用するオフライン ドメイン参加
Windows 7 以降のみ。

(2) スクリプトによるドメイン参加
Windows Vista でも可能。ただし、コンピューターのパスワード キャッシュが必須です。

それぞれの詳細についてご案内します。

(1) djoin.exe を使用するオフライン ドメイン参加
-----------------------------------------------
djoin.exe を使用するオフライン ドメイン参加の手順については、次のステップ バイ ステップ ガイドが詳しいです。

ステップ バイ ステップ ガイド - オフライン ドメイン参加 (Djoin.exe)
https://technet.microsoft.com/ja-jp/library/offline-domain-join-djoin-step-by-step(v=WS.10).aspx

簡単に手順をまとめると次のとおりです。

1. 書き込み可能なドメイン コントローラーと通信可能なコンピューターで djoin.exe /provision コマンドを実行します。
2. RODC に 1 の結果作成されるコンピューター アカウントが複製されてきたことを確認します。
3. ドメインに参加させるクライアントに 1 を実行した結果生成されるファイルをコピーします。
4. djoin.exe /requestODJ コマンドをクライアントで実行します。
5. クライアントを再起動します。

(2) スクリプトによるドメイン参加
--------------------------------
オフライン ドメイン参加を利用しない場合の手順は安納さんのブログにあるサンプル スクリプトを使用するのがとても便利です。

【Management】JoinDomainOrWorkGroup メソッドでドメインに参加させる
https://blogs.technet.com/b/junichia/archive/2009/08/24/3276222.aspx

こちらも簡単に手順をまとめると次のとおりです。

1. 書き込みが可能なドメイン コントローラーにコンピューター アカウントを作成します。
2. パスワード レプリケーション ポリシーで作成したコンピューター アカウントのパスワードが RODC にキャッシュできるように設定します。
3. RODC に 1 で作成したコンピューター アカウントが複製されるのを待ちます。
4. スクリプトを利用して RODC を利用したドメイン参加を対象のクライアントで実行します。
5. クライアントを再起動します。

以上が RODC のみとしか通信ができない場合でもドメインに参加させるための方法です。
ただ、注意すべき事があります。

注意 1. エラーイベント
djoin.exe によるオフライン ドメイン参加では、コンピューターのパスワードを RODC にキャッシュさせることは必須ではありません。
しかし、キャッシュさせていない状態では、毎回起動時にシステムログに Netlogon 5721 のエラーイベントが記録されてしまいます。
コンピューターのグループ ポリシー適用処理等でも、エラーが記録されていても影響はありません。
しかし、実際に問題が発生しているかの判断が難しくなるため、セキュリティとの兼ね合いではありますが、キャッシュするように構成しておくことがお勧めです。

注意 2. 名前解決
RODC とドメインに参加するコンピューターが別セグメントの場合、 DNS へのレコード追加が必要です。
RODC は既定で、自身が所属するサイトに紐づくレコードしか登録しません。

ドメイン参加を試みるコンピューターはドメイン内のドメイン コントローラーの SRV レコードの解決をおこないます。
しかし、このときサイト情報は持っていないため、サイト情報を含めず DNS クエリーを送信します。
この結果で得られるのは RODC 以外のドメイン コントローラーのみとなり、 RODC のみと通信可能なコンピューターはドメイン コントローラーを見つけられません。

同じセグメントであれば (あるいは WINS を構成していれば)、NetBIOS 名解決により RODC を "発見" できますが、別セグメントの場合には、それができないため、サイトに紐付かないレコードを追加しなければなりません。

具体的なレコードの手順は次のとおりです。

1. DNS の管理コンソールを起動し、前方参照ゾーンから _msdcs.<ドメイン名> を選択し、 [dc] - [_tcp] を開きます。

2. この [dc] - [_tcp] 配下にレコードを追加します。
 2-1. 右クリックして表示されるメニューから "その他の新しいレコード" を選択します。
 2-2. Service Location (SRV) を選択し、 [レコードの作成] をクリックします。
 2-3. 各項目は次のようにし、 OK をクリックしてレコードを追加します。
 
  サービス: _ldap
  プロトコル: _tcp
  優先順位: 1
  重さ: 100
  ポート番号: 389
  このサービスを提供しているホスト: <RODC の FQDN 名>

上記の例では RODC が優先されないように、あえて優先順位を 1 に設定していますが、ここは 0 でも構いません。

なお、 RODC に動的更新でサイトに紐付かないレコードも自動的に登録するように動作を変更することもできます。
(RegisterSiteSpecificDnsRecordsOnly というレジストリ値に 0 を設定します)
このことについては、次のサポート技術情報に情報があります。

Authentication fails when an external client tries to log on to a Windows Server 2008 server by using a read-only domain controller in a perimeter network
https://support.microsoft.com/kb/977510/en-us