AWS-OCI間 IPSecシングル接続と冗長接続検証


## 概要
AWS内のVMからOracle Cloud(OCI)のVMに接続する要件があったため接続性について簡単な検証を行いました。

## 検証構成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/9c570a85-c854-6e74-299e-12831fd2823e.png)

【AWS】
既存のSubnetに検証用のVMをデプロイしました。
OCIとのIPSec接続はサイト間VPN機能を使用します
【OCI】
既存のSubnetに検証用のVMをデプロイしました。
AWSとのIPSec接続はサイト間VPNを使用します

検証1にてシングル接続を設定して、検証2では冗長構成を設定して障害迂回ができるか検証しました。

## 検証その1

【AWS】
コンソールから仮想プライベートゲートウェイを作成してVPCにアタッチします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/3bcad81f-45cd-547e-3c64-278e62f1ef91.png)

VPN接続に遷移してVPN接続を作成します
ターゲットゲートウェイのタイプ：仮想プライベートゲートウェイ
仮想プライベートゲートウェイ：先程作成した仮想プライベートゲートウェイを選択
IPアドレス：後でOCI側のIPアドレスに変更するためここれでは適当なIPアドレスを入力します
ルーティングオプション：静的
静的IPプレフィックス：OCI側のVCN IPアドレス
トンネル1オプション：事前共有キーをあらかじめ決めておいて設定

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/1e20d4b6-04b6-d84c-3d74-fd66797044b9.png)

しばらくするとVPN接続が作成されます。Tunnel1の外部IPアドレスと内部IPv4 CIDRをメモします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/cde6f160-9348-d5dc-3d7e-40bdf90a67f8.png)

【OCI】
コンソールからネットワーキング>顧客接続性>顧客構内機器に遷移してCPEを設定します

Public IP Address: AWS Tunnel1の外部IPアドレス

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/b0cf3b3c-ae4e-1f4e-78f1-cd38ea3267f5.png)

サイト間VPNに遷移しIPSec接続の作成を行います

名前：適切に設定
顧客構内機器：先程設定したCPEを指定します
動的ルーティングゲートウェイコンパートメント：今回は既存を使用しましたが未設定であれば新規で作成します
オンプレミスネットワークへのルート：AWS側のVPCアドレスレンジ
トンネル1
　名前：適切に設定
　共有シークレット：AWSで設定した事前共有キー
　IKEバージョン：IKEV2
  ルーティングタイプ：静的ルーティング
　IPv4トンネル内インターフェース-CPE：AWS 内部IPv4 CIDRに2足したIPアドレス 
　IPv4トンネル内インターフェース-Oracle：AWS 内部IPv4 CIDRに1足したIPアドレス
トンネル2は静的ルーティングのみ設定


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/cca864d3-d3cf-b069-1e27-566352787220.png)

しばらくするとVPN IPSec接続が作成されるのでOracle VPN IPアドレスをメモします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/4a96fa7d-e745-4022-bfa0-28d6c0f9bbef.png)

【AWS】
カスタマーゲートウェイの作成画面に遷移してカスタマーゲートウェイを作成します

IPアドレス：Oracle VPN IPアドレス
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/2a47da6d-39bc-2608-ec7f-1a8d32c0a300.png)

VPN接続画面に遷移して、既存の接続設定を選択し「VPN接続を変更する」を選択します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/f17db180-aaab-6e3d-715b-f8bf5bc625ae.png)

カスタマーゲートウェイを先程設定したカスタマーゲートウェイに変更します

5分ほど待つと設定が反映されTunnel1のステータスがUpに変わります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/14a1f97e-9aca-4398-9154-ea5647a57fc7.png)

【OCI】

OCIもIPSecステータスが稼働中に変わります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/81b02574-1d37-1675-6b41-e510dc1424ec.png)

引き続きIPSec以外の設定を行います
【OCI】
セキュリティ（セキュリティリストまたはNSG)およびSubnetのルーティング設定を行います

NSG
　AWS VPCからのアクセスを許可
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/1813918c-bec3-78e0-0fac-e329bc61b084.png)

Subnetルーティング設定
　AWS VPCのNexthopをDRGに設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/811dae7b-25c9-1f1e-498e-fd10ef3176cd.png)

【AWS】
VPCルート設定
　OCI VCNのNexthopをVPN GWに設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/61f9ac8b-f7be-c22e-80e1-126550d535ca.png)

設定が完了したらAWS VMからOCI VMにPingが成功することを確認します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/12e7f551-eb64-ea32-cfc7-3df23ac4e86c.png)

## 検証その2

シングル接続構成が成功したので続いてもう一つVPN接続を設定します
手順は最初のVPNと同様です。

2つめのVPNを設定した後は以下のようになります
AWS:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/0c879494-1bf2-bb03-3be7-ca5d5021a157.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/7a23d1ee-3fbd-ccd3-167c-eadaa3a1cdd2.png)

OCI:
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/ebac161c-0434-1a96-f321-27a1f677d1fc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/d9f5b34e-67e9-b512-b78a-8550bb588763.png)

DRGのルーティング情報も確認してみます。
2つのVPNからルートを受けっていることがわかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/292665fb-7359-a7ac-ae14-c15f686580fa.png)

では、一方のVPNをDownさせて通信が迂回できるか確認してみます。
方法としては、AWS VMからOCI VMにpingを行った状態で一方のVPNをDownさせてping状況を確認しました。
2回実施しましたがどちらもPing Downは発生せず迂回することを確認しました。

テスト1回目
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/8ba9b35e-df20-7e21-4c12-adf5a0f7bdf5.png)

テスト2回目
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2730992/c7e784f5-6be1-1d0d-b516-305fbeae8c12.png)

## 考察
AWS、OCIともにIPSec VPN設定は対向CPE1台で1VPN設定あたり2tunnel構成する仕様となっています。今回は1VPN設定で1tunnelのみ構成しているため、AWS,OCIともにWarningが表示されました。（AWSはさらにメールが届きました）

また、冗長構成においては、AWS, OCIともに1VPN設定あたり1tunnel構成を2つ設定することにより冗長化しました。迂回通信は成功しましたが2つのtunnelが異なるメンテナンスグループである必要があります。同じメンテナンスグループになった場合せっかく冗長にしたにもかかわらず両方Downする可能性があります。しかしながら現時点ではメンテナンスグループを確認方法が見つからなかっため、十分な検証を行うか、ある程度停止が許容できるバッチファイル転送等に用途を限定したほうがよいかと思います。