Route53で管理するドメインで、別AWSアカウントで稼働するELBの名前解決をする【AWSアカウント統合】

前の投稿で、こちらのWebサイトを運用している「mikolabo.net」のAWSアカウントから、別AWSアカウントであるSofEtherによるVPNを運用しているサイトの名前解決をするやり方を載せました。今回は、普通のサイトではなく、ELB配下にあるNextCloudを運用しているサイトの名前解決を実装します。

前投稿で行ったVPNに対するRoute53に、NextCloudのELBを追加で設定します。
この実装を行ったのは、VPN通信の中でNextCloudの機能にあるWeb会議をやってみたかったからです。
ZOOMでのWeb会議が中国国内の中継ノードを通っているだの、通信ネゴの実装が実話甘かっただの、Web会議中に知らないメンバが勝手に入ってくるだの、問題が発覚していたので、SoftEther内のVPN通信内で、NextCloudでのWeb会議であるTalkを収容する仮想HUBを割り当てて、オンプレミスでセキュアなWeb会議をやってみようと思ったからです。

NextCloudのTalkなる機能は、前提としてSSL通信を実施していないと動いてくれません。
そのため、ELBに「cld.mikolabo.net」用のデジタル証明書を用意して、SSL通信をさせています。
まあ、別サイトで名前解決しなくても良いんですけどね。

ちなみに、WordPressのSSLリダイレクトに良く失敗するんですが、NextCloudのSSLリダイレクトもうまくできないことが多かったんですが、UbuntuのSnapパッケージを使って、実装したらうまくリダイレクトできました。

それではまず、構築したシステムイメージは以下の感じです。

このようなアクセスができるように、[mikolabo.net]ドメインのRoute53と[miko.services]ドメインのRoute53を設定していきます。

設定のミソは、実際のNextClodを運用しているRoute53で、参照元のドメインのゾーン「cld.mikolabo.net 」を作成して、NextCloudを収容しているELBのエイリアスを設定します。そして、生成したゾーンで作成されたNSレコードの内容を参照元のRoute53に設定します。
また、[miko.services]ドメインのELBで「cld.mikolabo.net」のサーバ認証ができるように、[miko.services]ドメインのELBでデジタル証明書を指定します。

以下のようなイメージです。

ちなみに、実際にこのようなアクセスを運用していましたが、現在はNextCloudの運用は破棄してしまいました。

よって、この設定自体は現在ありません。(なので設定の本来秘匿部分をある程度表示しています)

では、設定していきましょう。

 

1.実際の運用をしているサイトのRoute53

 

NextCloudを運用しているサイトのAWS Route53 で、ホストゾーン「cld.mikolabo.net」を登録する。
ちなみに最初はNextCloudが動いているEC2をAレコードで指定しています。(初めからELBを指定するのが難しい)

ホストゾーン cld.mikolabo.net を見る

ホストゾーン cld.mikolabo.net を見る

NSレコードが割り振られた

NSレコードが割り振られた

 

2、ドメイン運用&名前解決しているAWSアカウントのRoute53に、先ほど登録されたネームサーバを登録する

cld.mikolabo.net のNSレコードを定義

cld.mikolabo.net のNSレコードを定義

前の投稿でやっているので、内容だけ見てます。

3.AWS Certificate Manager (ACM) で、AWSプラットフォームのデジタル証明書の発行を要求する

 

必要なドメインcld.mikolabo.netだけリクエスト

必要なドメインcld.mikolabo.netだけリクエスト

Route53 で購入したドメインだから、DNS検証のほうが簡単

タグを追加

タグを追加

「確認とリクエスト」をクリック

「確認とリクエスト」をクリック

証明書がリクエストされて、検証保留中になった

証明書がリクエストされて、検証保留中になった


ここで、Route53で必要なCNAMEレコードを追加できる

「作成」をクリック

「作成」をクリック

レコード追加されたが、検証保留中なので待機します

レコード追加されたが、検証保留中なので待機します

