ニフクラ ブログ

ニフクラやクラウドの技術について、エンジニアが語るブログです。

AWS Client VPNとニフクラ拠点間VPNゲートウェイ(IPsec-VTI)を組み合わせたマルチクラウド構成を組んでみた

こんにちは、ニフクラ技術支援チームです。

今回はAWS Client VPNを利用しているAmazon Web Services(以後AWS)環境とニフクラ環境を、ニフクラの拠点間VPNゲートウェイを使って接続するサイト間VPN(Site-To-Site)の構成を組んでみましたのでご紹介します。

本構成は、クライアント端末からAWSのクライアントVPNエンドポイント・Amazon Virtual Private Cloud・IPSec VTIを経由し、ニフクラのネットワーク に接続可能な構成となります。

構成イメージ

f:id:TechnicalAccountEngineer:20210605001238p:plain
構成イメージ

ニフクラの拠点間VPNゲートウェイでIPSec VTIを利用することで、拠点間VPNゲートウェイの接続しているプライベートLANとは異なるプライベートLANにも接続が可能になります。VTI接続に関して以下のブログも参考にしてみてください。 VPNゲートウェイでVTIを使ったVPN接続方法

前提条件

本ブログ記事は、以下の前提知識がある方を想定しています。

  • AWSの基本的な操作、サービスに関する知識
  • ニフクラの基本的な操作と知識
  • ルーティングに関する知識

利用リソース

検証に利用したリソースは以下の通りです。

AWSリソース(表中のリンクは他社サイトへのリンクです。)

リソース 数量 備考
Amazon Virtual Private Cloud
1
サブネット
1
ルートテーブル
1
AWS Certificate Manager(証明書)
2 サーバー証明書、クライアント証明書
カスタマーゲートウェイ
1
仮想プライベートゲートウェイ
1
サイト間のVPN接続
1
クライアントVPNエンドポイント
1
セキュリティグループ
1 クライアントVPNエンドポイントに適用する

ニフクラリソース

リソース 数量 備考
ファイアウォール 2 拠点間VPNゲートウェイ用、サーバー用
プライベートLAN 2
ルーター 1
ルートテーブル 2 拠点間VPNゲートウェイ用、ルーター用
拠点間VPNゲートウェイ 1
サーバー 1
カスタマーゲートウェイ 1
VPCコネクション 1

事前準備

AWS環境準備

ここでは赤枠の範囲のリソースを作成します。

f:id:TechnicalAccountEngineer:20210605001334p:plain
AWS環境準備範囲

(1) Amazon Virtual Private Cloud作成
AWS内に分離されたネットワーク領域を作成するためにAmazon Virtual Private Cloudを作成します。

作成方法は以下ヘルプサイトを参照ください。
VPC を作成する(他社サイトへのリンクです)

項目名
名前タグ vpc01-vpc
IPv4 CIDR ブロック 192.168.0.0/16

(2) サブネット作成
VPC内にCIDRブロックで分割したネットワークを構築するためにサブネットを作成します。

作成方法は以下ヘルプサイトを参照ください。
VPC でサブネットを作成する(他社サイトへのリンクです)

項目名
VPC ID vpc01-vpc
サブネット名 vpc01-subnet
IPv4 CIDR ブロック 192.168.10.0/24

ニフクラ環境準備

ここでは赤枠の範囲のリソースを作成します。

f:id:TechnicalAccountEngineer:20210605001407p:plain
ニフクラ環境準備

(3) プライベートLAN作成
拠点間VPNゲートウェイが接続されるプライベートLANと、ルーターを経由して接続する別セグメントのプライベートLANを作成します。
作成方法は以下ヘルプサイトを参照ください。
クラウドヘルプ(プライベートLAN:基本情報)

プライベートLAN名 CIDR
VPNLAN01 172.16.1.0/24
VPNLAN02 172.16.2.0/24

(4) ファイアウォール作成
拠点間VPNゲートウェイ(FWVPN01)用と、アクセスサーバー(FWVPN02)用の2つのファイアウォールを作成します。
また、今回はAWS側クライアントVPNエンドポイントからTera Termでの通信となるため通信が可能になるように設定します。
※アクセス先サーバー用ファイアウォールには、クライアント端末がSSH接続できるよう設定します。接続元IPには、後続の手順で作成するクライアントVPNエンドポイントで使用するIP帯を指定します。
※拠点間VPNゲートウェイ用ファイアウォールは、IPSec VTI接続に必要となるIPとポートを開放します。
作成方法は以下ヘルプサイトを参照ください。
クラウドヘルプ(ファイアウォールグループの新規作成)

項目名
ファイアウォール名 FWVPN01
INルール UDP500:192.168.0.0/16 , UDP4500:192.168.0.0/16
項目名
ファイアウォール名 FWVPN02
INルール TCP22:192.168.0.0/16

