Database Support Blog

  • AWS
2024.06.14

AWS Client VPNとは?~概要と実装の方法を解説~

クラウド活用の広がりとともに、オンプレミスとクラウドのネットワークをつなぐニーズが年々高まっています。それを実現する手段の一つとして、「VPN」があります。

AWSも「AWS VPN」というVPNソリューションを提供しています。本記事では、そのAWS VPNの一つである「AWS Client VPN」を主題として概要、実装等について解説します。


以前、AWS Site-to-Site VPNに関する解説記事も公開しております。ご興味のある方はぜひそちらもご一読ください。以下記事では、VPNそのものに関する説明も含めて解説しております。

クラウド活用の広がりとともに、オンプレミスとクラウドのネットワークをつなぐニーズが年々高まっています。それを実現する手段の一つとして、「VPN」があります。本記事ではAWS VPNの一つである「AWS Site-to-Site VPN」を主題として概要、実装等について解説します。


AWS環境の構築支援サービスが必要な方はこちら

 アシストの「AWS環境構築支援」とは?

AWS Client VPNの概要

まずはAWS Client VPNの概要について解説します。

AWS Client VPNとは?

AWS Client VPNとは、クライアントベースのマネージドVPNサービスです。AWS Client VPNを利用することで、リモート端末からAWSへのセキュアなプライベート通信を確立できます。


利用するソフトウェア

AWS Client VPNは、VPNを実装するためのソフトウェアとしてOpenVPNを利用します。そのため、実装にあたってはクライアント端末にもOpenVPNベースのVPNソフトウェアを導入する必要があります。
VPN確立時の大まかなイメージは以下のとおりです。

OpenVPNはオープンソースのアプリケーションであり、かつ様々なOSで利用可能です。導入可能なプラットフォームとしては、Windows/MacOS/Linux等の一般業務に利用される主要OSだけでなく、iOSやAndroid等のスマートデバイス搭載のOSもサポートしています。


参考:
https://www.openvpn.jp/introduction/


AWS Client VPNの利用メリット

AWS Client VPNを利用するメリットとしては以下の3つが挙げられます。

簡単なセットアップ

簡単な設定で、迅速に利用開始できます。

AWS Client VPNのセットアップにおいては、ルーター等のネットワーク機器を操作する必要がありません。

AWS上のAWS Client VPN関連のリソースと、クライアント端末上の設定のみで完結します。また、実装にあたり証明書の発行が必要になるものの、AWS Certificate Managerというマネージドサービスにインポートすることができるため、証明書の準備および管理の負荷は低いです。


場所を選ばないアクセス

AWS Client VPNを利用することにより、インターネット接続さえあれば、場所を選ばずどこからでもVPCに安全に接続できます。それにより、柔軟な働き方を実現することができます。


低いインフラ運用負荷

インフラ運用をAWSに委ねることができます。

AWS Client VPN実装にあたってはAWS側でVPNエンドポイントを作成します。このエンドポイントはAWSによって管理されます。そのため、VPN接続の利用にあたり、ユーザーはインフラ面での定常運用や障害対応を行う必要がありません。


AWS Site-to-Site VPNとの違い

AWS VPNのもう一つのソリューションとして、AWS Site-to-Site VPNがあります。AWS Client VPNとAWS Site-to-Site VPNそれぞれの特徴を押さえて、どのような違いがあるか理解します。

まず、AWS Site-to-Site VPNは、IPsecというプロトコルの集まりを用いて、VPCと別のネットワーク間をセキュアに接続します。接続には、多くの場合インターネット回線を用います。主な用途は、オンプレミスネットワークとクラウドネットワーク間のセキュアな接続です。


一方、AWS Client VPNは、OpenSSLを用いて、個別のクライアント端末とVPC間をインターネット回線の上でセキュアに接続します。一般的な用途として、外出先や自宅環境から社内LANへのアクセスがあります。


上記も含め、それぞれの特徴を表で表すと以下のとおりです。

項目 AWS Client VPN AWS Site-to-Site VPN
利用する技術 OpenSSL IPsec
基盤ネットワーク インターネット インターネット、閉域網
接続 クライアントとネットワーク拠点間 ネットワーク拠点同士
用途 リモート端末から社内LANへのアクセス 拠点間のセキュアなネットワーク接続

