Route 53 Resolver を利用し Amazon Provided DNS に MSAD を名前解決させる

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

営業部 佐竹です。
本日は、Route 53 Resolver の Outbound Endpoint を利用し、Amazon Provided DNS に AWS Managed Microsoft AD (MSAD) を名前解決させる方法を紹介いたします。

はじめに

Route 53 Resolver は Route 53 のサービスの1つとして、2018年11月に利用可能になりました。

aws.amazon.com

今回は、この Route 53 Resolver を利用し「VPC の中に複数構築された各 MSAD の名前解決を実現する」ためのブログになります。

Amazon Provided DNS は MSAD の宛先を知らない

AWS Directory Service では AWS Managed Microsoft AD が構築可能です。そして、AWS Managed Microsoft AD は Active Directory ですので、DNS の機能を内包しています。

しかし、AWS Managed Microsoft AD を構築しただけでは、AWS Managed Microsoft ADの持つ DNS 機能を利用することはできません。それは、VPC に用意されている Amazon Provided DNS が AWS Managed Microsoft AD の宛先を知らないためです。

f:id:swx-satake:20211026151455p:plain

例えば、AWS Managed Microsoft AD として satake1.local を作成したとします。そこで、Amazon Provided DNS に対して名前解決を実施しても、宛先不明となります。satake2.local も同様に名前解決できません。

DHCP Options Sets での対応

VPC には、DHCP Options Sets という設定があります。DHCP Options Sets においては初期設定として DNS = Amazon Provided DNS が渡されます。

f:id:swx-satake:20211026154354p:plain

このため、VPC 内で作成した EC2 インスタンスは、自動取得で Amazon Provided DNS を DNS サーバとして利用します。そして、この DHCP Options Sets の設定を変更し、AWS Managed Microsoft AD の IP アドレスを渡すことも可能です。

ただし、この設定変更は VPC 内にある全ての EC2 インスタンス 等に影響してしまうため、実行するのが難しい場合があります。今回のように、satake1.localsatake2.local を同時に名前解決したい場合にも採用が難しいでしょう。

Route 53 Resolver で対応する

そこで、Route 53 Resolver を利用し、MSAD への Forwarding (転送)を行うよう設定し、対応する方法を検討しました。

AWS環境構成図

Route 53 Resolver 設定完了後の構成は以下の通りです。

f:id:swx-satake:20211026172809p:plain

Route 53 Resolver Outbound Endpoint を作成する

f:id:swx-satake:20211026164603p:plain

Route 53 Resolver Outbound Endpoint は、関連付けた VPC の Amazon Provided DNS に Forwarder の設定を入れ込むことができる機能です。Route 53 Resolver Outbound Endpoint を作成し、Forwarder の Rule を記載するだけのシンプルな設定でこれが実現可能になります。

f:id:swx-satake:20211026165323p:plain

Route 53 Resolver Outbound Endpoint を作成すると、冗長化のために複数の Availability Zone に ENI が作成されます。今回は ap-northeast-1a / ap-northeast-1c それぞれで作成しました。

ENI が作成されることからもわかる通り、構築時に Security Group のアタッチが必要です。予め作成して置くのも良いでしょう。このあたりは Private Link の実装と似ています。

Rules を紐づける

f:id:swx-satake:20211026164808p:plain

Rule は作成した Outbound Endpoint に紐づける設定です。今回は「Rule type」を「Forward」として作成しています。

f:id:swx-satake:20211026165702p:plain

ターゲットとする IP アドレスは、各ドメインの MSAD の持つ2つの IP アドレスをどちらも記載します。

f:id:swx-satake:20211026174810p:plain

今回、satake1.localsatake2.local の2つをそれぞれ転送したいため、2つの Rule を作成しています。

Route 53 Resolver Outbound Endpoint と Rule を作れば設定完了です。

動作確認

f:id:swx-satake:20211026175301p:plain

EC2 にリモートデスクトップし、コマンドプロンプト で ipconfig /all を実行した画面キャプチャになります。

Amazon Provided DNS (192.168.64.2) が DHCP の設定で配られていることがわかります。

この状態で satake1.localsatake2.local の2つをそれぞれ名前解決してみます。

PS C:\Users\Administrator> nslookup satake1.local
サーバー:  ip-192-168-64-2.ap-northeast-1.compute.internal
Address:  192.168.64.2

権限のない回答:
名前:    satake1.local
Addresses:  192.168.64.125
          192.168.64.94

PS C:\Users\Administrator> nslookup satake2.local
サーバー:  ip-192-168-64-2.ap-northeast-1.compute.internal
Address:  192.168.64.2

権限のない回答:
名前:    satake2.local
Addresses:  192.168.64.79
          192.168.64.124

画面キャプチャの通りでもありますが、問題なくどちらの MSAD も名前解決ができるようになりました。

このように、Route 53 Resolver Outbound Endpoint を利用することで、Amazon Provided DNS に MSAD を名前解決させることが可能となります。

この状態でドメインに参加してみる

DHCP で各 MSAD の名前解決ができる状態であるため、どちらのドメインにも参加させることが可能である認識です。

f:id:swx-satake:20211026191835p:plain

そこで、実際に satake1.local ドメインに参加させてみました。

f:id:swx-satake:20211026191854p:plain

問題なく参加作業が完了しました。

Route 53 Resolver の利用料

Route 53 Resolver の各 Endpoint は「0.125USD ENI ごと / 1 時間」と記載のある通り、作成された ENI の数によって利用料が増加します。

今回は ap-northeast-1a / ap-northeast-1c それぞれでENIを作成したため 0.125 × 2 ENI × 24時間 = $6.00 で1日あたり $6 の請求です。年額では、$2,190 になります。

f:id:swx-satake:20211026185009p:plain
毎日 $6 が請求されている

クエリにも「0.40USD 100 万クエリごと」という利用料が存在しますが、こちらについてはそこまでコストに跳ねることはないのではと想像します。

最新の情報は以下の公式ページをご確認ください。

aws.amazon.com

まとめ

本日は、Route 53 Resolver の Outbound Endpoint を利用し、Amazon Provided DNS に AWS Managed Microsoft AD (MSAD) を名前解決させる方法を紹介しました。

f:id:swx-satake:20211026172809p:plain
AWS環境構成図(再掲)

Route 53 Resolver Outbound Endpoint は簡単に作成できますので、複数の Active Directory や DNS サーバを単一の VPC で利用されているような場合は本機能が活躍すると存じます。

では、またお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

営業部カスタマーサクセス課所属。AWS資格12冠。2010年1月からAWSを利用してきました。2021 Japan APN Ambassador /2020-2021 APN ALL AWS Certifications Engineer。AWSのコスト削減、最適化を得意としています。