AWS と OCI を Site-to-Site VPN 接続してみた

# あいさつ
公式のサイトを参考に **AWS** と **OCI** を **Site-to-Site VPN 接続**してみました。
難解な部分がありましたので、私なりの解釈をいれながら噛み砕いてまとめてみました。
敢えて画像はつけません。必要であればご要望下さい。

:::note info
公式サイト

Title: **動的 BGP ルーティングを使用して AWS と OCI の間に VPN を設定する | AWS re:Post**
URL: https://repost.aws/ja/knowledge-center/vpn-oci-bgp-routing
:::

## 手順

### ◆AWS の設定
1\. AWS 側でダミーの **[カスタマーゲートウェイ]** を作成します。

:::note warn
ダミーの意味
・この時点では OCI 側のグローバル IP が判明していない為ダミーとなります。
・AWS の **[カスタマーゲートウェイ]** の付け替えが可能であるが、OCI の **[CPE]** の付け替えができないので、AWS 側でする必要があります。
・この設定は最終的に使いません。
:::


2\. **[仮想プライベートゲートウェイ]** を準備します。
3\. **[仮想プライベートゲートウェイ]** を **[Amazon VPC]** をアタッチします。
4\. **[VPN 接続]** を作成します。
　◆詳細
　　・名前タグ：**任意**
　　・ターゲットゲートウェイ：**「２．」で作成したものを選択します。**
　　・カスタマーゲートウェイ：**「１．」で作成したものを選択します。**
　　・ルーティングオプション：**「動的」を選択します。**
　◆トンネル 1 オプション
　　・トンネル 1 の内部 IPv4 CIDR：**169.254.0.0/16 の範囲からのサイズ /30 IPv4 CIDR ブロック。**
　　・トンネル 1 の事前共有キー：**※OCI は特定の文字をサポートしていません。**

:::note warn
事前共有キーの注意
個人的には英大文字・英小文字・数字の混成にし、文字数は12文字以上にしています。
:::

 ◆トンネル 2 オプション
　　　**こちらの設定は使用しません**ので適当に埋めてよいです。空欄は設定できないのでダメです。

:::note warn
トンネル２を使用しない理由
AWS 側は **[カスタマーゲートウェイ]** の **[IP アドレス]** を１つしか指定できません。対向が１つしかありませんのでトンネルは１本になるのです。設定が完了してもトンネル２はアップになりません。
:::

