【Windows Server】ドメインコントローラを構築する(PowerShell / AWSユーザーデータ)

記事タイトルとURLをコピーする

こんにちは!技術1課のイーゴリです。

前回の記事では、GUIでDCを構築する方法をご紹介しました。今回はPowerShellでDCを構築する方法をご紹介し、GUIの方法と比較したいと思います。さらにAWSユーザーデータの方法もご紹介したいと思います。

下記の記事でDCの基本知識・基本手順を説明したため、本件の記事では、CUIの方法のみをご紹介させて頂きます。

blog.serverworks.co.jp

f:id:swx-korotkov:20220209155700j:plain

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

f:id:swx-korotkov:20220208112521j:plain

PowerShellで下記コマンドを叩けば、Windowsサーバーの役割をインストールできます。

Install-WindowsFeature -Name [Name]

[Name]の代わりに、Get-WindowsFeatureの結果リストにある「Name」を上記のコマンドに入れます。

f:id:swx-korotkov:20220208112620j:plain

例えば、初めての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の意味がすぐわかると思います。

f:id:swx-korotkov:20220125190230p:plain
「-IncludeManagementTools」を入れる場合

f:id:swx-korotkov:20220125190512p:plain
「-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サーバーの役割のインストールが確認できました。

f:id:swx-korotkov:20220208113120j:plain

※AWSで展開する場合、「このコンピューターで静的 IP アドレスが見つかりませんでした」という警告が発生します。

f:id:swx-korotkov:20220208122507p:plain

GUIの方法の下記の記事に記載しました通り、AWS上でDHCPが固定IPを割り当てるため、「このコンピューターで静的 IP アドレスが見つかりませんでした」という警告が発生しています。詳しくは下記の記事をご参考ください。

blog.serverworks.co.jp

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

f:id:swx-korotkov:20220208114534p:plain

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」を押します。

f:id:swx-korotkov:20220209154105p:plain

f:id:swx-korotkov:20220209154119p:plain
インストール中の画面

自動的にサーバーが再起動された後、設定作業は完了です!

下記のGUI記事と全く同じ設定を行いましたが、かかった時間が全然違いますよね。

blog.serverworks.co.jp

基本的に上記コマンドのような設定で充分(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]を入力します。

f:id:swx-korotkov:20220208143935p:plain

上記のコマンドはあくまで例のため、細かい設定を行いたい場合、ご自身でコマンドと設定値を調べる必要がありますが、デフォルトの設定のまま(下記のコマンド)残したほうがいいと思います。

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」を押します。

f:id:swx-korotkov:20220208144242j:plain

その後、下記のコマンドを実施します。

Install-ADDSForest -DomainName test.local -SafeModeAdministratorPassword $pass

※「test.local」の代わりに適切なドメイン名をご入力ください。

次は「Enter」を押します。

f:id:swx-korotkov:20220208144434j:plain

f:id:swx-korotkov:20220208144612j:plain
インストール中の画面

自動的にサーバーが再起動された後、設定作業は完了です!

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>

f:id:swx-korotkov:20220208145317j:plain

EC2の構築が完了したら、RDPで接続し、Get-WindowsFeatureのコマンドで適切な役割がインストールされたか確認した上、「PowerShellでDC構築」手順で続けます。

f:id:swx-korotkov:20220208145553j:plain

反映時間について

AWSユーザーデータでの反映時間が少しかかるため、すぐにRDPで接続すると、役割が反映されてないように見えますが、インストール中の状態です。サーバーの役割がインストールされたら、[Windows]ボタン→[サーバーマネージャー]にあるステータスを監視すると、インストール完了のタイミングが分かります(びっくりマークが表示されます)。

f:id:swx-korotkov:20220209152116p:plain
すぐRDPでログインすると、インストールがまだ終わっていない状態

f:id:swx-korotkov:20220209152307p:plain
少し待つと、上記のようにびっくりマークが出ます。Get-WindowsFeatureのコマンドを叩くと反映した結果が分かります

まとめ

  • 比較的にGUIよりPowerShellのほうが構築時間を非常に縮小できます。
  • AWSで実施する場合、サーバーの役割をAWSユーザーデータで展開できますので、「AWSユーザーデータの方法」をご参考ください。
  • AWS外/AWSユーザーデータ使用したくない場合、「PowerShellの方法」をご参考ください。
  • 初心者の場合、下記のGUI記事の通り設定してみてください。慣れたら、本件の手順を使うとGUIより早いDC構築ができるようになります。

blog.serverworks.co.jp

考慮事項

ドメイン名についての注意点

「test.local」のドメインを本件の記事のためだけに記載しましたが、本番環境での「.local」のようなドメインの使用はNGです。正しいドメイン名の選び方について下記の記事をご参考ください。

blog.serverworks.co.jp

AWSでDCを展開する場合

AWSでDCを展開する場合、「このコンピューターで静的 IP アドレスが見つかりませんでした」という警告が発生しますが、AWSのEC2の場合、デフォルトでAWS上のDHCPが自動的にENI (NIC)に固定のプライベートIPアドレスを割り当てるため、問題ありません。

例えば、EC2を構築する時に、ENI(NIC)に静的にプライベートIPアドレスを指定しても、OSから見たネットワークインターフェースとしてはDHCPに見えるために「このコンピューターで静的 IP アドレスが見つかりませんでした」の警告が発生しますが、ENIに割り当てたプライベートIPアドレスが変わることはありませんので、問題ありません。

f:id:swx-korotkov:20220208122507p:plain

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の役割をインストールする必要性があります。

以上、御一読ありがとうございました。

イーゴリ (記事一覧)

クラウドインテグレーション部・技術4課・エンジニア

特にTerraform(自動化)、ネットワーク系、VDI、Windows Serverに興味があります

日本国内旅行・ドライブが好きです