はじめに
こんにちは。ソリューションアーキテクトの嶋田です。
ここ数年で、在宅勤務やワーケーションといった言葉が一般的になり、従業員がこのような働き方をできるように対応したいと考えている企業の方も多いのではないでしょうか。オフィス以外の場所から社内のリソースにアクセスすることを考えると、通信の安全性を確保する必要があります。また、既に利用しているクライアントアプリケーションによっては、特定のプライベートなドメイン名で アクセスしたいといった要望もあるかもしれません。
家や出先などから社内へのリソースに安全にアクセスするには VPN 接続を利用します。AWS では AWS Client VPN (以降、Client VPN) を使うことで、個々のデバイスからの VPN 接続を行うことができます。また、プライベートなカスタム DNS ドメイン名でリソースにアクセスする際は、 Amazon Route 53 プライベートホストゾーン (以降、プライベートホストゾーン) が利用できます。
この記事では、これら 2 つのサービスを使って、AWS クラウド上のプライベートサブネット内にある EC2 インスタンスに対して、デバイスから VPN 接続をし、あらかじめ定めたプライベートなカスタム DNS ドメイン名でインスタンスにアクセスする方法とその実装手順を紹介します。
関連記事として「Client VPN を使用してプライベートホストゾーンのリソースレコードを解決する方法を教えてください。」がありますが、こちらは一部の設定項目しか記載されていません。そこで今回は AWS 上に Amazon Elastic Compute Cloud (以降、EC2) を用意してから、Client VPN を経由して、カスタム DNS ドメイン名でアクセスするまでの一連の流れを紹介します。このような構成を検討していらっしゃる方は、是非この記事を読みながら実装の流れを把握していただければと思います。
ちなみに、ホットなニュースとして、2023 年 10 月 16 日より Client VPN が大阪リージョンでもご利用いただけるようになりました ! 今回の実装では東京リージョンを使用しますが、利用可能なリージョンが増えた Client VPN はこれからも注目です !
ご注意
本記事で紹介する AWS サービスを起動する際には、料金がかかります。builders.flash メールメンバー特典の、クラウドレシピ向けクレジットコードプレゼントの入手をお勧めします。
builders.flash メールメンバー登録
1. アーキテクチャ解説
2. 実装手順
大まかな実装の流れは以下の3ステップです。
- ステップ 1 . 実行環境の作成と Client VPN の設定
- ステップ 2. プライベートホストゾーンの作成とレコードの登録
- ステップ 3. DNS に関するの設定項目の変更
なお、このサンプルは東京リージョンを使用して行っています。
2-1. ステップ 1. 実行環境の作成と Client VPN の設定
まずは EC2 や VPC などの実行環境と Client VPN の設定を行います。この手順については、「AWS Client VPN Basic ハンズオン」に詳しく書かれています。そのため、こちらの資料の「03. ハンズオン」の「共通設定」から「パターン 1 相互認証 (証明書ベース) 」までを参考に、Client VPN の設定を行なってください。
ここまでで、図5 の赤枠で囲われた部分のリソースが作成され、Client VPN で VPN 接続をしながら、 プライベート IP アドレスによる EC2 へのアクセスが可能になりました。
図 5

2-2. ステップ 2. プライベートホストゾーンの作成とレコードの登録
続いて、カスタム DNS ドメイン名で名前解決を行うために、プライベートホストゾーンを作成し、そこへレコードを登録します。このステップにより、図 6 の赤枠部分のプライベートホストゾーンが作成されます。

プライベートホストゾーンの作成
まずはプライベートホストゾーンを作成します。
1. Route 53 の管理コンソールで、左側の選択肢から「ホストゾーン」を選択し、「ホストゾーンの作成」というボタンをクリックします。

ホストゾーンの作成
2. 以下の内容を設定し、「ホストゾーンの作成」をクリックします。
ドメイン名 : example.com
タイプ : プライベートホストゾーン
ホストゾーンに関連づける VPC
リージョン : 東京
VPC ID : 作成した VPC (cvpn-hands-on)
リージョン : 東京
VPC ID : 作成した VPC (cvpn-hands-on)
「ホストゾーンに関連づける VPC」の欄で VPC を指定することで、指定した VPC の Route 53 Resolver が、作成するホストゾーンを利用できるようになります。
「ホストゾーンに関連づける VPC」の欄で VPC を指定することで、指定した VPC の Route 53 Resolver が、作成するホストゾーンを利用できるようになります。

