こんにちは!技術1課のイーゴリです。
前回の記事では、GUIでDCを構築する方法をご紹介しました。今回はPowerShellでDCを構築する方法をご紹介し、GUIの方法と比較したいと思います。さらにAWSユーザーデータの方法もご紹介したいと思います。
下記の記事でDCの基本知識・基本手順を説明したため、本件の記事では、CUIの方法のみをご紹介させて頂きます。
PowerShellの方法
PowerShellでのサーバーの役割のインストール手順
Windows ServerのPowerShellでGet-WindowsFeatureを叩くと、下記のようなリストが表示されるので、[Name]を使ってください。
PS C:\Users\Administrator> Get-WindowsFeature Display Name Name Install State ------------ ---- ------------- [ ] Active Directory Domain Services AD-Domain-Services Available [ ] Active Directory Federation Services ADFS-Federation Available [ ] Active Directory Lightweight Directory Services ADLDS Available [ ] Active Directory Rights Management Services ADRMS Available [ ] Active Directory Rights Management Server ADRMS-Server Available [ ] Identity Federation Support ADRMS-Identity Available [ ] Device Health Attestation DeviceHealthAttestat... Available [ ] DHCP Server DHCP Available [ ] DNS Server DNS Available
PowerShellで下記コマンドを叩けば、Windowsサーバーの役割をインストールできます。
Install-WindowsFeature -Name [Name]
[Name]の代わりに、Get-WindowsFeatureの結果リストにある「Name」を上記のコマンドに入れます。
例えば、初めてのDCを構築する時によくあるパターンはActive Directory ドメインサービス、DNS、DHCPをセットでインストールするパターンが多いですね。その通りに構築しましょう!
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools Install-WindowsFeature -Name DNS -IncludeManagementTools Install-WindowsFeature -Name DHCP -IncludeManagementTools
上記のDNSやDHCPやAD Domain ServicesをGUIで操作できるようにするために「-IncludeManagementTools」を追加しました。下記の画面を見て頂ければ、-IncludeManagementToolsの意味がすぐわかると思います。
PowerShellでGet-WindowsFeatureを叩くと下記の結果が表示されます。
PS C:\Users\Administrator> Get-WindowsFeature Display Name Name Install State ------------ ---- ------------- [ ] Active Directory Certificate Services AD-Certificate Available [ ] Certification Authority ADCS-Cert-Authority Available [ ] Certificate Enrollment Policy Web Service ADCS-Enroll-Web-Pol Available [ ] Certificate Enrollment Web Service ADCS-Enroll-Web-Svc Available [ ] Certification Authority Web Enrollment ADCS-Web-Enrollment Available [ ] Network Device Enrollment Service ADCS-Device-Enrollment Available [ ] Online Responder ADCS-Online-Cert Available [X] Active Directory Domain Services AD-Domain-Services Installed [ ] Active Directory Federation Services ADFS-Federation Available [ ] Active Directory Lightweight Directory Services ADLDS Available [ ] Active Directory Rights Management Services ADRMS Available [ ] Active Directory Rights Management Server ADRMS-Server Available [ ] Identity Federation Support ADRMS-Identity Available [ ] Device Health Attestation DeviceHealthAttestat... Available [X] DHCP Server DHCP Installed [X] DNS Server DNS Installed
Active Directory Domain Services、DHCP Server、DNS Serverのそばに[X]及びInstall Stateで「Installed」のステータスが表示されますので、Windowsサーバーの役割のインストールが確認できました。
※AWSで展開する場合、「このコンピューターで静的 IP アドレスが見つかりませんでした」という警告が発生します。
GUIの方法の下記の記事に記載しました通り、AWS上でDHCPが固定IPを割り当てるため、「このコンピューターで静的 IP アドレスが見つかりませんでした」という警告が発生しています。詳しくは下記の記事をご参考ください。
ADDS(Active Directory Domain Services)の役割がインストールされると、ADDSDeploymentモジュールのコマンドレットを使用して、新しいドメイン、フォレスト、またはドメインコントローラーを展開できます。
確認コマンド:
Get-Command -Module ADDSDeployment
結果出力
PS C:\Users\Administrator> Get-Command -Module ADDSDeployment CommandType Name Version Source ----------- ---- ------- ------ Cmdlet Add-ADDSReadOnlyDomainControllerAccount 1.0.0.0 ADDSDeployment Cmdlet Install-ADDSDomain 1.0.0.0 ADDSDeployment Cmdlet Install-ADDSDomainController 1.0.0.0 ADDSDeployment Cmdlet Install-ADDSForest 1.0.0.0 ADDSDeployment Cmdlet Test-ADDSDomainControllerInstallation 1.0.0.0 ADDSDeployment Cmdlet Test-ADDSDomainControllerUninstallation 1.0.0.0 ADDSDeployment Cmdlet Test-ADDSDomainInstallation 1.0.0.0 ADDSDeployment Cmdlet Test-ADDSForestInstallation 1.0.0.0 ADDSDeployment Cmdlet Test-ADDSReadOnlyDomainControllerAccountCreation 1.0.0.0 ADDSDeployment Cmdlet Uninstall-ADDSDomainController 1.0.0.0 ADDSDeployment
AWSの場合、PowerShellの方法よりインストールが早い方法が存在しています。EC2インスタンスの設定時点でAWSユーザーデータを入れると、「PowerShellでサーバーの役割のインストール手順」を省けますので、「AWSユーザーデータの方法」をご参照ください。
PowerShellでDC構築
DC構築時にパスワードを入力する必要があるため、対象DCで設定を行っている場合特に問題なくパスワードを入力できますが(「対象DCで設定を行っている場合」を参照)、リモートでPowerShellで作業を行っている場合、パスワードの入力がNGのため、「リモートでPowerShellを実施する場合」をご参考ください。
対象DCで設定を行っている場合
対象DCで設定を行っている場合、単純に下記のコマンドで実施します。
Install-ADDSForest -DomainName test.local
※「test.local」の代わりに適切なドメイン名をご入力ください。
SafeModeAdministratorPasswordのメッセージが表示されたら、パスワードを入力し、「Enter」を押します。「SafeModeAdministratorPasswordの確認」で、もう一度パスワードを入力し、「Enter」を押します。
次は「Enter」を押します。
自動的にサーバーが再起動された後、設定作業は完了です!
下記のGUI記事と全く同じ設定を行いましたが、かかった時間が全然違いますよね。
基本的に上記コマンドのような設定で充分(GUI方法と同じくすべての項目をデフォルトにする)ですが、細かく設定したい場合、下記のようなコマンドが使用可能です(必要なコマンドによって適切な設定値をご自身でお試しください)。
コマンドの例
Install-ADDSForest -DomainName test.local -ForestMode "WinThreshold" -DomainMode "WinThreshold" -DomainNetbiosName TEST -InstallDns:$true -DatabasePath "D:\ADDS\DB" -LogPath "D:\ADDS\Log" -SysvolPath "D:\ADDS\SYSVOL"
※DNSの役割をインストールしたため、上記のコマンドにある[-InstallDns:$true]を省きますが、最初からDNSをインストールしなかった場合、[-InstallDns:$true]を入力します。
上記のコマンドはあくまで例のため、細かい設定を行いたい場合、ご自身でコマンドと設定値を調べる必要がありますが、デフォルトの設定のまま(下記のコマンド)残したほうがいいと思います。
Install-ADDSForest -DomainName test.local
※「test.local」の代わりに適切なドメイン名をご入力ください。
GUI/RSAT (Remote Server Administration Tools)よりPowerShell処理のほうが早く終わります。
リモートでPowerShellを実施する場合
リモートでPowerShellを実施する場合、まずはSafeModeAdministratorPasswordのパスワードを設定する必要があります。 Powershellには、パスワード用に別の変数タイプ(SecureString)があります。パスワードをRAMに安全に保存し、ネットワーク経由で安全に転送するために使用されます。
$pass = Read-Host -AsSecureString
パスワードを入力した後、「Enter」を押します。
その後、下記のコマンドを実施します。
Install-ADDSForest -DomainName test.local -SafeModeAdministratorPassword $pass
※「test.local」の代わりに適切なドメイン名をご入力ください。
次は「Enter」を押します。
自動的にサーバーが再起動された後、設定作業は完了です!
AWSユーザーデータの方法
サーバー役割のインストール手順 (AWSコンソール)
AWSコンソールでEC2を構築する時にユーザーデーターの中に下記のようなテキストを入れます。
<powershell> Install-WindowsFeature -Name [Name] </powershell>
[Name]の代わりに、Get-WindowsFeatureのリストにある役割「Name」を入れてください。
PowerShellの方法と同様、よくあるパターン(Active Directory ドメインサービス、DNS、DHCP)をセットでインストールします。
その場合、EC2のユーザーデータに下記の文章を入れて、EC2を構築します。
<powershell> Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools Install-WindowsFeature -Name DNS -IncludeManagementTools Install-WindowsFeature -Name DHCP -IncludeManagementTools </powershell>
EC2の構築が完了したら、RDPで接続し、Get-WindowsFeatureのコマンドで適切な役割がインストールされたか確認した上、「PowerShellでDC構築」手順で続けます。
反映時間について
AWSユーザーデータでの反映時間が少しかかるため、すぐにRDPで接続すると、役割が反映されてないように見えますが、インストール中の状態です。サーバーの役割がインストールされたら、[Windows]ボタン→[サーバーマネージャー]にあるステータスを監視すると、インストール完了のタイミングが分かります(びっくりマークが表示されます)。
まとめ
- 比較的にGUIよりPowerShellのほうが構築時間を非常に縮小できます。
- AWSで実施する場合、サーバーの役割をAWSユーザーデータで展開できますので、「AWSユーザーデータの方法」をご参考ください。
- AWS外/AWSユーザーデータ使用したくない場合、「PowerShellの方法」をご参考ください。
- 初心者の場合、下記のGUI記事の通り設定してみてください。慣れたら、本件の手順を使うとGUIより早いDC構築ができるようになります。
考慮事項
ドメイン名についての注意点
「test.local」のドメインを本件の記事のためだけに記載しましたが、本番環境での「.local」のようなドメインの使用はNGです。正しいドメイン名の選び方について下記の記事をご参考ください。
AWSでDCを展開する場合
AWSでDCを展開する場合、「このコンピューターで静的 IP アドレスが見つかりませんでした」という警告が発生しますが、AWSのEC2の場合、デフォルトでAWS上のDHCPが自動的にENI (NIC)に固定のプライベートIPアドレスを割り当てるため、問題ありません。
例えば、EC2を構築する時に、ENI(NIC)に静的にプライベートIPアドレスを指定しても、OSから見たネットワークインターフェースとしてはDHCPに見えるために「このコンピューターで静的 IP アドレスが見つかりませんでした」の警告が発生しますが、ENIに割り当てたプライベートIPアドレスが変わることはありませんので、問題ありません。
DCの構成について
今回の記事では、簡単な1台目のDC構築の方法の紹介でしたが、本番環境では、高可用性を実現するために、各ドメインには少なくとも 2台のDCを用意することをお勧めします。
なぜなら、各ドメインコントローラー間で行われた変更を伝達するためにレプリケーションという同期動作が行われるからです。 何らかの理由でコントローラーの1台に障害が発生した場合、他のコントローラーを代わりに使用でき、エンドユーザーにも影響はありません。そのために、本番環境では各ドメインに少なくとも 2台のDCを用意することをお勧めします。
2台目のDC構築については本件の記事では触れていませんが、今後のWindows Serverの記事でご説明したいと思います。
構築前のコンピューター名及びIP設定について
本件の記事では、コンピューター名及びIPアドレスの設定の部分は省きましたが、AWSの場合、DHCPで固定のIPが割り当てられるため、IP設定をOS上から変更しないでください(対象ENIに接続できなくなります)。
※もしIP設定をOS上から変更してしまった場合、対策方法としては一時的に新規ENIを作成し対象のDCにアタッチします。その後、OS上で、IP設定をもとに戻したら、また既存のENIに接続ができるようになるため、一時的に作成したENIを削除しても大丈夫です。
コンピューター名も適切な名前に変更する必要がありますので、下記のコマンドを使用します。
PowerShellコマンド:
Rename-Computer -NewName DC01
※「DC01」の代わりに適切なコンピューター名を入力してください。
出力結果:
PS C:\Users\Administrator> Rename-Computer -NewName DC01 警告: 変更は、コンピューター EC2AMAZ-13VPRI3 の再起動後に有効になります。
サーバーを再起動するには下記コマンドを実行します。
PowerShellコマンド:
Restart-Computer
DHCPの役割について
今回のシナリオでは、ADDS, DHCP, DNSの「標準セット」でDHCPもインストールしました。但し、AWS内のみでADを使っている場合、AWSのDHCP機能があるため、AD上にあるDHCPの説明を省きます。
もしオンプレミスの端末のためにDCにあるDHCPが必要というシナリオの場合、構成によってDHCPの役割をインストールする必要がある可能性がありますので、自分でご判断ください。
ヒントとしては基本的にはオンプレミス環境でAD上のDHCPが使われているパターンが非常に多いです。AWSの場合、AWS上にあるDHCPがあるため、インストールは不要です。
但し、ハイブリッドクラウドの場合、オンプレミスの端末のためにAD上にあるDHCPの役割をインストールする必要性があります。
以上、御一読ありがとうございました。
本田 イーゴリ (記事一覧)
カスタマーサクセス部
・2024 Japan AWS Top Engineers (Security)
・AWS SAP, DOP, SCS, DBS, SAA, DVA, CLF
・Azure AZ-900
・EC-Council CCSE
趣味:日本国内旅行(47都道府県制覇)・ドライブ・音楽