デジタル証明書が発行済みとなりました

デジタル証明書が発行済みとなりました

 

4.ロードバランシングするためのサブネットを新たに追加

VPCダッシュボードで、「サブネット」→「サブネットを作成」をクリック

VPCダッシュボードで、「サブネット」→「サブネットを作成」をクリック

  • 名前タグを既存サブネット名を参考に設定
  • VPCは「1個のパブリックを持つVPC」で作成しているので、既存VPCを設定
  • ロードバランシングするので、既存VPCとは異なったアベイラビリティゾーンを指定
  • ロードバランシングするので、既存サブネットとは別のネットアドレスを持つCIDRを設定
  • 「作成」をクリック

サブネットが作成された

サブネットが作成された

作成したサブネットを、既存ルートテーブルに関係付けします

作成したサブネットを、既存ルートテーブルに関係付けします

「ルートテーブル」の「サブネットの関係付け」で、「編集」をクリック

追加したサブネットに対して、関係付けのチェックを入れて、「保存」をクリック

追加したサブネットに対して、関係付けのチェックを入れて、「保存」をクリック

両方のサブネットとも、ルートテーブルに関係付けられました

両方のサブネットとも、ルートテーブルに関係付けられました

ロードバランサーに移行します

ロードバランサーに移行します

 

5.ロードバランサーの作成

「ロードバランサーの作成」をクリック

「ロードバランサーの作成」をクリック

ロードバランサーの種類の選択

ロードバランサーの種類の選択

今回はHTTP および HTTPS トラフィックを使用するウェブアプリケーション用ということで、Application Load Balancerの「作成」をクイック

手順1.ロードバランサーの設定

ステップ1で、まず名前を適当に入力
(アンダーバーはダメ、登録時に怒られる)スキーマは「インターネット向け」を選択IPアドレスタイプは「ipv4」を選択リスナーでは「HTTP」の80番ポートと
「リスナーの追加」で「HTTPS」の443番ポートをあけておく アベイラビリティーゾーンでは2つ以上選択しなくてはいけないが、ロードバランサーと自分のサーバーを接続できるよう同じVPCを指定「セキュリティ設定の構成」をクリック

手順2:セキュリティ設定の構成

説明書タイプは「ACMから説明書を選択する」を選択

証明書の名前で先ほど発行した証明書を選択

セキュリティポリシーはそのまま

「セキュリティグループの設定」をクリック

手順3:セキュリティグループの設定

「新しいセキュリティグループを選択する」
からセキュリティグループを設定最低限、22(SSH)と80番(HTTP)と443番(HTTPS)ポートを開ける

手順4:ルーティングの設定

手順5ターゲットの登録

ポート=80で「登録済みに追加」をクリック
さらにポート=443にして「登録済みに追加」をクリック
一覧リストに追加され、ポート=80と443と2つ並びます

登録済みターゲットに、ポート=80と443が追加されたら
「次の手順:確認」をクリック

手順6:確認

Route 53でドメイン名とELBとの関連付け

 Route53ダッシュボードから「ホストゾーン」をクリック

Route53ダッシュボードから「ホストゾーン」をクリック

使用ドメイン(cld.maikolabo.net)をクリック

使用ドメイン(cld.maikolabo.net)をクリック

使用ドメイン(cld.maikolabo.net)のAレコードを変更する

使用ドメイン(cld.maikolabo.net)のAレコードを変更する

ELBへのエイリアスを指定する

ELBへのエイリアスを指定する

ELBへのエイリアスレコードが登録された

ELBへのエイリアスレコードが登録された

Route53に逆引きするためのホストゾーンを作成

Route53に逆引きするためのホストゾーンを作成

逆引きホストゾーンを設定

逆引きホストゾーンを設定

ゾーン作成でNS、SOAレコードが作成された。「レコードを作成」をクリック。

ゾーン作成でNS、SOAレコードが作成された。「レコードを作成」をクリック。

 

AWS TIPS はこちら!