OCIとAWSでVPN接続をしてみた(マネージドサービス同士で接続)

こんにちは。Oracle Cloud Infrastructure(OCI)特集 編集部です。

以前にOCIとAWSでVPN接続を行うブログを掲載しておりました。
OCIとAWSでVPN接続をしてみた

その際は次のようにVPN接続を中継するサーバを構築して接続していました。
 「AWSのサーバ上のLibreswan」⇔「OCIのVPNサービス」

今回は次のように中継サーバ無しで接続を行います。
 「AWSのVPNサービス」⇔「OCIのVPNサービス」
※OCI側は災害対策とった意味も含め、東京リージョンではなくて 
 大阪リージョンを使用しております。(東京リージョンでも手順は ほぼ変わらないと思います)

参考サイト:
https://www.ateam-oracle.com/oci-to-aws-ipsec-tunnel-using-the-built-in-vpn-service


【作業の流れ】

OCIのVPNサービスは後からCPE(接続先のIP)を変更できないのですが、
AWSは後から接続先IPを変更可能となっております。
よって、作業は大まかに下記の流れで行うこととなります。

1.AWS側のVPNサービスをダミーIPへ接続する形で作成
  ⇒作成時に払い出されるVPN接続元のIPを①とする。
2.OCI側のVPNサービスを①へ接続する形で作成
  ⇒作成時に払い出されるVPN接続元のIPを②とする。
3.AWS側のVPNサービス設定にて、接続先をダミーIPから②に変更

1.AWS側の設定

まずは「VPC」を作成します。
CIDRブロックは「10.1.0.0/16」とします。


「カスタマーゲートウェイ」を作成します。
「IPアドレス」はダミーのIPアドレスとして「1.1.1.1」で設定します。


「仮想プライベートゲートウェイ」を作成します。


作成された仮想プライベートゲートウェイを選択し、「VPCにアタッチ」を選択します。




「サイト間のVPN接続」を作成します。
・前の手順で作成した「仮想プライベートゲートウェイ」
・前の手順で作成した「カスタマーゲートウェイ(ダミーの1.1.1.1)」
を使用し、下記のように設定を行います。
「静的IPプレフィックス」はOCI側のCIDRアドレスとして「10.2.0.0/16」を設定しています。

また、トンネルの詳細設定は下記ページの内容に従っています。
https://docs.oracle.com/en-us/iaas/Content/Network/Reference/supportedIPsecparams.htm


状態は「保留中」と表示されますが、「使用可能」と表示されるまで待ちます。


VPN設定ファイルのダウンロードを行います。


ダウンロードされたテキストファイルを開き、
Tunnel #1の「Pre-Shared Key」「Virtual Private Gateway」をメモしておきます。
下記の画面は表記を伏せていますが、今回の作業においては次の値とします。
Pre-Shared Key:UMWxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Virtual Private Gateway:35.72.xxx.xxx
※テキストファイルの後半には Tunnel #2 の記載があり、似たような情報が記載されているのでご注意ください。


2.OCI側の設定

OCIのコンソール画面より
「ネットワーキング」⇒「仮想クラウド・ネットワーク」を選択し、
VCNを作成します。「CIDRブロック」は「10.2.0.0/16」とします。


「ネットワーキング」⇒「動的ルーティング・ゲートウェイ」を選択し、
DRGを作成します。


「ネットワーキング」⇒「顧客構内機器」を選択し、
CPEを作成します。
このとき、AWSにて「サイト間のVPN接続」を作成して払い出されたIPアドレス「35.72.xxx.xxx」を設定します。


「ネットワーキング」⇒「VPN接続」を選択し、
VPN接続を作成します。
・前の手順で作成したCPE
・前の手順で作成したDRG
を使用します。
「静的ルート」はAWSのCIDRブロックとして「10.1.0.0/16」を設定します。



共有シークレットには AWSの「サイト間のVPN接続」を作成して出力された「Pre-Shared Key」を設定します。



トンネル2は名前のみ設定しています。


作成されたVPN接続からトンネル1側のIPアドレス「168.138.xxx.xxx」をメモしておきます。

 

3.AWS側の再設定

再度「カスタマーゲートウェイ」を作成します。
接続先はOCIのIPアドレス「168.138.xxx.xxx」で設定します。


再度サイト間のVPN接続画面から作成したVPN接続を選択し、
「VPN接続を変更」を選択します。


「ターゲットタイプ」に「Customer Gateway」を選択し、
「ターゲットカスタマゲートウェイ」には上記で作成したカスタマーゲートウェイ「168.138.xxx.xxx」を選択します。


保存した後、状態が変更中となりますので数分待ちます。
問題が無ければ状態が「使用可能」となり、
「トンネル詳細」の「ステータス」が「アップ」と表示されます。




OCI側の「IPSecステータス」も「稼働中」と表示されます。

※この状態でAWS⇔OCI間の接続が可能ですが、
 AWSもOCIもTunnel1のみが使用可能な状態となり、AWSからもOCIからも
 冗長構成とするように警告が表示されます。
 対応としてはAWS・OCIともにCPEとVPNの作成をもう1度行います。
 (作成すると警告も表示されなくなる模様です)
 冗長構成にした場合のイメージは次の通りです。点線の矢印は有効にならない接続です。

4.疎通確認

実際にサーバ間での接続確認を行うにたあり、
AWS側は続いて下記の設定を行いました。
・サブネット作成 ※10.1.1.0/24 で作成
・ルートテーブル作成 ※送信先は 10.2.0.0/16 (OCI)、ターゲットは 作成した仮想プライベートゲートウェイ
・作成したルートテーブルをサブネットに関連付け
・インスタンス作成 ※10.1.1.11で作成
・セキュリティグループ作成 ※インバウンドにて10.2.0.0/16 (OCI)を許可、一応 10.1.0.0/16 (AWS)も許可しておく

OCI側は下記の設定を行いました。
・DRGをVCNにアタッチ
・ルート表作成 ※10.1.0.0/16 (AWS)を作成したDRGに設定
・セキュリティリストを作成 ※10.1.0.0/16 (AWS) を許可、一応 10.2.0.0/16 (OCI)も許可しておく
・サブネット作成 ※10.2.1.0/24 で作成
・インスタンス作成 ※10.2.1.11で作成

これらの設定を行い、インスタンス同士で接続ができました!
下記は OCI上のサーバからAWS上のサーバにsshで接続した画面です。

 

【最後に】
VPNのマネージドサービス同士で接続できると
余分なサーバ料金も抑えられ、保守するサーバ台数も減りますので運用が楽ですね。