AWS Client VPNの設定方法

AWS Client VPNの構成要素

本項では、AWS Client VPNで接続を確立するための主要な構成要素を解説します。

①Client VPNエンドポイント

クライアントとのVPNセッションを確立するためのリソースです。クライアントからのVPN接続は、Client VPNエンドポイントで終端します。


②ターゲットネットワーク

クライアントから見た時の、クライアントVPNの確立ターゲットとなるネットワークです。設定する単位はVPCのサブネットです。

ターゲットネットワークとのクライアントVPNを確立した後、接続元クライアントの通信はターゲットネットワークに設定されたサブネットCIDRでソースNATされます。そのため、通信先と疎通する際には、通信先からは「ターゲットネットワーク内のIPアドレスからの通信」に見えます。

高可用性を実現するため、AZの異なる複数のサブネットを指定することができます。


③クライアントCIDR

ターゲットネットワークと通信する際の、クライアント側に割り当てるCIDRです。このCIDRは、ターゲットネットワークのCIDRとの重複は避ける必要があります。接続元端末のプライベートIPのCIDR範囲との重複は考慮する必要はありません。


④ルートテーブル

ターゲットネットワークが利用するルートテーブルです。最終的に通信したい対象が、クライアントVPN確立先のVPCだけであれば自動設定される設定内容のままで問題ありません。


⑤承認ルール

IDプロバイダーによる認証を用いた構成を取る場合のみ必要になる設定です。この承認ルールにて許可されたIdPに属するユーザーのみが、AWS Client VPNによる接続を許可されます。


その他のオンプレミスネットワーク等とも通信したい場合、そのネットワークへ到達するためのルーティング設定をする必要があります。


AWS Client VPNの設定手順

設定する構成の全体像は以下です。

手順の前提

以降の手順は、以下を前提として行います。

証明書発行ソフト:OpenRSA
VPNクライアントソフト:AWS Client VPNクライアント
クライアント端末OS:Windows
AWS設定リージョン:ap-northeast-1(東京リージョン)


事前準備

接続元端末側、およびAWS側それぞれで必要な事前準備を行います。

1. クライアント端末側での準備

VPN接続元となるクライアント端末にて、以下を実施します。目的と合わせてご案内します。


インターネットアクセス可能なクライアント端末の準備

AWS Client VPNによるVPNはインターネット通信を基に接続を確立します。
そのため、インターネットアクセス可能なクライアント端末を用意します。


ClientVPNクライアントソフトのインストール

AWS側の設定完了後、ClientVPN側からVPN接続を確立するために使用します。
以下からダウンロードし、接続元クライアントでインストールしてください。

https://aws.amazon.com/jp/vpn/client-vpn-download/

EasyRSAのダウンロードと展開(インストール)

今回のリモートアクセスVPNを実装するために必要な証明書を構成するために使用します。
なお、証明書の作成はクライアント端末で実施する必要はありません。SSL証明書を発行できるサーバーが存在する場合、そちらで作成いただいても問題ありません。

EasyRSAは以下からダウンロードできます。
https://github.com/OpenVPN/easy-rsa/releases

上記サイトから「EasyRSA-{バージョン名}-win64(※).zip」のファイルをダウンロードし、ファイルを展開してください。
※Windowsのbit数によって適宜読み替えてください。

AWS CLIのインストール

作成した証明書を、AWS Certificate Managerにアップロードするために使用します。

インストール手順は以下をご確認ください。
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
※本手順はAWS環境に対する設定のため、インターネットアクセスが可能な環境であればどこで実行しても問題ありません。


2.AWS側の準備

AWS側では、以下を準備します。

VPN接続先VPC作成

最終的なVPN接続先となるVPCを作成します。

以下設定で作成しておきます。

VPC名:cvpn-vpc

CIDR:10.255.0.0/16


サブネット作成

以下2つのサブネットを作成します。

・AWS Client VPNのターゲット用
 サブネット名:cvpn-target-subnet
 CIDR:10.255.255.0/24