(5) ルーター作成
VPNLAN01とVPNLAN02を繋ぐために以下の設定を行います。
作成方法は以下ヘルプサイトを参照ください。
クラウドヘルプ(ルーター:作成)

接続先ネットワーク名 IPアドレス
VPNLAN01 172.16.1.10
VPNLAN02 172.16.2.10

(6) ルートテーブル作成
ニフクラのプライベートLAN同士のルーティングとAWSに向けたルーティングを設定します。
作成後、(5)で作成したルーターをルートテーブルと紐づけます。
作成方法は以下ヘルプサイトを参照ください。
クラウドヘルプ(ルーター:ルートテーブル作成)

デスティネーション ターゲット
172.16.1.1 VPNLAN01
172.16.2.1 VPNLAN02
192.168.0.0/16 172.16.1.2

(7) サーバー作成
クライアントが接続するサーバーをプライベートLAN(VPNLAN02)上に作成します。
作成方法は以下ヘルプサイトを参照ください。
クラウドヘルプ(サーバーの作成)

項目名
OSタイプ RHEL8.3
項目名
サーバー名 ClientVPNTEST01
ファイアウォール FWVPN02
グローバル 自動割り当て
プライベート VPNLAN02

作成後にサーバーOSでスタティックルートを設定します。

項目名
デスティネーション 192.168.10.0
ネットマスク 255.255.255.0
ゲートウェイ 172.16.2.10

VPN環境構築

AWS Client VPN構築

ここでは赤枠の範囲のリソースを作成します。

f:id:TechnicalAccountEngineer:20210605001459p:plain
AWS Client VPN構築範囲

(1) AWS Certificate Manager(証明書)インポート
AWS Certificate Managerや自己署名証明でサーバー証明書とクライアント証明書を発行後、それぞれをAWS Certificate Managerにインポートします。
作成方法は以下ヘルプサイトを参照ください。
プライベート CA の作成(他社サイトへのリンクです)
インポート方法は以下ヘルプサイトを参照ください。
証明書のインポート(他社サイトへのリンクです)

(2) セキュリティグループ作成
クライアントVPNエンドポイント用に作成します。
接続先のセグメントのみに通信が出来るように、OUTルールを設定します。
作成方法は以下ヘルプサイトを参照ください。
セキュリティグループを作成する(他社サイトへのリンクです)

項目名
セキュリティグループ名 vpn01-sg
OUTルール SSH:172.16.2.0/24

(3) クライアントVPNエンドポイント作成
AWS Client VPNの接続先となるリソースを作成します。
作成方法は以下ヘルプサイトを参照ください。
クライアント VPN エンドポイントを作成する(他社サイトへのリンクです)

項目名
名前タグ vpn01-client
クライアント IPv4 CIDR 192.168.40.0/22
サーバー証明書 ARN 任意の証明書
認証オプション 相互認証の使用
クライアント証明書 ARN 任意の証明書
クライアント接続の詳細を記録しますか? いいえ
クライアント接続ハンドラを有効化しますか? いいえ
DNSサーバー1 IPアドレス 空欄
DNSサーバー2 IPアドレス 空欄
トランスポートプロトコル UDP
スプリットトンネルを有効にする 無効
VCP ID 空欄
VPNポート 443
セルフサービスポートを有効にする 無効

・関連付け
192.168.10.0/24を持つサブネットとクライアントVPNエンドポイントを関連付けます。

項目名
VPC vpn01-vpc
関連付けるサブネットの選択 vpn01-subnet

・認証
Amazon Web Services(192.168.0.0)とニフクラ(172.16.1.0/24 , 172.16.2.0/24)との通信を受信可能になるように設定します。

項目名
アクセスを有効にする接続先 192.168.0.0/16 , 172.16.1.0/24 ,
172.16.1.0/24
アクセス付与する対象 すべてのユーザーにアクセスを許可する

・ルートテーブル(クライアントVPNエンドポイント)
Amazon Web Services(192.168.0.0)とニフクラ(172.16.1.0/24 , 172.16.2.0/24)への通信が可能になるように設定します。

項目名
ルート送信先 192.168.0.0/16 , 172.16.0.0/16
ターゲットVPCサブネットID vpc01-subnet

(4) AWS VPN Client導入
AWS Client VPN for Desktopをダウンロード後、クライアント環境にインストールします。
クライアントVPNエンドポイントからクライアント設定ファイルをダウンロード後、downloaded-client-config.ovpnをテキストエディタで開き以下を設定します。
作成方法は以下ヘルプサイトを参照ください。
Windows 用 AWS クライアント VPN(他社サイトへのリンクです)

