AWS Directory Service(Simple AD)を利用したオンプレミスからのPrivate Hosted Zone名前解決

2016.03.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

西澤です。閉域網でつながったオンプレミス環境から、VPC内のAWSリソースにアクセスする際、DNSを利用した名前解決をしたいケースは多いと思います。Route 53のPrivate Hosted Zoneは、非常に便利なサービスですが、VPCの外から参照することができないという制約がある為、オンプレミスから参照したい場合にはVPC内にDNS Forwarderを構築する等の工夫が必要です。

UnboundやBINDを構築、運用するよりは、マネージドサービスで任せたいという場合に、これをAWS Directory Serviceに任せる方法が、下記記事で紹介されています。今回は、こちらの構成で構築する際の注意事項をまとめておきたいと思います。

構成

上記の記事で概ね説明されていますが、改めて構成を図に起こしてみました。重要なところには説明をつけています。

Private DNS Forworder

利用料金

今回はSimple AD(Small)をDNS Forwarderとして利用します。せっかくAWS Directory Serviceを利用するのにアカウント管理は一切しないというのは、少々もったいない気分もありますが、EC2 Linuxでt2.smallを2台使ってDNSサーバとして利用した場合と同じ料金で、マネージドサービスとして利用できるのであれば、悪くない選択肢と言えるのではないでしょうか?Simple ADの構築は非常に簡単ですし、10分もあればすぐに利用開始することができます。

AWSサービス 料金/h 料金/月
Simple AD(Small) $0.08 $57.60

※東京リージョンで利用した場合の料金

構築の流れ

下記の流れで構築を進めます。

  1. AWS上にVPCを構築(Private Hosted Zone利用要件であるresolution、DNS hostnamesをenableもお忘れなく)
  2. Route 53でPrivateなHosted Zoneを作成し、作成したVPCに割り当て
  3. 作成したHosted Zoneに名前解決したい任意のレコードを登録
  4. Direct ConnectやInternet VPN等の閉域網で構成されたオンプレミス環境とのプライベートな通信環境を構築
  5. AWS Directory ServiceでSimple ADを構築
  6. オンプレ側の内部DNSサーバに、利用したいプライベートドメインへのクエリをSimple ADのIPアドレスにForwardするよう設定

Simple AD構築時の注意

今回ポイントになるのは、前述の項5(AWS Directory ServiceでSimple ADを構築)です。いくつか注意事項があるので、お気をつけください。

Simple ADは名前解決させたいドメインとは異なるドメインで作成する

今回構築するSimple ADはアカウント管理をする目的ではなく、あくまでRoute 53へのDNS Forwarderとして利用します。ここで、Simple ADは名前解決したいRoute53のHosted Zoneとは異なるドメインを指定して構築してください。Hosted Zoneと同じドメイン名で構築してしまうと、Simple ADは自分が権威サーバと思っていますから、Amazon Provided DNSにはForwardされません。(ちなみにSimple ADそのものが持つDNSサーバに直接レコード登録も可能ですが、前方参照ゾーンのAレコード登録以外はサポートされていないようです)

Simple ADもSecurity Groupを設定できる

今回の構成で、最も重要となるポイントはSecurity Groupです。この設定にしばらく気付かず苦戦しました。

simplead

上記画像の通り、Simple ADを構成する際、VPCやSubnetの指定はしますが、Security Groupの設定箇所はどこにも出てきません。何か特別な許可する仕組みが裏側で用意されているのだろうと当初は思っていたのですが、VPC外のサービスはそれで良くても、VPC内のリソースはきちんと管理したいですよね。今回はオンプレ側から参照させる必要があるので、一体どこで制御するのだろうとしばらく悩んだわけです。

simplead_eni

AWSサービスを使い慣れた方には当然かもしれませんが、EC2以外のサービスでもVPC内に構成したサービスにはENI(Elastic Network Interface)が割り当てられます。こちらを確認してみると、Simple ADにもENIが作成されているようです。しかも、設定した覚えの無いSecurity Groupが自動作成されています。

simplead_securitygroup

simplead_securitygroup_out

今回は、Simple ADを利用しましたが、Microsoft ADを利用した場合も同様のようです。よく読んでみると、公式ドキュメントにも記載がありました。

Create Your Directory - AWS Directory Service

Inboud、Outboundの許可設定が細かく設定されているのがわかりますね。ご覧になれば一目瞭然ですが、デフォルトでは割り当てられたVPCのCIDRのみがInbound通信を許可されているようです。これでは、オンプレミス側から参照することはできません。

今回はSimple ADのDNS機能をオンプレからのみ利用しますので、こんな形で設定してみました。

simplead_securitygroup_after

  • デフォルトで設定されている2台のSimple AD同士の相互通信は許可
  • TCPおよびUDPの53ポートをオンプレミスからのみ許可
  • 他の不要なInbound許可設定は全て削除

これで、無事にオンプレミス側からSimple ADを経由して、Private Hosted Zoneの名前解決ができました!

まとめ

AWSの各種サービスの制限事項を把握しつつ、マネージドサービスを活用しながら、オンプレ+AWSのハイブリッドな構成を上手に利用して行きましょう。どこかの誰かのお役に立てば嬉しいです。