・疎通確認用サーバー配置用
 サブネット名:server-subnet
 CIDR:10.255.1.0/24


セキュリティグループ作成

以下を許可するセキュリティグループを作成します。VPN確立後、pingで疎通確認を行うためのルールです。

セキュリティグループ名:icmp-sg
VPC:cvpn-vpc
インバウンドルール:
 プロトコル:すべてのICMP-IPv4
 送信元:0.0.0.0/0


疎通確認用サーバー作成

VPN接続確立後、クライアント端末からの疎通確認先となるサーバーを作成します。

今回はプライベートIPでの疎通が可能であることをpingコマンドで確認するため、上記で準備した「icmp-sg」をアタッチしておきます。


CloudWatchロググループの作成

CloudWatch Logsのロググループを以下の名称で作成しておきます。
ロググループ名:/aws/clientvpn
ログストリーム名:connection-log
AWS Client VPNエンドポイント作成時にログ出力先として指定することができます。それにより、VPN確立の際にエラーなどが発生した際、トラブルシューティングすることができます。


ACM権限を持つIAMユーザーのアクセスキーの作成

クライアント端末に、後述の手順を実施するためのIAMユーザーのアクセスキーを作成しておきます。
IAMユーザー名:任意のIAMユーザー名
アタッチするIAMポリシー:AWSCertificateManagerFullAccess

作成手順は必要に応じて以下をご確認ください。
https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_CreateAccessKey


※なお、アクセスキーの管理には十分注意してください。アクセスキーの情報が悪意のあるユーザーに漏洩した場合、アタッチするIAMポリシー権限の範囲でAWS環境が操作可能になります。

 以下に留意してください。
 ・必要最低限のIAMポリシーを設定する
 ・アクセスキーのファイル、および記述されている認証情報が第3者に伝わらないようにする
 ・利用後は速やかに削除する


証明書の準備

1.証明書(サーバー証明書、クライアント証明書)の作成

1.1 EasyRSAをセットアップした上で、VPNの確立に必要な証明書の作成を行います。

実行コマンド ※[EasyRSA展開先フォルダ]は適宜読み替えてください。

C:\Users\xxxx>cd [EasyRSA展開先フォルダ]\EasyRSA-3.1.7-win64\EasyRSA-3.1.7
C:\Users\xxxx>.\EasyRSA-Start.bat   ::EasyRSAの起動
EasyRSA Shell# ./easyrsa init-pki  ::証明書サーバーの初期化 (*)
EasyRSA Shell#./easyrsa build-ca nopass  ::証明書サーバーの構成
EasyRSA Shell#./easyrsa build-server-full server nopass  ::サーバー証明書の発行 (*)
EasyRSA Shell#./easyrsa build-client-full client1.domain.tld nopass  ::クライアント証明書の発行(*)
EasyRSA Shell# exit ::終了

(*)本コマンドは、実行時の確認で「yes」と入力する必要があります。


2.証明書の配置

2.1 クライアント端末内の任意のフォルダに、各種証明書を配置します。ここでは「C:\cert」配下に配置します。

C:\Users\xxxx>mkdir C:\cert
C:\Users\xxxx>copy pki\ca.crt C:\cert
C:\Users\xxxx>copy pki\issued\server.crt C:\cert
C:\Users\xxxx>copy pki\private\server.key C:\cert
C:\Users\xxxx>copy pki\issued\client1.domain.tld.crt C:\cert
C:\Users\xxxx>copy pki\private\client1.domain.tld.key C:\cert
C:\Users\xxxx>cd C:\cert
C:\cert>dir

3.証明書のインポート

3.1 環境変数にアクセスキーID、シークレットアクセスキーIDをセットします。

C:\cert>SET AWS_ACCESS_KEY_ID={アクセスキーID}
C:\cert>SET AWS_SECRET_ACCESS_KEY={シークレットアクセスキーID}

3.2 AWS CLIコマンドを実行し、証明書をAWS Certificate Managerへインポートします。インポートが完了すると、各証明書をAWS Client VPNエンドポイントに割り当てることが可能になります。

C:\cert> aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt
C:\cert> aws acm import-certificate --certificate fileb://client1.domain.tld.crt --private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt

