話題の記事

AWSハイブリッド構成のDNS設計レシピ

2016.02.29

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

ども、大瀧です。
AWSとオンプレミスのハイブリッド構成は、エンタープライズのAWS活用では定番となりつつあります。そんなAWSハイブリッド構成の設計でよく課題に挙がるのが、DNSです。このブログエントリーでは、使えるDNSサービスの種類とその特性をまとめ、いくつかの構成パターンを解説、比較してみます。

AWSハイブリッド構成とは

AWSハイブリッド構成は、AWSでプライベートネットワークを構成するAmazon VPCとオンプレミスのネットワークを相互接続し、両方のサーバーリソースを組み合わせて利用するものです。VPCとオンプレミスとの接続は、プライベート接続として専用線 *1かインターネットVPN *2を利用します。

hybrid-dns01

AWSハイブリッド構成で利用するDNSサービス

DNSサーバーには権威サーバーキャッシュサーバーの2種類がありますので、それぞれで利用できるサービス毎に並べてみました。[マネージド]というのは、AWSが運用保守込みで提供するサービスを指します。

No. サービス名 権威 キャッシュ マネージド 制限
1 Amazon Route 53 Public Hosted Zone × VPCには配置できない
2 Amazon Route 53 Private Hosted Zone × Amazon DNS専用、上位ドメインからの委譲不可、下位ドメインへの委譲不可
3 Amazon DNS × VPC専用ルートヒントとフォワーダの編集不可
4 AWS Directory Service Microsoft AD リモートデスクトップ接続はできないので、別途DNSコンソールなどで別のマシンからアクセス
5 AWS Directory Service Simple AD 権威サーバーは自ドメインのコンピュータのレコードのみ、キャッシュサーバーはルートヒントとフォワーダの編集不可
6 EC2のDNSサーバー × 特記事項なし
7 オンプレミスのDNSサーバー × 特記事項なし

運用コストを押さえるために積極的にマネージドサービスを選びたいところですが、それぞれ一定の制限事項がありますので権威/キャッシュと配置場所(AWS/オンプレミス)の組み合わせで問題が無いか検討する必要があります。

注意するべき制限を3つ、詳しく説明します。

  • Amazon DNS専用 : セットしたVPCのAmazon DNS以外からはアクセスできません。Route 53 Private Hosted Zoneを利用するためには、キャッシュサーバーでAmazon DNSをフォワーダに設定する必要があります。
  • VPC専用 : セットしたVPCの外からの問い合わせには回答しません。Direct Connect/VPN経由のオンプレミスネットワークVPCピア接続経由のVPCも対象です(回答しません)。
  • ルートヒントとフォワーダの編集不可 : 内部ルートや条件付きフォワーダ設定が出来ません。ルートサーバーを起点とするインターネットのDNSツリーおよびRoute 53 Private Hosted Zoneのみを扱います。

まずはRoute 53 Public Hosted Zoneを検討すべし

Route 53 Public Hosted Zone(公開ゾーン)に内部向けDNSレコードを登録できないか、まずは検討しましょう。公開ゾーンとすることで構成を最もシンプルにでき、またAWSのマネージドサービスをフル活用することができます。

従来のオンプレミスでのDNS構成は、内部向けと外部向けを分けて考える手法が一般的でしたが、内部向けDNSの情報が本当に秘匿するべき情報であるかを見直すケースが最近多いと感じています。リスクが大きくないと判断できるのであれば、Route 53 Public Hosted Zoneを積極的に活用しましょう。

内部ルートDNSとAWSドメインの名前解決

一方で、元からあるオンプレミスのDNS構成にAWSを追加するケースではインターネットのDNSツリーにアクセスしない内部ルートDNSになっていることがあります。その場合、AWSドメイン(*.<サービス名>.amazonaws.com)の名前解決が必要かどうかをしっかり精査しましょう。AWSドメインを利用する主な用途を以下に示します。

1. リソースのエンドポイント

AWSが提供するリソースは、IPアドレスでアクセスするものとDNS名でアクセスするものがあります。EC2はインスタンス毎にIPアドレスをユーザーが指定できる *3のに対し、ELBやCloudFrontなど多くのマネージドサービスはIPアドレスが不定のためAWSが割り当てるDNS名を利用します。DNS名を利用するために、AWSドメインの名前解決が必要です。

2. APIのエンドポイント

EC2インスタンスでAWS SDKやAWS CLIを用いてAWSのAPIをコールすることがあります。例えば、「EBSスナップショットによるバックアップを定期的に実行する」、「ELBに登録しているEC2インスタンス一覧を取得してミドルウェアと連携させる」などです。AWS APIのエンドポイントはIPアドレスが不定なので、AWSドメインの名前解決が必要です。

