VPN環境でAD Connectorを利用する

### 試すこと
今回試してみたいのは、AWSのディレクトリサービスの１つ、AD ConnectorをなんちゃってVPN接続で利用できるのかを試してみたいと思います。

:::note warn
一部調査中
:::


### コスト
いままで同じように極力コストをかけずに、試してみたいと思います。目指せ1ヶ月1$以内。

1月はNATやらVPNやらでEC2インスタンスやVPCから外向きの通信が発生したため、若干料金があがってきていますが、まだ1$以内をキープできています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/6f6d9304-e17d-901f-f051-8e975d20b4fb.png)

AD Connectorの料金は、公式より、東京リージョンでスモールを利用する場合、1時間あたり0.08USDとなっています。(https://aws.amazon.com/jp/directoryservice/other-directories-pricing/)
1ヶ月あたり13時間使用してしまうと、私の予算を超過します。

ある程度方針を決めてから設定をすることにします。

### どんな設定が必要か
マネジメントコンソールで、Directory Service > ディレクトリ > ディレクトリセットアップと先に設定画面を確認してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/8960b181-5afd-8af9-2b29-50d81e13166a.png)

VPCとサブネットが２つ必要なようです。サブネットは指定しない場合、AD Connector作成時にAWSが自動的に作成するようです。

続いてAD接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/bd8c7567-082e-4433-f2f8-df0e6c265a8b.png)

こちらはActiveDirectoryの情報を入力すれば良さそうです。

### 構成
今回試す構成です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/b4d79fc6-1464-570a-3e3c-e40bfc6cdc7f.png)

* ローカルとAWSの接続部分は以前に使用したSoftetherによるVPN接続を利用します
* Private subnet3を新たに追加しますが、ローカルへのルートは設定しません
* Private subnet3にWindowsのEC2インスタンスを起動し、AD connector経由でドメインに参加をトライします

### 実際に設定
やってみます。

ローカルのADにサービスアカウントを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/35acf2ed-544c-f2d6-de9d-4cfa033bb60b.png)

EC2のWindows Server用のロールを作成します。以下のポリシーをアタッチします。
| ポリシー | 理由 |
|---|---|
| AmazonSSMManagedInstanceCore | セッションマネージャを使用するため |
| AmazonSSMDirectoryServiceAccess | ディレクトリサービスにアクセスするため|

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/6d4b52e4-d3a4-d3af-46ce-8953882385db.png)


VPNServerを有効化します。ローカルとAWSを接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/8d6af4ed-f7c6-2783-c00e-56d6e8f10b94.png)

AD Connectorを設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/e38d9c5a-b38d-0c99-8937-43b1283ca71c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/52352c79-62fb-64cd-d6bb-144c539c1b21.png)

設定内容を確認して、・・・！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/899fe975-5d42-50f3-92a2-0941e369622d.png)

:::note warn
あれ？　無料枠あるの？
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/ed84fd60-c13b-97c7-5f88-76ea28420f8f.png)
どうやら初めてDirectoryサービスを利用する場合30日間の無料枠が適用されるみたいです。
では安心して作成できますね。

作成中になりました。コーヒーを飲みながら待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/98b4b62d-cc57-0d17-0442-0ece945585b6.png)

残念ながら失敗しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/f8728dfe-7603-ef52-bc53-d7f94ca6b3b8.png)

ActiveDirectoryサーバのDNSへの通信ができていないようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/cbd4f409-47c7-d388-543a-cc661b17e3cd.png)

### 原因判明、再設定
あれこれ調べました。

原因わかりました。セキュリティグループの設定が正しくなかったため、AD Connectorからローカル側へ通信ができない状態でした。単純なミスです。。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/95e4a44e-d94c-d0c2-e194-4cc4d9a0bf62.png)

気を取り直して再開したところ、無事「アクティブ」になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/6e4fe326-17b2-e045-c163-f0c3d4d94d5a.png)

詳細情報を確認すると、AD Connectorに設定した２つのサブネットにIPアドレスが割り振られています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/6a6033f7-a6e8-4f6c-9c4b-e9b2ca0616f1.png)

### EC2サーバでドメイン参加
では、EC2サーバ（Windows）をドメインに参加させてみます。
マネジメントコンソールからEC2インスタンスを起動していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/62ef3060-2e23-3f02-e6eb-a57a0619e960.png)

予定どおりprivate subnet 3のネットワークに配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/55bb309b-15d5-c96b-5ad9-c62965b33450.png)

AD Connectorで接続したドメインが選択できるようになっています！
IAMインスタンスプロファイルをWindowsサーバ用に準備したロールに設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/5629caab-efbd-ec09-760a-de83add07c6a.png)

起動前に、どうせ一瞬しか起動しないので、より安価なスポットインスタンにしておこうとしましたが、スポットインスタンスはドメイン統合には対応していないというエラーになりました。

通常インスタンスで起動しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/5ce6650e-4423-bd6b-d5fa-faecce51c302.png)

さっそく、ローカルのADのユーザーとコンピュータで、「Computers」を見てみたのですが、EC2サーバがドメイン参加した形跡はありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3636209/641009c9-c12b-2de6-0c5e-fdf87531311e.png)


原因推測
~~* ドメイン参加はSSMによって自動実行される~~
~~* EC2のSSM AgentがSSMのサービスエンドポイントへ接続する必要がある~~
~~* 現状の構成では、private subnetからインターネットへの通信を許可していない~~

~~Cloudtrailのイベント履歴ではドメイン参加ドキュメントが関連づけられたところまで確認できたので、後はNATインスタンスを起動し、private subnet3内のEC2のSSM agentがインターネット上のエンドポイントに接続すれば、ドメイン参加処理が実行されると思います。~~

SSMエージェントを接続できる状態にして、SSMドキュメントを手動で実行してもエラー

at Amazon.EC2Services.Config.Plugins.DomainJoin.Ec2SDomainJoin.CreateComputer(DomainJoinDto domainJoinDto, String desiredComputerName, String accountCreationPassword)

Domain join failed with exception: Domain Join failed, ComputerName:EC2AMAZ-890IUOF; Message:Could not create computer. RequestId: d71fc500-dbbc-4451-98f9-de7a5af4075b : RequestId: d71fc500-dbbc-4451-98f9-de7a5af4075b; ErrorCode:InvalidParameterException; ErrorType:Amazon.DirectoryService.Model.InvalidParameterException; StatusCode:BadRequest

exit status 1


### まとめ
なんちゃってのVPN環境でもネットワーク設定を正しく行えば、AD Connectorは利用可能であることが確認できました。初めての利用の場合は30日間の無料枠があるので、その間にドメイン参加や他のAWSのサービスでのディレクトリサービス利用を試してみようと思います。