Active Directory入門：AWS環境でWindows ServerをActive Directoryドメインに参加させる際のエラー対処法

## はじめに

AWS上の同じパブリックサブネット内にActive Directory（AD）兼DNSサーバーをWindows Serverで構築し、新しいWindows Serverを同じサブネットに構築してドメイン参加を試みた際に、以下のエラーが発生することがあります。

```
ドメインのアクティブディレクトリリード、メインコントローラーに接続できませんでした。ドメイン名が正しく入力されていることを確認してください。
```

このエラーが発生する原因と、その解決方法について詳しく解説します。

## 1. DNS設定の確認

Windows Serverがドメインコントローラー（DC）を見つけられない場合、最も多い原因は**DNS設定の誤り**です。

### **確認方法**
コマンドプロンプトを開き、以下を実行します。
```powershell
ipconfig /all
```
DNSサーバーのアドレスが、**ADサーバーのプライベートIP**になっているか確認してください。

### **修正方法**
1. **コントロールパネル** → 「ネットワークとインターネット」 → 「ネットワークと共有センター」 → 「アダプターの設定の変更」
2. **使用しているネットワークアダプターを右クリック** → 「プロパティ」
3. 「インターネット プロトコル バージョン 4 (TCP/IPv4)」を選択 → 「プロパティ」
4. 「優先DNSサーバー」に **ADサーバーのプライベートIPアドレス** を指定。
5. 以下を実行してキャッシュをクリア。
   ```powershell
   ipconfig /flushdns
   ```

## 2. ドメイン名の確認

正しいドメイン名を使用しているか確認してください（例: `example.local`）。
以下のコマンドを実行し、ドメインコントローラーのIPアドレスが返るか確認します。

```powershell
nslookup example.local
```

## 3. ドメインコントローラーとの接続確認

以下のコマンドを実行し、通信ができるか確認します。
```powershell
ping <ドメインコントローラーのIP>
```
通信できない場合、AWSの**セキュリティグループ（SG）やネットワークACL（NACL）**の設定を見直してください。

## 4. ポートが開いているか確認

Active Directoryのドメイン参加には、以下のポートが開いている必要があります。

| プロトコル | ポート | 説明 |
|-----------|-------|------|
| TCP | 53 | DNS |
| UDP | 53 | DNS |
| TCP | 88 | Kerberos認証 |
| UDP | 88 | Kerberos認証 |
| TCP | 135 | RPC |
| TCP | 139 | NetBIOS |
| UDP | 137-138 | NetBIOS |
| TCP | 389 | LDAP |
| UDP | 389 | LDAP |
| TCP | 445 | SMB |
| TCP | 464 | Kerberos変更・リセット |
| UDP | 464 | Kerberos変更・リセット |
| TCP | 636 | LDAPS |
| TCP | 3268 | グローバルカタログ |
| TCP | 3269 | グローバルカタログ（SSL） |

**修正方法**
1. **AWSのセキュリティグループを開き、上記のポートが許可されているか確認**
2. **AWSのネットワークACLを確認し、ポートがブロックされていないかチェック**

## 5. ドメインコントローラーのステータス確認

ドメインコントローラーが正常に動作しているか確認するために、以下のコマンドを実行します。

```powershell
dcdiag /v
```

また、ADのNTDSサービスが稼働しているか確認。
```powershell
Get-Service -Name NTDS
```
`Running` になっているかをチェックしてください。

## 6. ドメイン参加時に `netdom` を使う

GUIでの参加に失敗する場合、`netdom` コマンドを試すと詳細なエラーメッセージが確認できます。

```powershell
netdom join <ホスト名> /domain:<ドメイン名> /userd:<管理者アカウント> /passwordd:*
```

例：
```powershell
netdom join WIN-SERVER01 /domain:example.local /userd:Administrator /passwordd:*
```

## 7. 一時的にWindowsファイアウォールを無効化（テスト用）

もしセキュリティグループやNACLを修正しても解決しない場合、Windowsのファイアウォールが原因の可能性があります。

**一時的に無効化してテスト**
```powershell
netsh advfirewall set allprofiles state off
```

**ドメイン参加後に有効化**
```powershell
netsh advfirewall set allprofiles state on
```

## 8. 時刻同期のズレをチェック

AWS環境では、時刻同期がズレるとKerberos認証が失敗し、ドメイン参加ができなくなることがあります。

**時刻同期を確認**
```powershell
w32tm /query /status
```

もし時刻がズレている場合は、以下を実行して同期をリセット。
```powershell
w32tm /resync
```

## まとめ

| チェック項目 | 内容 |
|------------|------|
| ✅ DNS設定 | ADサーバーのプライベートIPを指定 |
| ✅ ドメイン名 | `example.local` で `nslookup` 確認 |
| ✅ 接続確認 | `ping` でDCと通信できるかチェック |
| ✅ ポート開放 | AWS SG/NACL で必要ポートが開いているか確認 |
| ✅ ADステータス | `dcdiag /v` でエラー確認 |
| ✅ `netdom` コマンド | 詳細エラーを取得しながら参加を試す |
| ✅ ファイアウォール | 一時的に無効化してテスト |
| ✅ 時刻同期 | `w32tm /query /status` でズレ確認 |

これらを試しても解決しない場合、エラーメッセージの詳細を確認して対応を進めてみてください！

## 参考文献

https://vamdemicsystem.black/windows/%E3%80%90activedirectory%E3%80%91%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%8F%82%E5%8A%A0%E6%99%82%E3%81%AB%E3%80%8C%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3xxx%E3%81%AEactivedirectory%E3%83%89%E3%83%A1