内部ルートDNSでAWSドメインを解決するためには、キャッシュサーバーでインターネットのDNSツリーにアクセスできる他のキャッシュサーバーに対し、フォワード(回送)を構成します。インターネットのDNSツリーにアクセスするキャッシュサーバーは当然インターネットに接続できないといけませんので、AWS(VPC)に構築する場合には、必要に応じてIGWへのルーティングやNAT GatewayなどVPCのネットワーク構成を合わせて検討することになるでしょう。

設計レシピ1 : 全てオンプレミスのリソースを利用する

権威サーバー、キャッシュサーバーをオンプレミスに配置します。オンプレミスのシステムにAWSのリソースを加えるような構成や、オンプレミスからAWSへの移行の初期段階などで採用することがあります。プライベート接続がSPOFになってしまうというリスクがあるので、プライベート接続の冗長化を検討しましょう。

hybrid-dns02

AWSの各インスタンスの名前解決をオンプレミスのキャッシュサーバーに向けるには、/etc/resolv.confなどホストごとの設定ではなくVPCのDHCPオプションで設定することに注意しましょう。

設計レシピ2 : AWSにキャッシュサーバーを構成する

レシピ1と同じくオンプレミスの権威サーバー、キャッシュサーバーに加え、AWS側にもキャッシュサーバーを追加する構成です。

hybrid-dns04

TTLの間であればキャッシュサーバーがキャッシュを保持するため、プライベート接続のダウンタイムが許容できます。キャッシュサーバーでルートヒントもしくは条件付きフォワーダの設定が必要なので、EC2インスタンスもしくはDirectory Service Microsoft ADを利用します。

設計レシピ3 : EC2 or Directory Service Microsoft ADを利用する

DNS構成のメインをAWSにするパターンです。権威サーバー、キャッシュサーバーをEC2もしくはDirectory Service Microsoft ADで構成します。

hybrid-dns06

Directory Service Simple ADは任意のゾーン/レコードが登録できないので、Active Directoryのみ利用するケースに限られるでしょう。DNSサーバーの冗長性の考え方は、オンプレミスの場合と特に変わりません。EC2でプライマリ/セカンダリサーバーを構成することができますし、Directory Serviceでは最初から2ノードでインスタンスが構成されます。

また、オンプレミスのキャッシュサーバーは必須ではありません。オンプレミスのサーバーからAWSのキャッシュサーバーを直接参照しても構いません。レシピ1と同様プライベート接続がSPOFになることに注意します。

設計レシピ4 : Route 53 Private Hosted Zone + Amazon DNSを利用する

レシピ3と同じくDNS構成のメインをAWSにしつつ、マネージドサービスに倒した構成です *4

hybrid-dns03

Amazon DNSがVPC専用のため、オンプレミスからのリクエストに応答しません。そこで、EC2またはDirectory Serviceでキャッシュサーバーを構成し、オンプレミスのサーバーはこちらを向くように設定します。EC2キャッシュサーバーでは、Amazon DNSへの回送(フォワード)を設定しましょう。オンプレミスにキャッシュサーバーを構成する場合(下図)も、回送する経路は同様です。

hybrid-dns05

また、この組み合わせでは内部ルートDNSが構成できないので、他のレシピを利用することになります。

設計レシピ5 : オンプレミスとAWSの権威サーバーを併用する

権威サーバーを両方に配置し、権威サーバー間でゾーン委譲を構成します。それぞれでActive Directoryドメインを構成するケースなどが当てはまりますね。AWS側はRoute 53 Private Hosted Zoneがゾーン委譲に対応していないので選択肢から外れ、EC2もしくはDirectory Service Microsoft ADを検討します。

hybrid-dns07

階層関係でないドメインを別々に作る場合は、キャッシュサーバーのフォワード設定で調整しても良いでしょう。プライマリー/セカンダリーサーバーをオンプレミスとAWSでまたいで構成するのもアリです。

まとめ

AWSハイブリッド構成でのDNS設計についてあれこれ紹介しました。オンプレミスのDNSの設計とさほど変わらないのですが、マネージドサービスの制約に気をつけつつ、うまく組み合わせていけると良いですね。

参考URL

脚注

  1. AWSの専用線サービスであるAWS Direct Connectを利用
  2. VPNはAmazon VPCの機能やEC2でのソフトウェアVPNを利用
  3. Private IP(VPC内のIP)のみ、Public IP/Elastic IPは指定不可で自動割り当て
  4. Directory Service Microsoft ADもマネージドサービスですが(^^;)