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であれば省電力・安価ですので、コスト的な負担も小さく実現できます。
手順
- hostsファイルを編集して、ドメインコントローラのIPアドレスとFQDN、raspberry Piのループバックアドレスに対してlocalhost.(ドメイン名)を登録しておきます
sudo nano /etc/hosts 127.0.0.1 localhost localhost.(ドメイン名) ::1 localhost ip6-localhost ip6-loopback localhost.(ドメイン名) IPアドレス [RaspberryPiのNetBIOS名] [RaspberryPiのFQDN名] ドメインコントローラーのIPv4アドレス ドメインコントローラーのFQDN ドメインコントローラーのIPv6アドレス ドメインコントローラーのFQDN
- Raspberry PiにSamba等必要パッケージをインストール
sudo apt-get install samba bind9 winbind smbclient -y
- IPアドレスの構成
IPアドレス、DNSサーバーのアドレス、デフォルトゲートウェイを設定します。sudo nano /etc/dhcpcd.conf interface eth0 static ip_address=xxx.xxx.xxx.xxx static routers=xxx.xxx.xxx.yyy static domain_name_servers=xxx.xxx.xxx.zzz
- DNSサーバーの参照設定
Raspberry Piが参照するDNSサーバーとして、1台目のドメインコントローラーを指定します。sudo nano /etc/resolv.conf # Generated by resolvconf nameserver ドメインコントローラーのIPv4アドレス nameserver ドメインコントローラーのIPv6アドレス nameserver 127.0.0.1 nameserver ::1
- kerberosの設定
Kerberosクライアントをインストールし、設定します。sudo apt-get install krb5-user -y sudo nano /etc/krb5.conf
krb5.confには以下の設定を記載します。
[libdefaults] dns_lookup_realm = false dns_lookup_kdc = true default_realm = SAMDOM.EXAMPLE.COM[大文字でドメイン名をFQDNで記載]
- smb.confを削除し、空のsmb.confファイルを作成します
sudo rm /etc/samba/smb.conf sudo touch /etc/samba/smb.conf sudo systemctl restart smbd nmbd winbind
- BIND9の構成
sudo nano /etc/bind/named.conf.options
で、named.conf.optionsファイルに追記を加えます。
acl localnet { 192.168.11.0/24; 'ローカルのネットワークのサブネット 127.0.0.1; 'ループバックアドレス }; options { forwarders { 'フォワーダーは適切なDNSサーバーに 8.8.8.8; 8.8.4.4; }; auth-nxdomain yes; # conform to RFC1035 allow-query {localnet;}; tkey-gssapi-keytab "/var/lib/samba/private/dns.keytab"; '追加 };
- named.confファイルにも1行追加します。
sudo nano /etc/bind/named.conf include "/var/lib/samba/private/named.conf"; 'この1行を追加
- BINDの再起動
sudo service bind9 restart
- BINDの設定が終了したら、いよいよドメインコントローラーとして追加します
samba-tool domain join [ドメイン名のFQDN] DC -U"[ドメイン名]\[管理者権限を持つユーザー]" --dns-backend=BIND9_DLZ
- サービスを停止、開始します
sudo systemctl stop smbd nmbd winbind sudo systemctl disable smbd nmbd winbind sudo systemctl unmask samba-ad-dc sudo systemctl start samba-ad-dc sudo systemctl enable samba-ad-dc
- 念のためDNSの情報を再構築します
sudo samba_upgradedns --dns-backend=BIND9_DLZ
- 複製状況を表示します。
sudo samba-tool drs showrepl
Windows Server DCとSamba DCの間で同期が始まります。
“OUTBOUND NEIGHBORS”の情報が表示されるようになるまで、しばらく時間がかかります。
繰り返しこのコマンドを実行して、”OUTBOUND NEIGHBORS”の情報も正しく表示されるようになると、Windows ServerのActive Dierectory サイトとサービスでも、レプリケートの組み合わせが正しく表示されるようになります。 - ドメインに追加出来たら、ドメインコントローラーのセカンダリー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
ドメイン参加をやり直す場合は…
- ドメインコントローラーから降格します
sudo samba-tool domain demote -U[ユーザー名]@[ドメイン名のFQDN]
- 以下のファイルを削除します
sudo rm /var/lib/samba/private/secrets.ldb sudo rm /var/lib/samba/private/secrets.tdb sudo rm /etc/samba/smb.conf sudo touch /etc/samba/smb.conf
- サービスを停止、再開します
sudo systemctl stop samba-ad-dc sudo systemctl start smbd nmbd winbind