Amazon Web ServiceとOracle Cloud InfrastructureでVPNを張る

Amazon Web Service(AWS)とOracle Cloud Infrastructure(OCI)のIaaS同士で拠点間VPNを張ります。


ネットワークの設定

AWSとOCIで重複しないプライベートネットワークを設定します。
VPN接続を行いたいVPC(AWS)とVCN(OCI)でCIDR範囲が重複していないことを確認しましょう。

例えば、以下のようになっていれば問題ありません。好きなCIDRを設定してください。
OCI 10.0.0.0/16
AWS 10.1.0.0 / 16

AWSでIPSECのトンネルを作成する

まず最初に、AWSでIPSECのVPNを作成します。

OCIのIPSECゲートウェイのIPアドレスがまだ不明(未作成だから)なため、最初にダミーのカスタマーゲートウェイを作成しておきます。

後で正しい情報を使った新しいカスタマーゲートウェイを作成するため、適当な情報で作成します。

次に、仮想プライベートゲートウェイを作成します。これは、AWS側のルーティングサービスになります(OCIのDRGなど)。

仮想プライベートゲートウェイが作成されたら、VPCに設定します。

ここまで設定ができると、AWS側でIPSECトンネル(サイト間のVPN接続)を作成できます。

VPN接続は冗長構成として2本作成しておくと安心です。
最初に1本VPNを作成しておき、必要に応じてもう一本作りましょう。
サイト間のVPN接続を選択し、VPN接続を作成していきます。
設定は、以下のように行います。
・ターゲットゲートウェイタイプ:仮想プライベートゲートウェイ
・仮想プライベートゲートウェイ:先ほど作成したもの
・カスタマーゲートウェイ:先ほど作成したもの
・ルーティングオプション:動的(BGPが必要)
上記以外はデフォルトのままで作成することができます。

VPNのセットアップには少し時間がかかるため、構成をダウンロードします。
OCIでIPSECトンネルを設定するには、この構成ファイルの情報が必要になります。

設定のダウンロードを選択し、ベンダー/プラットフォームに「Generic」を選択します。

ダウンロードした設定を開き、以下の値を控えてください。
■IPSec Tunnel #1
#1: Internet Key Exchange Configuration
・Pre-Shared Keyの値

#3: Tunnel Interface Configuration
・「Outside IP Addresses」のVirtual Private Gatewayの値
・「Inside IP Addresses」のCustomer GatewayとVirtual Private Gatewayの値

#4: Border Gateway Protocol (BGP) Configuration
・Virtual Private Gateway ASNの値

※共有鍵に数字と文字のみが含まれていることを確認してください。OCIは「_!」をサポートしていません。もし使えない文字列が含まれている場合、VPN トンネルオプションの変更から独自の共有鍵を指定することもできるため、文字と数字だけのものを設定しましょう。

VPNを立てることができたため、次はOCIのVPNを構築します。

OCIでIPSECのトンネルを作成する

AWSでVPNを構築したため、OCI上でもVPNの構築を行います。

OCIで最初に作成する必要があるのはネットワーキングの「顧客構内機器」です。今回の場合だとAWS、OCI間なので実際には顧客構内ではありませんが、AWSに対してこの設定を行います。

「顧客構内機器の作成」をクリックして、AWSでダウンロードした設定ファイルにある、AWS側VPNのPublic IPを入力します。

VCNにDRG(動的ルーティングゲートウェイ)がまだない場合は、ここで作成してください。

DRG(動的ルーティングゲートウェイ)を作成したら、「仮想クラウド・ネットワーク」メニューから、VCNにDRGを割り当てます。
「動的ルーティング・ゲートウェイのアタッチ」から作成したDRGを割り当ててください。

これで、新しいVPN接続を作成できます。VPN接続は、ネットワークメニューにもあります。

「IPSec接続の作成ボタン」から、IPSec接続を作成していきます。

IPSec接続設定は、以下のように設定します。(黒塗り多くて見づらいですが…)
入力しても作成はまだ待ってください。

重要:「拡張オプションの表示」をクリックして設定していく必要があります。
トンネル1の設定を構成します。(トンネル2は後述)

トンネル2の場合は、ダミー情報を設定します。
ルーティングタイプをBGPに設定してください。

ダミー値として適当な値を設定しています。

「IPSec接続の作成」ボタンをクリックして作成を完了させます。

これでOCI側でVPN設定が完成しました。
トンネルに表示されている「Oracle VPN IPアドレス」がPublic IPです。
AWSに戻り、新しくカスタマーゲートウェイを作成します(ダミーを作っていたので)

AWSで正しい設定で新しいカスタマーゲートウェイを作成

AWSでカスタマーゲートウェイを作成します。
OCIで作成したTunnelの設定を入れます。

これが作成されたら、サイト間のVPN接続に移動し、「アクション→VPN接続を変更」から、カスタマーゲートウェイを変更します。

カスタマーゲートウェイの変更は数分かかります。

AWSでVPN接続の変更(カスタマーゲートウェイの設定)が完了すると、AWSとOCI両方でトンネルがUPになっていることが確認できるかと思います。

あと少しです。
ルートテーブルの設定を行います。

ルートテーブルの設定

トンネルが稼働したので、ルートテーブルが実際のデータでやり取りできることを確認する必要があります。AWSでルートテーブルに移動し、ルートテーブルを選択して「ルートの編集」をクリックします。

AWS側にはOCIのサブネットのCIDR範囲を入力します。
ターゲットは、AWSで作成した仮想プライベートゲートウェイを選択します。

OCI側でもAWSのサブネットのCIDR範囲を設定します。
VCNに移動し「ルート表」をクリックします。ルート・ルールに動的ルーティングゲートウェイの宛先CIDRブロックにAWSのVPC CIDRを追加します。

ネットワークセキュリティを設定する

OCIのVCNのセキュリティリストに、AWSのCIDRと通信できるように設定を行います。すべての通信を許可してよいなら、イングレス・ルールにAWSのCIDRを指定しすべてのプロトコルで許可ルールを作成してください。

AWSもOCIと同様にセキュリティグループに通信の設定を行います。

設定が完了したら、OCIとAWSで相互にPingやsshなどを行って通信ができることを確認してみてください。

後半力尽き気味ですが、以上でAWSとOCI間でVPNを張ることができます。
冗長化の構成などについてはまた別途…