確認
3. ホストゾーンが正常に作成されたことを確認します。

レコードの登録
続いて、作成したホストゾーンに、レコードを登録します。
「レコードを作成」をクリックします。

2-3. ステップ 3. DNS に関するの設定項目の変更
いよいよ最後のステップです。Route 53 Resolver で名前解決ができるよう、DNS に関する設定の変更を行います。変更する項目は以下の 2 点です。
VPC の「DNS 解決」と「DNS ホスト名」の有効化
Client VPN エンドポイントに DNS サーバーの IP アドレスを登録
これにより、Client VPN エンドポイントに来た名前解決要求は Route 53 Resolver に渡され、名前解決されるようになります (図7)。

利用中の VPC を選択
1. VPC の管理コンソールで左側の選択肢から「お使いの VPC」を選択します。

VPC の設定を編集
作成した VPC 名 (cvpn-hands-on) の左側のチェックボックスにチェックを入れ、右上の「アクション」をクリックし、「VPC の設定を編集」を選択します。

DNS 設定
3. 「DNS 設定」の「DNS 解決を有効化」と「DNS ホスト名を有効化」の両方にチェックを入れて、「保存」をクリックします。

確認
正常に変更されたことを確認します。

Client VPN エンドポイントに DNS サーバーの IP アドレスを登録
現状の設定だと、クライアントから発行された DNS クエリは Client VPN エンドポイントに到達しますが、Client VPN エンドポイントはそのクエリの転送先となる DNS サーバーがどこにあるのかわからない状態です。そのため、Client VPN エンドポイントの設定から、DNS サーバーの IP アドレスを登録します。
今回、使用する DNS サーバーは VPC にデフォルトで備わっている Route 53 Resolver です。この IP アドレスはデフォルトで VPC IPv4 ネットワーク範囲 + 2 に設定される という特徴があります。
このことより、今回 Client VPN エンドポイントで登録する DNS サーバーの IP アドレスは、VPC のネットワーク範囲 (198.19.0.0/16) に 2 を足した 198.19.0.2 となります。
それでは設定していきます。
クライアント VPN エンドポイントを変更
1. VPN の管理コンソールで左側の選択肢から「クライアント VPN エンドポイント」をクリックします。作成した VPC (cvpn-hands-on) を選択し、右上の「アクション」から「クライアント VPN エンドポイントを変更」を選択します。

設定
2. 「その他のパラメータ - オプション」のセクションで「DNS サーバーを有効化」をオンにし、「DNS サーバー 1 IP アドレス」の欄に 198.19.0.2 と入力します。その後「クライアント VPN エンドポイントを変更」をクリックします。

確認
3. 正常に変更されたことを確認します。
以上で設定は全て完了です!お疲れ様でした。

3. 疎通確認
それでは実際にカスタム DNS ドメイン名でアクセスできるのかテストしてみましょう。
AWS Client VPN Basic ハンズオンの「03. ハンズオン / パターン 1 相互認証 (証明書ベース) / VPN 接続」を参考に VPN 接続した状態で ping server1.example.com を実行します。正常にレスポンスが返って来れば成功です!
ping コマンドを実行
コマンド
% ping server1.example.com
PING server1.example.com (198.19.1.53): 56 data bytes
64 bytes from 198.19.1.53: icmp_seq=0 ttl=126 time=13.429 ms
64 bytes from 198.19.1.53: icmp_seq=1 ttl=126 time=12.508 ms
64 bytes from 198.19.1.53: icmp_seq=2 ttl=126 time=13.851 ms
ping コマンドのレスポンスがない場合
もし、 ping コマンドのレスポンスがない場合、 EC2 のセキュリティグループで、インバウンドルールにカスタム ICMP - IPv4:エコー要求が許可されているか確認してみてください。

4. まとめ
筆者プロフィール
嶋田 朱里 (しまだ あかり)
アマゾン ウェブ サービス ジャパン合同会社 ソリューションアーキテクト
2023 年 4 月入社のソリューションアーキテクト。お客様のビジネスの成長を技術面からサポートできるソリューションアーキテクトを目指して、日々勉強中。深夜ラジオとラグビー観戦が大好きです。
