Raspberry PiでActive Directoryのセカンダリードメインコントローラー構築を考える

Windows Server Essentialsでは、Active Directoryが必須となっています。これは、Windows Server Essentials エクスペリエンスがなくなったWindow Server 2019 Essentialsでも変わりません。

Active Directoryのドメインコントローラーを構築すると、SSOなどのメリットが大きい一方で、万が一ドメインコントローラーに障害が発生した場合にコンピューターへのログインができなくなるなど、サーバー障害時の影響も大きくなります。

そのため、ドメインコントローラーのバックアップは不可欠となってきますし、ドメインコントローラーを複数立てて複製を取っておくことがベストプラクティスとして推奨されています。

Windows Server Essentialsではセカンダリーのドメインコントローラーをどうするか??

Windows Server Essentialsで初めてのドメインコントローラーを構築したSmall Business 環境において、セカンダリーのドメインコントローラーは悩ましい問題が生じてきます。それは、

  • Windows Server Essentialsは、FSMOの役割を持つ唯一のドメインコントローラーである必要がある

ことから、同じWindows Server Essentialsを2台目のドメインコントローラーとして追加することができないためです。

つまり、Windows Server Essentialsがドメインコントローラーとなっている場合、セカンダリーのドメインコントローラーはStandardなど通常のWindows Serverを利用する必要がある(バックアップ用にEssentialsよりも高価なOSを購入する必要がある)という矛盾ともいえる状態となります。このような場合、どうするのがよいか考えてみます。

方法1. Azure上にもドメインコントローラーを建てる

いまならAzureを使って、Azure上の仮想マシンでドメインコントローラーを追加で建てる、あるいはAzure Backupを使って仮想マシンとしてバックアップを取っておくのが一番手っ取り早く、安価にすむ方法だと思います。

将来クラウドとの連携や災害対策(DR)やBCPを考えていくなら、なおさらクラウドを活用するのが得策でしょう。

Azure VPNやAzure Backupについては過去にも紹介をしましたが、Essentials エクスペリエンスでも利用しやすくなっていますが、一方で、AzureとVPN接続してオフィスとAzureの間で通信を可能にするなど、少し技術的なハードルを覚える方がいらっしゃるのもまた事実かと思います。

方法2. Sambaで代替する

Windows Server 2008 R2相当のドメインという制約はつきますが、今ではSambaでもActive Directoryを立てられるようになっています。セカンダリーのドメインコントローラとして建てた場合に、DFS-RでのSysvol複製はできないなど、完全に互換があるわけではありませんが、(手間暇は要するものの)安価を優先するならば選択してとして有効ではないかと思います。

Windows Serverのドメインコントローラーの機能レベルを下げるには、以下のコマンドレットを使用します。

フォレストの機能レベルを2008R2まで下げるコマンドレット:
Set-ADForestMode –Identity [ドメイン名] –ForestMode windows2008r2

ドメインの機能レベルを2008R2まで下げるコマンドレット:
Set-ADDomainMode –Identity [ドメイン名] –DomainMode windows2008r2domain

Raspberry PiをWindowsドメインにドメインコントローラーとして追加する

今回は、手元のRaspberry Piを既存のWindowsドメインに対してドメインコントローラーとして追加することにしました。Raspberry Piであれば省電力・安価ですので、コスト的な負担も小さく実現できます。

手順

  1. hostsファイルを編集して、ドメインコントローラのIPアドレスとFQDN、raspberry Piのループバックアドレスに対してlocalhost.(ドメイン名)を登録しておきます
  2. Raspberry PiにSamba等必要パッケージをインストール
  3. IPアドレスの構成
    IPアドレス、DNSサーバーのアドレス、デフォルトゲートウェイを設定します。
  4. DNSサーバーの参照設定
    Raspberry Piが参照するDNSサーバーとして、1台目のドメインコントローラーを指定します。
  5. kerberosの設定
    Kerberosクライアントをインストールし、設定します。

    krb5.confには以下の設定を記載します。
  6. smb.confを削除し、空のsmb.confファイルを作成します
  7. BIND9の構成

    で、named.conf.optionsファイルに追記を加えます。
  8. named.confファイルにも1行追加します。
  9. BINDの再起動
  10. BINDの設定が終了したら、いよいよドメインコントローラーとして追加します
  11. サービスを停止、開始します
  12. 念のためDNSの情報を再構築します
  13. 複製状況を表示します。

    Windows Server DCとSamba DCの間で同期が始まります。
    “OUTBOUND NEIGHBORS”の情報が表示されるようになるまで、しばらく時間がかかります。
    繰り返しこのコマンドを実行して、”OUTBOUND NEIGHBORS”の情報も正しく表示されるようになると、Windows ServerのActive Dierectory サイトとサービスでも、レプリケートの組み合わせが正しく表示されるようになります。

  14. ドメインに追加出来たら、ドメインコントローラーのセカンダリーDNSにRaspberryPiのアドレスを設定します。

現状のSambaでは、rendomを利用してドメイン名を変更したドメインには、ドメインコントローラーとして追加しようと失敗します。

その場合、属性エディターでms-DS-replicationepochの値を未設定に変更すると追加できるようです。

参考:Bug 9500 – Samba4 not checking ms-DS-replicationepoch before attempting replication

参考:Setting up Samba as an Active Directory Domain Controller

ドメイン参加をやり直す場合は…

  1. ドメインコントローラーから降格します
  2. 以下のファイルを削除します

  3. サービスを停止、再開します
スポンサーリンク
スポンサーリンク
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする