AD DNSをDHCPオプションセットで配布し、別EC2をドメイン参加させてみた

はじめに

こんにちは。hiranoです。
今回は、DHCPオプションセットを使って、EC2上に構築したドメインコントローラー兼DNSサーバーを、他のWindows EC2にDNSサーバーとして配布してみます。

DHCPオプションとは、DHCPでIPアドレスを配布する際に、DNSサーバーやドメイン名などのネットワーク設定もあわせてクライアントへ通知するための設定です。AWSでは、DHCPオプションセットを使うことで、VPC内のEC2インスタンスに配布するDNSサーバーやドメイン名を指定できます。

通常、VPC内のEC2はAmazonProvidedDNSを使って名前解決できます。
一方で、Active Directory(以降、ADとする)ドメインに関する情報は、ADドメイン用のDNSで管理されます。
Windows EC2がADドメインに参加する際は、DNSを使ってドメインコントローラーを探しますが、AmazonProvidedDNSだけではドメインを見つけられない場合があります。
そのため、他のWindows EC2をADドメインに参加させるには、ADドメインの名前解決を担当するDNSサーバーを参照できるようにしておく必要があるというわけです。

本記事では、EC2上にActive Directory Domain Services(以降、AD DSとする)とDNSサーバーを構築し、DHCPオプションセットで他のWindows EC2にAD DNSを配布します。
そのうえで、作成したドメインに参加させ、最後にADユーザーでログインできることを確認します。

前提条件

前提として、今回は作成済みのVPC環境を使用して実践していきます。
VPC、パブリックサブネット、Internet Gateway、ルートテーブルは既に作成されており、
パブリックサブネット上の EC2インスタンスへRDP接続できる状態になっていることとします。
そのため、後述の実践編ではVPCやサブネットなどのネットワーク作成手順は扱いません。

本記事で作成・設定する主なAWSリソースは以下です。
・Security Group(RDPやAD関連通信を許可する)
・EC2(Windows Serverを2台作成する)
 - 1台目をAD DSとDNSサーバーを構築するAD01とします。
 - 2台目をドメイン参加を確認するためのMEMBER01とします。
・DHCP オプションセット(VPC内のEC2にDNSサーバーやドメイン名を配布するために使用する)

また、Active Directoryの細かな設計や本番利用を想定した冗長構成までは行いません。
あくまで検証用の最小構成として、DHCPオプションセットを使ってAD DNSをWindows EC2に配布し、
ドメイン参加できることを目的とします。

それでは、やっていきます。

実践編

1. Security Groupの作成

まずは、Windows EC2に適用するSecurity Group(以降、SGとする)を作成します。
SG名は簡単にad01-sgmember01-sgにしましょう。

今回、MEMBER01をADドメインに参加させるには、MEMBER01からAD01に対してDNS、Kerberos、LDAP、SMB、RPCなどのActive Directory関連の通信ができる必要があります。
また、Windows EC2上で設定作業を行うため、作業端末からRDP接続できるように、以下のルールで作成します。

ad01-sgのインバウンドルール

用途 Type Protocol Port Source
RDP接続 RDP TCP 3389 <作業端末のIP>/32
DNS DNS(TCP) TCP 53 member01-sg
DNS DNS(UDP) UDP 53 member01-sg
Kerberos(AD認証) カスタムTCP TCP 88 member01-sg
Kerberos(AD認証) カスタムUDP UDP 88 member01-sg
LDAP(ディレクトリ参照) LDAP TCP 389 member01-sg
LDAP(ディレクトリ参照) カスタムUDP UDP 389 member01-sg
SMB(ドメイン参加等) SMB TCP 445 member01-sg
RPC Endpoint Mapper(RPC通信) カスタムTCP TCP 135 member01-sg
Global Catalog カスタムTCP TCP 3268 member01-sg
Dynamic RPC カスタムTCP TCP 49152-65535 member01-sg

member01-sgのインバウンドルール

用途 Type Protocol Port Source
RDP接続 RDP TCP 3389 <作業端末のIP>/32

★補足
MEMBER01側は、基本的に作業端末からRDP接続できればよいので、インバウンドルールはRDPのみで進めます。
また、アウトバウンドルールはデフォルトのままで進めます。
 

2. AD01の構築

ここからは、ADの中心となるAD01を構築します。
このサーバーにAD DSとDNSサーバーの役割を追加し、ad-test.localドメインのドメインコントローラー兼DNSサーバーとして利用します。

2.1 AD01用のEC2インスタンスを作成する

WindowsのEC2インスタンスを作成します。
主な設定値は以下です。詳細な作成手順は割愛します。

項目 設定値
AMI Microsoft Windows Server 2025 Base
インスタンスタイプ t3.medium
VPC 作成済みの検証用VPC
サブネット 作成済みのパブリックサブネット
SG ad01-sg
プライベートIP 任意のIPアドレス(※)

※DHCP オプションセットで指定するIPアドレスになります。

2.2 コンピュータ名を「AD01」に設定する

作成したAD01サーバーにRDP接続します。
インスタンス名がWindows Server内部のコンピュータ名に自動反映されるわけではないので、
Server Managerから手動でAD01に設定します。

2.3 AD01をドメインコントローラー兼DNSサーバーとして構成する

ここでAD01にAD DSとDNSサーバーの役割を追加し、新規フォレストad-test.localのドメインコントローラーとして昇格させます。
これにより、AD01ad-test.localドメインのドメインコントローラー兼DNSサーバーとして動作します。

引き続き、Server Managerにて作業していきます。
AD DSとDNSサーバーの役割追加は、
Manage → Add Roles and Features → AD DS/DNS Serverの追加 → install の流れです。
 

 
★補足
必要な管理ツールの追加確認が表示された場合は、Add Featuresをクリックして進めていきます。

 
新規フォレスト作成は、役割のインストール完了画面から続けていきます。
Promote this server to a domain controller → Add a new forest → ad-test.localを設定の流れです。
 

フォレスト名入力後にNext >をクリックするとドメインコントローラーの設定に移ります。
主な設定値は以下です。

項目 設定値
Forest functional level Windows Server 2025 または選択可能な既定値
Domain functional level Windows Server 2025 または選択可能な既定値
Domain Name System DNS server チェックあり
Global Catalog GC チェックあり
Read only domain controller RODC チェックなし
DRSM password 任意のパス

その他はデフォルトのまま進め、インストールしていきます。
このタイミングでドメインコントローラーへの昇格処理も開始され、完了後にサーバーは自動的に再起動します。

再起動後にRDPでAD01に接続しますが、サインイン時は、昇格前のローカル Administrator ではなく、
ドメインの Administrator としてサインインします。
今回のNetBIOS名はAD-TESTになったため、ユーザー名はAD-TEST\Administrator、パスワードは昇格前に Administrator で使用していたものを入力します。

サインインできれば、AD01 のドメインコントローラー化は完了です。
※赤表示が見えますがAD DS/DNSとは関係ない内容のため、放置してます。

 
★補足
インストールする直前に「Prerequisites Check」という項目があります。
ここでは、ドメインコントローラーへ昇格するための前提条件チェックが実行されるので「All prerequisite checks passed successfully.」が表示されることを確認します。
警告がいくつか表示されますが、問題ない内容であれば進めましょう。
 

3. DHCP オプションセットを作成する

AD01側の準備が整ったので、DHCPオプションセットを作成します。
VPCのコンソール画面からDHCPオプションセットを選択し、設定していきます。
今回の主な設定値は以下です。

項目 設定値
DHCPオプションセット名 dhcp-ad-test-local
ドメイン名 ad-test.local
ドメインネームサーバー AD01のプライベートIPアドレス
NTPサーバー 未指定
NetBIOS ネームサーバー 未指定
NetBIOS ノードタイプ 未指定

★補足
今回は、AD DNSをEC2に配布してドメイン参加を確認することを目的としているため、
設定は最低限にして、NTPサーバーやNetBIOS関連の項目は未指定としました。

