Azure上にADサーバを構築してドメイン参加させてみました。
また、なるべくPowershellを利用してコマンドで構築してみました。
ADサーバを構築する
以下のような構成でADサーバを構築していきます。
1.Azureリソースの構築
以下のAzureCLIで構築します。
#任意のパラメータを定義
$rg_name = "RG-Test-AD"
$location = "japaneast"
$vnet_name = "Vnet-Test-AD"
$vnet_address = "10.8.0.0/24"
$subnet1_name = "Subnet-Client"
$subnet1_address = "10.8.0.0/26"
$subnet2_name = "Subnet-AD"
$subnet2_address = "10.8.0.64/26"
$nsg1_name = "NSG-Test-Client"
$nsg2_name = "NSG-Test-AD"
$nsgrule_name = "AllowRDP"
$my_gip = (Invoke-WebRequest https://ipinfo.io/ip).content
$nsgrule_sourceip = $my_gip + "/32"
$nsgrule_port = 3389
$nsgrule_priority = 200
$pip1_name = "PIP-VM-Test-Client"
$nic1_name = "NIC-VM-Test-Client"
$pip2_name = "PIP-VM-Test-AD"
$nic2_name = "NIC-VM-Test-AD"
$vm1_name = "VM-Test-Client"
$vm2_name = "VM-Test-AD"
$vm_image = "Win2022Datacenter"
$vm_size = "Standard_B2ms"
$vm_authtype = "password"
$vm_adminname = "xxxxxxx"
#リソースグループの作成
az group create `
-l $location `
-g $rg_name
#仮想ネットワークの作成とクライアント用サブネットの追加
az network vnet create `
-n $vnet_name `
-g $rg_name `
-l $location `
--address-prefix $vnet_address `
--subnet-name $subnet1_name `
--subnet-prefix $subnet1_address
#web用サブネットの追加
az network vnet subnet create `
-g $rg_name `
--vnet-name $vnet_name `
-n $subnet2_name `
--address-prefixes $subnet2_address
#NSGの作成
az network nsg create `
-n $nsg1_name `
-g $rg_name
az network nsg create `
-n $nsg2_name `
-g $rg_name
#NSGのルール追加
az network nsg rule create `
-g $rg_name `
--nsg-name $nsg1_name `
-n $nsgrule_name `
--source-address-prefixes $nsgrule_sourceip `
--destination-port-range $nsgrule_port `
--priority $nsgrule_priority
az network nsg rule create `
-g $rg_name `
--nsg-name $nsg2_name `
-n $nsgrule_name `
--source-address-prefixes $nsgrule_sourceip `
--destination-port-range $nsgrule_port `
--priority $nsgrule_priority
#NSGをサブネットに適用
az network vnet subnet update `
-g $rg_name `
-n $subnet1_name `
--vnet-name $vnet_name `
--network-security-group $nsg1_name
az network vnet subnet update `
-g $rg_name `
-n $subnet2_name `
--vnet-name $vnet_name `
--network-security-group $nsg2_name
#パブリックIPの作成
az network public-ip create `
-n $pip1_name `
-g $rg_name
az network public-ip create `
-n $pip2_name `
-g $rg_name
#ネットワークインターフェースの作成
az network nic create `
-n $nic1_name `
-g $rg_name `
--vnet-name $vnet_name `
--subnet $subnet1_name `
--public-ip-address $pip1_name
az network nic create `
-n $nic2_name `
-g $rg_name `
--vnet-name $vnet_name `
--subnet $subnet2_name `
--public-ip-address $pip2_name
#仮想マシンの作成
az vm create `
-n $vm1_name `
-g $rg_name `
--image $vm_image `
--size $vm_size `
--nics $nic1_name `
--authentication-type $vm_authtype `
--admin-username $vm_adminname
az vm create `
-n $vm2_name `
-g $rg_name `
--image $vm_image `
--size $vm_size `
--nics $nic2_name `
--authentication-type $vm_authtype `
--admin-username $vm_adminname
2.ADサーバの構築(OS内の設定)
2-1.日本語化
VMができたら接続して以下の記事を参考に日本語化します。
言語パッケージだけ手動でインストールして、その他は基本Powershellで設定します。
2ー2.ADサーバの設定
以下のコマンドを実行してADを設定します。
今回はシングルフォレストで、OUを1つ追加して、ユーザーを3名作成します。
# 1.パラメータの定義
$DomainDNSName = "hogehoge.com"
$DomainNetbiosName = "hogehoge"
$Password = "P@ssw0rd"
# 2.ADDSのインストール
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Import-Module ADDSDeployment
# 3.新規ADフォレストの作成
$params = @{
DomainName = $DomainDNSName;
DomainNetbiosName = $DomainNetbiosName;
ForestMode = "WinThreshold";
DomainMode = "WinThreshold";
DatabasePath = "C:\Windows\NTDS";
LogPath = "C:\Windows\NTDS";
SysvolPath = "C:\Windows\SYSVOL";
SafeModeAdministratorPassword = (ConvertTo-SecureString $Password -AsPlainText -Force);
InstallDns = $true;
CreateDnsDelegation = $false;
NoRebootOnCompletion = $false;
Confirm = $false;
}
Install-ADDSForest @params
~~~自動で再起動される~~~
# 1.パラメータの定義(再起動後の再定義)
$DomainDNSName = "hogehoge.com"
$DomainNetbiosName = "hogehoge"
$Password = "P@ssw0rd"
$AdminUserName = "adadminuser"
$OUName = "TestOU"
# 4.新しいActiveDirectory管理ユーザーを作成
$params = @{
Name = $AdminUserName;
UserPrincipalName = "$($AdminUserName)@$($DomainDNSName)";
Description = "AD admin user";
AccountPassword = ConvertTo-SecureString -AsPlainText $Password -Force;
Enabled = $true;
PasswordNeverExpires = $true;
}
New-ADUser @params
Add-ADGroupMember -Identity "Domain Admins" -Members $AdminUserName
# 5.Active Directoryの組織単位(OU)を作成
New-ADOrganizationalUnit -Name $OUName
# 6.OUにユーザーを追加
$ou = Get-ADOrganizationalUnit -Filter "Name -eq '$($OUName)'"
@(
[PSCustomObject]@{ Name="testuser01"; PlainPassword = $Password; },
[PSCustomObject]@{ Name="testuser02"; PlainPassword = $Password; },
[PSCustomObject]@{ Name="testuser03"; PlainPassword = $Password; }
) | ForEach-Object {
$params = @{
Name = $_.Name;
UserPrincipalName = ("{0}@$($DomainDNSName)" -f $_.Name);
Description = ("Test user {0}" -f $_.Name);
AccountPassword = ConvertTo-SecureString $_.PlainPassword -AsPlainText -Force;
PasswordNeverExpires = $true;
Path = $ou.DistinguishedName;
Enabled = $true;
}
New-ADUser @Params
}
以下でそれぞれのコマンドの解説をします。
2.ADDSのインストール
Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
Import-Module ADDSDeployment
「役割と機能の追加」で起動するウィザードで設定する内容と同じこと実施します。
3.新規ADフォレストの作成
$params = @{
DomainName = $DomainDNSName;
DomainNetbiosName = $DomainNetbiosName;
ForestMode = "WinThreshold";
DomainMode = "WinThreshold";
DatabasePath = "C:\Windows\NTDS";
LogPath = "C:\Windows\NTDS";
SysvolPath = "C:\Windows\SYSVOL";
SafeModeAdministratorPassword = (ConvertTo-SecureString $Password -AsPlainText -Force);
InstallDns = $true;
CreateDnsDelegation = $false;
NoRebootOnCompletion = $false;
Confirm = $false;
}
Install-ADDSForest @params
「役割と機能の追加」でADサーバをイントールした後にサーバーマネージャーの!マークを選択して「このサーバーをドメインコントローラーに昇格する」をクリックしてウィザードが起動しますが、
このウィザードで設定する内容と同じこと実施します。
再起動後にログインする際にはドメインを指定しないとRDPできないので注意ください。
4.新しいActive Directory管理ユーザーを作成
$params = @{
Name = $AdminUserName;
UserPrincipalName = "$($AdminUserName)@$($DomainDNSName)";
Description = "AD admin user";
AccountPassword = ConvertTo-SecureString -AsPlainText $Password -Force;
Enabled = $true;
PasswordNeverExpires = $true;
}
New-ADUser @params
Add-ADGroupMember -Identity "Domain Admins" -Members $AdminUserName
「Active Directory ユーザーとコンピューター」における設定をPowershellで実施しています。
以下のようにユーザーを作成して、そのユーザーを [Domain Admins] に加えています。
5.Active Directoryの組織単位(OU)を作成
New-ADOrganizationalUnit -Name $OUName
「Active Directory ユーザーとコンピューター」における組織単位(OU)の作成をPowershellで実施しています。
6.OUにユーザーを追加
$ou = Get-ADOrganizationalUnit -Filter "Name -eq '$($OUName)'"
@(
[PSCustomObject]@{ Name="testuser01"; PlainPassword = $Password; },
[PSCustomObject]@{ Name="testuser02"; PlainPassword = $Password; },
[PSCustomObject]@{ Name="testuser03"; PlainPassword = $Password; }
) | ForEach-Object {
$params = @{
Name = $_.Name;
UserPrincipalName = ("{0}@$($DomainDNSName)" -f $_.Name);
Description = ("Test user {0}" -f $_.Name);
AccountPassword = ConvertTo-SecureString $_.PlainPassword -AsPlainText -Force;
PasswordNeverExpires = $true;
Path = $ou.DistinguishedName;
Enabled = $true;
}
New-ADUser @Params
}
「Active Directory ユーザーとコンピューター」において、先ほど作成したOUにユーザーを追加する設定をPowershellで実施しています。
3.クライアントVMの設定
次にクライアントVMでADサーバにドメイン参加させます。
ドメイン参加させる前にクライアントVMのDNSの向き先をADサーバに変更します。
3-1.DNSの向き先を変更する(Vnetの設定変更)
Azure上のVnetもしくはNICのDNS設定を変更することで、DNSの向き先をADサーバに変更します。
今回はVNetの設定を変更します。
$rg_name = "RG-Test-AD"
$vnet_name = "Vnet-Test-AD"
$dnsserver_address = "10.8.0.68"
# VnetのDNSサーバーの設定を更新
az network vnet update `
-g $rg_name `
-n $vnet_name `
--dns-servers $dnsserver_address
Azureポータル上では以下の項目の設定になります。
クライアントVM上でもDNSサーバーの設定が変更されていることを確認できます。
PS C:\> ipconfig /all | sls "dns server"
DNS Servers . . . . . . . . . . . : 10.8.0.68
PS C:\>
3-2.クライアントVMにてドメイン参加する
以下のPowershellを実行して参加させます。
今回は作成したOUにクライアントVMもコンピューターとして追加します。
# クライアント端末側でADドメインに参加
$DomainDNSName = "hogehoge.com"
Add-Computer $DomainDNSName -OUPath 'OU=TestOU, DC=hogehoge, DC=com'
上記を実行すると認証画面が出てくるのでADの管理者ユーザー(仮想マシン作成時に作成したユーザー)で認証を実施します。
認証が完了したら再起動を促す文言が出力されるので「Restart-Computer」で再起動します。
PS C:\> $DomainDNSName = "hogehoge.com"
PS C:\> Add-Computer $DomainDNSName -OUPath 'OU=TestOU, DC=hogehoge, DC=com'
cmdlet Add-Computer at command pipeline position 1
Supply values for the following parameters:
Credential
WARNING: The changes will take effect after you restart the computer VM-Test-Client.
PS C:\>
PS C:\> Restart-Computer
再起動後にログインして確認するとドメイン参加していることが分かります。
PS C:\> Get-WMIObject Win32_ComputerSystem
Domain : hogehoge.com
Manufacturer : Microsoft Corporation
Model : Virtual Machine
Name : VM-Test-Client
PrimaryOwnerName :
TotalPhysicalMemory : 8588759040
PS C:\>
OU側にもコンピューターが登録されていることが確認できます。
これにてADサーバの構築からドメイン参加の設定は完了です。
[参考] GUIでのドメイン参加
上記のPowershellコマンドは、GUIでの以下の設定変更と同じことを実施しています。
・[設定]>[システム]>[詳細情報]>[システムの詳細情報]をクリック、[システムのプロパティ]>[コンピューター名]>[変更]をクリックして表示されるドメインの変更画面
[注意点] DNSサーバの向き先をADサーバにしないとクライアントVMにアクセスできない
DNSサーバの向き先をADサーバにしないと、ADサーバ側で作成したドメインユーザーからクライアントVMにアクセスできません。
以下のようなエラーとなります。
ちなみにローカルユーザー(仮想マシン作成時に作成したユーザー)はドメインと関係がないためログインすることが可能です。
PS C:\> # ログインしているユーザー
PS C:\> whoami
vm-test-client\hogeuser
PS C:\>
PS C:\> # 参加しているドメインの確認
PS C:\> Get-WMIObject Win32_ComputerSystem | Select-Object -ExpandProperty Domain
hogehoge.com
PS C:\>
PS C:\> # DNSサーバーのIP
PS C:\> ipconfig /all | sls "dns server"
DNS Servers . . . . . . . . . . . : 168.63.129.16
PS C:\>
コメント