皆さま、こんにちは!y.takanashiです。
ここ最近、OCIは他のクラウドサービスとの相互運用性を重視し、マルチクラウド環境の構築を推進しております。
そこで今回は、AWSとOCI間でVPNを使用した接続方法について検証してみましたので、その結果を皆様にご紹介します。
目次
今回の検証の構成
以下は、今回の検証の構成図です。
今回の検証の手順として、
1.両クラウド間でのVPN接続を設定
↓
2.疎通確認のためのルート・ルール追加等の事前準備
↓
3.両サーバ間の疎通確認および1GBのダミーファイルを使用した転送時間の計測を実行
と行った流れで行います。
※両クラウドのネットワーク・リソースとサーバの作成手順は割愛していますので、自身であらかじめ作成しておきましょう。
また、この記事は個人が検証目的で作成したもので、本番稼働などで設定する際には以下のドキュメントを参考にしてください。
AWS側の設定
一時的カスタマー・ゲートウェイの作成
最初に、OCI側とのVPN接続を確立するために、一時的にカスタマー・ゲートウェイを作成します。
AWSコンソール画面左上にある「サービス」から「ネットワーキングとコンテンツ配信」→「VPC」を選択します。
左側のメニューから「カスタマーゲートウェイ」を選択します。
「カスタマーゲートウェイを作成」から、以下の項目を入力します。
- BGP ASN:31898
※Oracle BGPの番号となっております。 - IPアドレス:任意(ここでは「1.1.1.1」)
- ※後で削除しますので、ここでは適当なIPアドレスで問題ございません。
- デバイス:任意(ここでは「CGW-to-OCI-tmp」)
カスタマー・ゲートウェイが正常に作成された場合は以下のように表示されます。
仮想プライベート・ゲートウェイの作成およびアタッチ
続いて、仮想プライベート・ゲートウェイの作成およびアタッチを行います。
左側のメニューから「仮想プライベートゲートウェイ」を選択します。
「仮想プライベートゲートウェイを作成」から、以下の項目を入力します。
- 名前タグ:任意(ここでは「VPG-to-OCI」)
- 自律システム番号(ASN):Amazonデフォルト ASN
仮想プライベート・ゲートウェイが正常に作成された場合は以下のように表示されます。
仮想プライベート・ゲートウェイの作成後、VPCにアタッチする必要があります。
状態が「Detached」になっていることを確認した後、右上の「アクション」から「VPCへアタッチ」を選択します。
任意のVPC(ここでは「VPC_10.0.0.0/16」)を選択後、「VPCへアタッチ」を行います。
状態が「Attaching」→「Attached」に変更されればアタッチは完了となります。
VPN接続の作成
各種ゲートウェイの設定完了後、VPN接続を作成します。
左側のメニューから「Site-to-Site VPN 接続」を選択します。
「VPN接続を作成する」から、以下の項目を入力します。
- 名前タグ:任意(ここでは「VPN-to-OCI」)
- ターゲットゲートウェイのタイプ:仮想プライベートゲートウェイ
- 仮想プライベートゲートウェイ:「仮想プライベートゲートウェイ」で作成したものを選択
- カスタマーゲートウェイ:「カスタマーゲートウェイ」で作成したものを選択
- ルーティングオプション:動的(BGPが必須)
※その他は全て空白で設定
作成後、状態が「Pending」になります。
構成のダウンロード
VPN接続の作成後、トンネル情報の構成ファイルのダウンロードを行います。
作成したVPNの詳細画面から「設定をダウンロードする」を選択します。
以下の項目を設定後、「ダウンロード」を選択します。
- ベンダー:Generic
- プラットフォーム:Generic
- ソフトウェア:Vendor Agnotic
- IKE バージョン:ikev2
テキスト形式で構成ファイルがダウンロードされますので、任意のテキストファイルで開きます。
IPSec Tunnel #1セクション内に「Pre-Shared Key」という項目がありますので、この設定値を控えておきます。
以下の項目も後ほど使用しますので、こちらも控えておきましょう。
- 仮想プライベート・ゲートウェイのパブリックIPアドレス
- 仮想プライベート・ゲートウェイのプライベートIPアドレス
- カスタマー・ゲートウェイのプライベートIPアドレス
- 仮想プライベート・ゲートウェイのBGP ASN
OCI側の設定
動的ルーティング・ゲートウェイの作成
AWS側の設定が一旦完了しましたので、OCI側の設定に移ります。
最初に動的ルーティング・ゲートウェイの作成を行います。
ナビゲーションメニューから「ネットワーキング」→顧客接続性内の「動的ルーティング・ゲートウェイ」を選択します。
「動的ルーティング・ゲートウェイの作成」から任意の名前を入力して作成を行います。
CPE(顧客構内機器)の作成
続いてCPE(顧客構内機器)を作成し、AWSの設定値を割り当てます。
ナビゲーションメニューから「ネットワーキング」→顧客接続性内の「顧客構内機器」を選択します。
「CPEの作成」から以下の項目を入力します。
- 名前:任意(ここでは「CPE-to-AWS」)
- パブリックIPアドレス:AWSからダウンロードした構成ファイル内にある仮想プライベート・ゲートウェイの外部IPアドレスを入力
- CPEベンダー情報:Other
IPSec接続の作成
CPEの設定後、IPSec接続を作成します。
ナビゲーションメニューから「ネットワーキング」→顧客接続性内の「サイト間VPN」を選択します。
「Create IPSec connection」から以下の項目を入力します。
- 名前:任意(ここでは「IPSec-to-AWS」)
- 顧客構内機器:任意(ここでは「CPE-to-AWS」)
- 動的ルーティング・ゲートウェイ:任意(ここでは「DRG」)
- オンプレミス・ネットワークへのルート:10.0.0.0/16
※AWS側のCIDRを入力 - トンネル1
- 名前:任意(ここでは「Tunnel1」)
- 共有シークレット:構成ファイル内の「Pre-shared Key」に記載の文字列をペースト
- IKEバージョン:IKEv2
- ルーティング・タイプ:BGP動的ルーティング
- BGP ASN:構成ファイル内の「Virtual Private Gateway ASN」に記載の番号をペースト
- IPv4トンネル内インタフェース - CPE:構成ファイル内の「Virtual Private Gateway ASN」に記載のCIDRをペースト
- IPv4トンネル内インタフェース - Oracle:構成ファイル内の「Customer Gateway」に記載のCIDRをペースト
- ※今回は検証目的のため、トンネル2の設定については省略させていただきます。
ライフサイクルの状態が「使用可能」となればIPSec接続の作成は完了となります。
まだAWSとの接続の設定を行っていないので、IPSec Statusの状態は「停止」となっております。
トンネル1のOracle VPN IP addressは後ほど使用しますので控えておきましょう。
AWS側の設定(再度)
カスタマー・ゲートウェイの作成
OCI側の設定が完了後、AWSで再度カスタマー・ゲートウェイの作成を行います。
AWSコンソールのカスタマー・ゲートウェイの詳細画面にある「カスタマーゲートウェイを作成」から以下の項目を入力します。
- BGP ASN:31898
- IPアドレス:先ほど控えたOracle VPN IPアドレスをペースト
- デバイス:任意(ここでは「CGW-to-OCI」)
カスタマー・ゲートウェイの置き換え
作成後、カスタマー・ゲートウェイの置き換えを行います。
作成したVPN接続の詳細画面から「アクション」→「VPN接続を変更」を選択します。
「ターゲットカスタマーゲートウェイ」から、新規作成したゲートウェイに変更後、「変更を保存」を選択します。
変更後、トンネル1のステータスは「Up」となります。
OCI側もIPSec StatusとIPv4 BGP statusがともに「稼働中」となり、AWSとの接続が確立されていることが確認できます。
以上でAWSとOCI間のVPN接続の設定は全て完了となります。
AWSの一時的カスタマー・ゲートウェイは接続完了後に不要となりますので、設定後に削除していただいて構いません。
設定後の検証
事前準備
AWSとOCI間のVPN接続を設定した後、両クラウドに配置したサーバ間での疎通確認および1GBのダミーファイルを使用した転送時間の計測を行います。
AWS側では、VPCにアタッチされているルート・テーブルとサーバにアタッチされているセキュリティ・グループの設定が必要になります。
ルート・テーブルのルールに、送信先にOCI側のCIDR、ターゲットには作成した仮想プライベート・ゲートウェイを追加します。
セキュリティ・グループのインバウンドルールに、OCI接続用のルールを追加します。
OCI側では、VCNのルート表とセキュリティ・リスト(もしくはサーバにアタッチしているネットワーク・セキュリティ・グループ)の設定が必要になります。
ルート表のルールには、送信先にAWS側のCIDR、ターゲットには作成した動的ルーティング・ゲートウェイを追加します。
セキュリティ・リストのインバウンドルールに、AWS接続用のルールを追加します。
疎通確認
事前準備の完了後、pingコマンドを使用して両サーバ間の疎通確認を行います。
以下がAWS→OCIでの疎通確認の結果となります。
以下がOCI→AWSでの疎通確認の結果となります。
このように、VPN接続が確立されている場合、両クラウドに配置されたサーバ間でのping疎通ができることが確認できます。
ダミーファイルを使用した転送時間の確認
続いて両クラウドに配置したサーバ間で、1GBのダミーファイルを使用した転送時間の確認を行います。
この検証ではscpコマンドを使用し、転送時間のばらつきを少なくするために10回程度の検証を実行しております。
結果として、
・AWS→OCI間の1GBのダミーファイルの転送時間は平均16秒
・OCI→AWS間の1GBのダミーファイルの転送時間は平均18秒
となり、わずかではありますが、AWSからOCIへのファイル転送速度が早いことが判明しております。
まとめ
今回の検証については以上となります。
設定は少し複雑ですが、マルチクラウド構成を採用することで、データの移行や転送などを容易に行うことができます。
また、今回の検証で両クラウドの設定は、共にトンネル1のみの構成で冗長化は行っていません。
本番稼働する場合には、運用上の要件やセキュリティ要件等に基づいて、トンネルの冗長化を検討してください。
以上となります。
この記事を通じて読者の皆様の問題解決の一助となれば幸いです。
最後まで読んで頂き、ありがとうございましたm(_ _)m