NTPは時刻同期先を配布するための項目ですが、今回の検証では既定の時刻同期設定を利用します。
また、NetBIOSネームサーバーやNetBIOSノードタイプはWINS/NetBIOS名前解決向けの項目であり、今回はDNSによる名前解決を前提とするため設定しません。


 
続いて、作成したDHCPオプションセットをVPCに関連付けます。
関連付けは対象のVPC設定から行います。

 

4. MEMBER01の構築

それでは、MEMBER01を作成して、DHCPオプションセットでAD01のDNSが配布されているか確認していきます。

4.1 MEMBER01用のEC2インスタンスを作成する

こちらもEC2インスタンスを作成します。
主な設定値は以下です。詳細な作成手順は割愛します。

項目 設定値
AMI Microsoft Windows Server 2025 Base
インスタンスタイプ t3.medium
VPC AD01と同じ検証用VPC
サブネット 作成済みのパブリックサブネット(※)
SG member01-sg

※検証を分かりやすくするため、AD01と同じパブリックサブネットに作成しますが、本来はドメインコントローラーやメンバーサーバーの配置、サブネット分離、冗長化、アクセス制御など検討が必要です。
 

4.2 コンピュータ名を「MEMBER01」に設定する

MEMBER01サーバーにRDP接続後、AD01サーバーと同様にコンピュータ名を変更します。
 

 

4.3 AD01のDNSが配布されていることを確認する

MEMBER01サーバーでコマンドプロンプトを開き、以下のコマンドを実行します。

# ネットワークアダプターのDNS Serversを確認
ipconfig /all

# ad-test.localを名前解決できるか確認
nslookup ad-test.local

DNS Serversと名前解決時のAddressにて、AD01のプライベートIPアドレスが表示されていることが確認できれば、DHCPオプションセットによって正常にAD01のDNSが配布されています。

 

4.4 MEMBER01をad-test.localドメインに参加させる

Server ManagerからMEMBER01ad-test.localドメインに参加させます。
Local Server → Computer name → 所属するグループでドメインを選択 → ad-test.localを入力 の流れです。

ドメインに参加するためにユーザー名とパスワードを聞かれるので、AD-TEST\Administratorを入力します。
 

認証に成功すると以下のメッセージが表示されます。

ドメイン参加後は再起動が求められます。
再起動後、MEMBER01ad-test.localドメインに参加したメンバーサーバーとして動作します。
 

5. ADユーザーを作成する

ドメイン参加したMEMBER01にログインするためのADユーザーを作成します。
AD01サーバーにRDP接続し、Server Managerから作成していきます。

Tools → Active Directory Users and Computers → ad-test.local → Users → 新規作成 → ユーザーの流れです。
 

 
最後に、作成したADユーザーでMEMBER01サーバーにログインできれば問題なしです。

 
★補足
作成したADユーザーは、デフォルトでMEMBER01サーバーにRDP接続する権限がない場合があります。
権限付与はMEMBER01サーバーのServer Managerからもできますので、必要に応じて追加しましょう。
 

まとめ

今回は、DHCPオプションセットを使って、EC2上に構築したAD DNSを別のWindows EC2に配布し、ドメイン参加とADユーザーでのログイン確認を行いました。

ADでは、ドメインコントローラーの検索やドメイン参加時の処理にDNSが使われるため、Windows EC2をADドメインに参加させるには、AD DNSを参照できる状態にしておくことが重要です。
そこで、DHCPオプションセットを使って、DNSサーバーとしてAD01のプライベートIPアドレスを配布しました。
その結果、MEMBER01側で手動でDNSサーバーを設定しなくても、DHCPによってAD01のDNSを参照できるようになり、
ad-test.localドメインへ参加できました。

DHCPオプションセットを使うと、VPC単位でDNSサーバーを配布できるため、各EC2インスタンスに個別でDNS設定を入れる必要がなくなります。
設定項目に関してもシンプルで、比較的簡単に構成できるサービスになりますので、EC2上にActive Directoryを構築し、複数のWindows EC2をドメイン参加させる場合は、DHCPオプションセットを使ってAD DNSを配布する方法をおすすめします。