項目名
remote *.cvpn-endpoint~(省略)~.ovpn|
cert clientcert.crt|文末に追加
key clientkey_withpass.key|文末に追加

クラウド間VPN接続構築

ここでは赤枠の範囲のリソースを作成します。

f:id:TechnicalAccountEngineer:20210605001539p:plain
クラウド間VPN接続構築範囲

・ニフクラ環境準備

(5) 拠点間VPNゲートウェイ
AWS側での接続対象となる拠点間VPNゲートウェイを作成します。
作成方法は以下ヘルプサイトを参照ください。
拠点間VPNゲートウェイ:作成
ファイアウォールは作成済みの「FWVPN01」を選択します。

※作成した拠点間VPNGゲートウェイを選択し「ネットワーク」のグローバルIPアドレスに記載されているIPアドレス控え、AWS側仮想プライベートゲートウェイと紐づくカスタマーゲートウェイ設定時に利用します。

基本設定

項目名
拠点間VPNゲートウェイ名 VPNGW
プライベート側ネットワーク VPNLAN1
IPアドレス 空欄
ファイアウォール FWVPN01

f:id:TechnicalAccountEngineer:20210521175345p:plain
拠点間VPNゲートウェイ作成後

・AWS環境準備

(6) カスタマーゲートウェイ作成
ニフクラ側との接続情報を登録するカスタマーゲートウェイを作成します。
作成方法は以下ヘルプサイトを参照ください。
カスタマーゲートウェイを作成する(他社サイトへのリンクです)

項目名
名前 vpn01-cgw01
ルーティング 静的
IPアドレス ニフクラ拠点間VPNゲートウェイのグローバルIPアドレスを設定
Certificate ARN 空欄
Device 空欄

(7) 仮想プライベートゲートウェイ作成
AWS側VPNトンネルのルーターとなる仮想プライベートゲートウェイを作成します。
作成方法は以下ヘルプサイトを参照ください。
仮想プライベートゲートウェイの作成(他社サイトへのリンクです)

f:id:TechnicalAccountEngineer:20210605001622p:plain
仮想プライベートゲートウェイ作成場所

項目名
名前タグ vpn01-vgw
ARN AmazonのデフォルトASN

・VPCにアタッチ
作成されたAmazon Virtual Private Cloudに仮想プライベートゲートウェイをアタッチします。

項目名
VPC vpn01-vpc

(8) ルートテーブル作成
仮想プライベートゲートウェイ(172.16.2.0/24)の通信が行えるように設定します。
作成方法は以下ヘルプサイトを参照ください。
ルートテーブルを操作する(他社サイトへのリンクです)

項目名
名前タグ vpn01-route-table
VPC vpn01-vpc
ルート送信先 172.16.2.0/24
ターゲット vpn01-vgw

⑨サイト間のVPN接続作成
トンネルの構成情報を持つサイト間のVPN接続を作成します。
作成後「設定のダウンロード」から「Generic (汎用)」の設定ファイルをダウンロードして、ニフクラ側で使用します。
作成方法は以下ヘルプサイトを参照ください。
サイト間 VPN 接続の作成(他社サイトへのリンクです)

項目名 備考
名前タグ vpn01-vpnc01
ターゲットゲートウェイ 仮想プライベートゲートウェイ
仮想プライベートゲートウェイ vpn01-vgw
カスタマーゲートウェイ 既存
カスタマーゲートウェイID vpn01-cgw01
ルーティングオプション 静的
静的IPプレフィックス(静的ルート) 192.168.0.0/16 , 172.16.1.0/24 , 172.16.2.0/24
トンネル内線IPバージョン IPv4
ローカルIPv4ネットワークCidr 0.0.0.0/0 下記『※』参照
リモートIPv4ネットワークCidr 0.0.0.0/0 下記『※』参照
トンネル1の内部IPv4 CIDR 空欄
トンネル1の事前共有キー 任意のものを指定
トンネル2の内部IPv4 CIDR 空欄
トンネル2の事前共有キー 任意のものを指定
トンネル1の詳細オプション デフォルトオプションを使用
トンネル2の詳細オプション デフォルトオプションを使用

※ニフクラ拠点間VPNゲートウェイには、ニフクラ側ネットワークの任意のアドレス0.0.0.0/0からカスタマーゲートウェイ先ネットワークの任意のアドレス0.0.0.0/0への通信にIPSecを適用するポリシーが適用されます。また、IKEv1の仕様として両者が提示するセレクタ情報を合わせる必要があるため、AWS側のローカル/リモートIPv4ネットワークCIDRをニフクラ側に合わせる(0.0.0.0/0にする)必要があります。

・ニフクラ環境準備