AWS Client VPNエンドポイントの設定

AWS側でVPN接続確立を受け付けるエンドポイントを作成します。


1.VPNエンドポイントの作成

1.1 以下URLにアクセスし、「クライアントVPNエンドポイントを作成」をクリックします。
https://ap-northeast-1.console.aws.amazon.com/vpc/home?region=ap-northeast-1#ClientVPNEndpoints


1.2 作成画面にて、以下のとおり入力し、「クライアント VPNエンドポイントを作成」をクリックします。

名前タグ:任意の名前 ※ここでは「cvpn-endpoint-01」と入力
クライアントIPv4 CIDR:10.0.0.0/16
サーバー証明書:「server」という名称のものを選択 ※「証明書のインポート」手順でインポートしたもの
認証オプション:「相互認証を使用」にチェック
クライアント証明書ARN:「Client1.domain.tld」という名称のものを選択 ※「証明書のインポート」手順でインポートしたもの
クライアント接続のログ記録を詳細化:有効にする
CloudWatch Logsのロググループ:/aws/clientvpn
CloudWatch Logsのログストリーム名:connection-log
VPCID:cvpn-vpn
セキュリティグループ:icmp-sg

その他項目はデフォルトで問題ありません。

2.ターゲットネットワークの関連付け

クライアントからみた接続先ネットワークとなるVPCのサブネットを接続先ターゲットとして設定します。


2.1 作成したAWS Client VPNエンドポイントの「ターゲットネットワークの関連付け」タブ-「ターゲットネットワークを関連付ける」をクリックします。

2.2 以下のとおり指定し、「ターゲットネットワークを関連付ける」をクリックします。
VPC:cvpn-vpc
関連付けるサブネットを選択:cvpn-target-subnet

この設定の完了と共に、ターゲットネットワークへのルーティングが自動設定されます。

なお、ターゲットネットワークのネクストホップへルーティングを行いたい場合は、主導で任意のルーティングを設定しておく必要があります。
例:0.0.0.0/0宛をプロキシサーバーにルーティングする


3.承認ルールの作成

クライアントからの接続を許可するために、承認ルールの設定を行います。


3.1 作成したAWS Client VPNエンドポイントの「承認ルール」タブ-「認証ルールを追加」をクリックします。


3.2 以下のとおり設定し、「認証ルールを追加」をクリックします。
アクセスを有効にする送信先ネットワーク:10.255.0.0/16


4.設定ファイルのダウンロード

クライアント端末で使用するクライアント設定ファイルをダウンロードします。


4.1 AWS Client VPNエンドポイントの詳細画面から、「クライアント設定をダウンロード」をクリックします。ダウンロードされるファイルのファイル名は「downloaded-client-config.ovpn」です。

4.2 ダウンロードした設定ファイルを開き、「</ca>」と「reneg-sec 0」の間にクライアント証明書およびその秘密鍵の配置場所を示す2行を追加します。編集完了後、設定ファイルをクライアント端末の任意のフォルダに配置しておきます。

cert C:\\cert\\client1.domain.tld.crt
key C:\\cert\\client1.domain.tld.key

最終的な設定ファイル内のテキスト情報は以下のとおりです。
※表示の関係上「<>」を全角表記していますが、実際には半角で表記されています。

client
dev tun
proto udp
remote cvpn-endpoint-0e27392327a2bd857.prod.clientvpn.ap-northeast-1.amazonaws.com 443
remote-random-hostname
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
verb 3
<ca>
-----BEGIN CERTIFICATE-----
[認証情報のため割愛]
-----END CERTIFICATE-----
</ca>
cert C:\\cert\\client1.domain.tld.crt
key C:\\cert\\client1.domain.tld.key
reneg-sec 0
verify-x509-name server name

以上で、接続が成功するための設定作業は終了です。


クライアント端末からのVPN接続確立

最後にクライアント端末からの接続確認を行います。


1.VPN接続確立

1.1 デスクトップ上のAWS Client VPNクライアントをダブルクリックして起動します。

以下のコンソールが表示されます。

1.2 「ファイル」-「プロファイルを管理」の順にクリックします。