5\. 一般的な Site-to-Site VPN 設定ファイルをダウンロードします(※General を選択)。
　◆設定ファイルで必要な項目を抜粋
　[IPSec Tunnel #1]
　　[#1: Internet Key Exchange Configuration]
　　　[Configure the IKE SA as follows]
　　　　[Pre-Shared Key]：**「４．」の「トンネル 1 の事前共有キー」**
　　　　[Authentication Algorithm]：**sha1**
　　　　[Encryption Algorithm]：**aes-128-cbc**
　　　　[Lifetime]：**28800 seconds**
　　　　[Diffie-Hellman]：**Group 2**
　　[#2: IPSec Configuration]
　　　　[Authentication Algorithm]：**hmac-sha1-96**
　　　　[Encryption Algorithm]：**aes-128-cbc**
　　　　[Lifetime]：**3600 seconds**
　　　　[Perfect Forward Secrecy]：**Diffie-Hellman Group 2**
　　[#3: Tunnel Interface Configuration]
　　　[Outside IP Addresses]
　　　　[Virtual Private Gateway]：**(例)203.0.113.130   … ※注意：ドキュメンテーション目的利用可能IP(RFC 5737)**
　　　[Inside IP Addresses]
　　　　[Customer Gateway]：**「４．」の「トンネル 1 の内部 IPv4 CIDR」内から１つ自動で割り当てられる**
　　　　[Virtual Private Gateway：**「４．」の「トンネル 1 の内部 IPv4 CIDR」内から１つ自動で割り当てられる**
　　[#4: Border Gateway Protocol (BGP) Configuration]
　　　[BGP Configuration Options]
　　　　[Virtual Private  Gateway ASN：**「１．」で設定したもの。**

◆OCI の設定
6\. OCI 側で [Customer-Premises Equipment] (顧客宅内機器) を作成します。
　　・名前：**任意**
　　・IPアドレス：**「５．」 の「Outside IP Addresses - Virtual Private Gateway」**
　　・ベンダー：**Other**   … ※AWS に該当するのもがない為
7\. **[動的ルーティングゲートウェイ]** を作成します。
8\. **[動的ルーティングゲートウェイ]** を **[VCN]** にアタッチします。
9\. **[サイト間VPN]** を作成します。

:::note warn
注意
「５．」 はすべて「IPSec Tunnel #1」の設定です。
:::

 　◆詳細
　　・名前タグ：**任意**
　　・カスタム共有シークレットの指定：**チェックを入れる**
　　　・共有シークレット：**「５．」 の「Pre-Shared Key」**
　　・顧客構内機器：**「６．」で設定したもの。**
　　・動的ルーティング・ゲートウェイ：**「７．」で設定したもの。**
　　・オンプレミス・ネットワークへのルート：**空欄**   … ※BGP の場合は空欄にする
　◆トンネル 1 オプション
　　・名前：**任意**
　　・IKEバージョン：**IKEv1**
　　・ルーティング・タイプ：**BGP動的ルーティング**
　　・BGP ASN：**「５．」 の「Virtual Private  Gateway ASN」**
　　・IPv4トンネル内インタフェース - CPE：**「５．」 の「Inside IP Addresses - Customer Gateway」**
　　・IPV4トンネル内インタフェース - Oracle：**「５．」 の「Inside IP Addresses - Virtual Private Gateway」**
　◆フェーズone (ISAKMP)構成   … ※[カスタム構成の設定] のチェックをオン
　　・カスタム暗号化アルゴリズム：**「５．」 の「Configure the IKE SA as follows - Encryption Algorithm」**
　　・カスタム認証アルゴリズム：**「５．」 の「Configure the IKE SA as follows - Authentication Algorithm」**
　　・カスタムDiffie-Hellmanグループ：**「５．」 の「Configure the IKE SA as follows - Diffie-Hellman」**
　　・IKEセッション・キー存続期間(秒)：**「５．」 の「Configure the IKE SA as follows - Lifetime」**
　◆フェーズtwo (IPSec)構成   … ※[カスタム構成の設定] のチェックをオン
　　・カスタム暗号化アルゴリズム：**「５．」 の「Configure the IPSec SA as follows - Encryption Algorithm」**
　　・カスタム認証アルゴリズム：**「５．」 の「Configure the IPSec SA as follows - Authentication Algorithm」**
　　・IPSecセッション・キー存続期間(秒)：**「５．」 の「Configure the IPSec SA as follows - Lifetime」**
　　・完全な前方秘匿性Diffie-Hellmanグループ：**「５．」 の「Configure the IPSec SA as follows - Perfect Forward Secrecy」**

### ◆Amazon VPC コンソールで VPN ゲートウェイを設定する
10\. AWS 側で [カスタマーゲートウェイ] を作成します。
　※こちらは「１．」と違い本番用のものになります。
　◆詳細
　　・名前タグ：**任意**
　　・BGP ASN：**31898**   … ※動的ルーティングゲートウェイのデフォルトの BGP ASN です。
　　・IP アドレス：**「９．」 の「Oracle VPN IPアドレス」のトンネル１側**
11\. AWS 側で **[カスタマーゲートウェイ]** の付け替えを実施する。
　11-1. 「４．」で作成した **[Site-to-Site VPN 接続]** に移動します。
　11-2. **[アクション]** を選択し、**[VPN 接続を変更]** を選択します。
　11-3.  カスタマーゲートウェイのターゲットタイプを更新し、カスタマーゲートウェイを選択します。
　11-4.  「１．」で作成したダミーから、「10．」で作成した本番用に付け替える。

:::note warn
注意
AWS が Site-to-Site VPN 接続を変更および更新するのに数分かかります（かなり長い）。
:::

12\. トンネル１のステータスが UP であることを確認します。
13\. OCI 側のトンネルもステータスも UP であることを確認する。
14\. AWS、OCI にそれぞれサーバーを立て、お互いに疎通できることを確認する。

# あとがき
途中で飽きてしまい雑になってしまいました。
折を見て見やすいように修正します。