(10) カスタマーゲートウェイ作成。
ニフクラ拠点間VPNゲートウェイにAWS側のネットワーク情報を持たせるためにカスタマーゲートウェイを作成します。
作成方法は以下ヘルプサイトを参照ください。
拠点間VPNゲートウェイ:カスタマーゲートウェイ作成

項目名 備考
カスタマーゲートウェイ名 VPNCGW
対向機器IPアドレス xxx.xxx.xxx.xxx AWS側トンネル外部IPアドレスを入力
接続方式 IPSec VTI
対向機器LAN側IPアドレス帯 192.168.0.0/16 AWSのVPCアドレス帯を入力
対向機器LAN側IPアドレス 本検証では未入力 指定がない場合は対向機器IPアドレスの値が指定される

(11) VPNコネクション作成
トンネルの構成情報を設定するVPNコネクションを作成します。
設定の際は「サイト間のVPN接続」でダウンロードした、Generic版設定ファイルを参照しながら設定します。
作成方法は以下ヘルプサイトを参照ください。
拠点間VPNゲートウェイ:VPNコネクション作成

Generic版設定値例

項目名 設定値 備考
カスタマーゲートウェイ VPNCGW
接続方式 IPSec VTI
IKEバージョン IKEv1 GenericファイルのIKE versionを参照
暗号化アルゴリズム AES128 GenericファイルのEncryption Algorithmを参照
認証アルゴリズム SHA1 GenericファイルのAuthentication Algorithmを参照
事前共有鍵 xxxx GenericファイルのPre-Shared Keyを参照
IKE lifetime 28800 GenericファイルのLifetimeを参照
ESP lifetime 3600 GenericファイルのLifetimeを参照
DH Group 2 (1024-bit MODP Group) GenericファイルのPerfect Forward Secrecyを参照

f:id:TechnicalAccountEngineer:20210521191302p:plain
VPCコネクション作成後

疎通確認

f:id:TechnicalAccountEngineer:20210605001646p:plain
接続イメージ

AWS VPN Client


ここでは接続イメージのように、『クライアントPC』⇒『AWS クライアントVPNエンドポイント』に接続後、AWS経由で『ニフクラ 別セグメント サーバー』へと接続が可能か検証を実施します。

(1) AWS VPN Clientを起動し「ファイル」>「プロファイルの管理」>「プロファイルを追加」から以下設定を行います。

項目名
表示名 test
VPN設定ファイル 格納場所\downloaded-client-config.ovpn

f:id:TechnicalAccountEngineer:20210517171940p:plainf:id:TechnicalAccountEngineer:20210517172000p:plain
プロファイル設定

(2) 「プロファイルを追加」を選択し、保存されたプロファイルに名前が表示されることを確認後「完了」を選択します。

f:id:TechnicalAccountEngineer:20210517172010p:plainf:id:TechnicalAccountEngineer:20210517182905p:plain
プロファイル設定

(3) 「接続」を選択し「接続済み」が表示されることを確認します。

f:id:TechnicalAccountEngineer:20210517172038p:plainf:id:TechnicalAccountEngineer:20210517172048p:plain
VPN接続

(4) Tera Termを起動後アクセス先サーバーにログイン可能なことを入力後「OK」を選択します。

項目名
ホスト 172.16.2.1

(5) 認証情報を入力後「OK」を入力します

(6) 接続可能なことを確認します

f:id:TechnicalAccountEngineer:20210520141911p:plain
ログイン後

まとめ

クライアントVPN・IPSec VTIを使用したマルチクラウド構成をご紹介しました。

ニフクラ、AWS、オンプレミスを使用したマルチクラウド+ハイブリッドクラウドの構成も可能になり、より柔軟なシステム構築・運用が可能となります。
また、以前紹介した記事で、リモートアクセスVPNゲートウェイで接続先プライベートLANしかアクセスできないという課題がありましたが、今回のような構成でも回避可能です。
リモートアクセスVPNゲートウェイの接続先以外のプライベートLANにアクセスする

本記事がシステム構成検討の際の助けになれば幸いです。
ここまで読んでいただきありがとうございました!

注意事項

  • 本記事に記載されている会社名、製品名等の固有名詞は各社の商号、登録商標または商標です。
  • 本記事の他社サイトへのリンクにつきまして、リンク切れの際はご容赦ください。
  • 本記事で記載した各サービス/ニフクラの機能等は、2021年5月時点の情報です。ご利用の際は、各サービス/ニフクラの機能の最新情報をご確認ください。
  • 本記事の他社サービス利用に関する記載については、ニフクラのサポート対象外となります。ご自身の責任でご利用ください。
  • AWSのVPN機器は、拠点間VPNゲートウェイの「接続確認済み機器またはOS」にありません。そのため本構成はご利用者様の責任でご利用ください。