1.3 「プロファイルを追加」をクリックします。

1.4 以下のとおり入力し、「プロファイルを追加」をクリックします。「3 設定ファイルのダウンロード」で用意した設定ファイルを選択します。


1.5 「接続準備完了」と表示されたら、「接続」をクリックします。

1.6 数秒経過後、「接続済み」と表示されることを確認します。これで、プライベートIPでの通信が可能となります。

2.接続確認

2.1 コマンドプロンプトを起動し、接続確認用サーバーに対してpingを実行します。

C:\cert>ping 10.255.1.125
10.255.1.125 に ping を送信しています 32 バイトのデータ:
10.255.1.125 からの応答: バイト数 =32 時間 =4ms TTL=126
10.255.1.125 からの応答: バイト数 =32 時間 =4ms TTL=126
10.255.1.125 からの応答: バイト数 =32 時間 =4ms TTL=126
10.255.1.125 からの応答: バイト数 =32 時間 =4ms TTL=126
10.255.1.125 の ping 統計:
    パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
    最小 = 4ms、最大 = 4ms、平均 = 4ms

無事、通信できていることが確認できました。

AWS Client VPNの設定手順のご案内は以上です。


AWS Client VPNの料金

最後に、AWS Client VPNの料金について解説します。

AWS Client VPNの課金要素

AWS Client VPNの課金要素は以下の2つです。

項目単価
AWS Client VPNエンドポイントの関連付けUSD 0.15/時間
※関連付けるサブネット一つあたり
AWS Client VPN 接続USD 0.05/時間

料金の例

前提

・エンドポイントに2つサブネットを関連付け。
 関連付け時間は合計1460時間(1関連付けあたり730時間×2)とする。
・接続時間の合計は600時間/月。(10台のクライアント端末×各3時間の接続×20日の想定)
・東京リージョン利用
・1USD=155円で計算


項目単価(USD)数量(時間)料金(USD)料金(円)
関連付け0.151460$219\33,945
接続0.05600$30\4,650
合計\38,595

参考:AWS VPN の料金
https://aws.amazon.com/jp/vpn/pricing/


最後に

ここまでで、AWS Client VPNの概要、特徴、実装例、料金について解説しました。

本記事を通して、AWS Client VPNの基本を理解いただき、よりよいクラウドネットワーク構成の検討につなげていただければ幸いです。

なお、弊社でも、AWS Client VPNを含むAWSネットワークの設計および実装のご支援が可能です。セキュアなリモートワークを実現したい等のご要望がありましたら、ぜひ弊社にご相談ください。


AWS環境の構築支援サービスが必要な方はこちら

 アシストの「AWS環境構築支援」とは?

執筆者情報

さかもと ゆういち プロフィール画像

2017年入社。DWH製品のサポート業務に従事し、2020年頃からクラウド分野を担当。AWS関連の提案活動から技術支援、セミナー登壇等幅広く対応。それらの活動が認められ、 2021年にアシストで初めて「APN AWS Top Engineers」 に選出される。週末は「雰囲気がいいから」という理由で購入したレコードプレーヤーで音楽を聞くが、音質の違いは一切わからない。...show more


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • AWS
2024.11.01

AWS Builder IDを使用したAWS Skill Builderのログイン方法

この記事では 、AWS Skill Builder のログイン手段として代表的なAWS Builder IDを使用した AWS Skill Builderへのログイン方法についてご紹介します。

  • AWS
2024.08.26

AWS IAM Identity Centerとは?~概要と実装の方法を解説~

AWS IAM Identity Centerを利用することで、AWSアカウントやアプリケーションをアクセス先とするIDアクセス制御を一元的に管理できます。本記事では、役割が似ているAWS Identity and Access Management(IAM)との違いも含めて概要や設定例を解説します。

  • AWS
2024.07.12

AWS Direct Connectとは?~概要と実装の方法を解説~

AWSの活用が進んでいる昨今、AWSとオンプレミス間の通信をセキュアに接続を確立することが求められています。AWS Direct Connectを利用することで、セキュアで安定した品質のプライベート通信を確立できます。本記事では概要から設定の例まで解説します。

ページの先頭へ戻る