オレのブログを安く運用したい。（aws から Oracle Cloud へ移行（最終回））※IPSec VPN で AWS と OCI をつないでマルチクラウド化しようよ

#はじめに
この記事は「Oracle Cloud Infrastructure（その2） Advent Calendar 2020」の12月25日の記事として投稿です。

メリークリスマス！！:christmas_tree: 今日は、良い子にしていればサンタ:santa_tone2:さんからプレゼント:gift:してくれる日。
オラクルサンタさんは、私にプレゼントを運んでくれるか。楽しみです:sparkles:。

さて、昨日からの続きです。今日から読む人たちのために、改めて、記載すると「今あるaws上のブログで使っているインスタンス2つをOCIへ移行させよう！そして、その先に待っているランニングコスト軽減を得るために！！」が目的になります。:sparkles:

今日は、 aws から OCI へデータ転送の方法を用意しようと思います。

#「AWSからOCIへ移行をしてみる」の続き
<A herf="https://qiita.com/orahisa/items/d4910d2191d235aa2ef7">その３</A>で検討した、下記の 移行ステップ で進めています。

<font color=red>~~1. OCI上でAWS同様の構成を用意する~~　【済】</font>
<font color=red>2. AWS と OCI を接続する（データ移行の経路を確保する）</font>
3. AWS上で稼働しているインスタンスのデータ抽出
<font color=red>4. AWS から OCI へデータを転送する</font>
5. OCI環境で再構築（データ移行）する

昨日は、AWS上にあるサービス類をOCI上で用意しました。無事に、無料範囲ですべて用意することができました。あとは、AWSからデータを抽出するために「２」と「４」になります。

##2. AWS と OCI を接続する（データ移行の経路を確保する）
###はじめに
今回の移行データは、Always Freeで収まる規模なので一度ローカルPCへ持ってきて送りつける。という方法で十分だと思います。ですが・・・・

それだと「クリスマス投稿なのにショボい！エンターテインメント性がないじゃない！！:sparkles:」
（翻訳：ド派手にいこう（参考：鬼滅の刃（宇髄天元な感じ）））

ということで、自分のブログは月間アクセス数１００件前後の方々を救うために、マルチクラウド化で災対にしよう！（クリスマスでアタマがおかしくなってきています:sweat_drops:）と思います。

###AWS と OCI をVPN接続してみる
さて、どうやるんだ？と調べてみると、Qiitaにも上がっていますね。

@shirokさんの記事
<a herf="https://qiita.com/shirok/items/a0848df3d3d67fccd4f9">Oracle Cloud：Oracle Cloud と AWS を IPSec VPN(Libreswan)でつないでみた）</a>

こちらを参考にして構築しようかな？と思ったら、Libreswan を使って接続するみたい。ん？この方法ってEC2が必要になるの？AWSが提供しているVPNサービスでできないのかしら？それだとAWS側の管理もVPNサービス側でできるので、運用が楽になりそうだし:sweat_drops:。

とりあえず、Advent Calendarとしては最終回だし Qiita らしく、検証してみましょう:santa_tone2:。

####ネットワーク条件の確認
AWSとOCI間をつなぐので、プライベートネットワークは重複しないようにしなければなりません。念のため、確認。
![20201224-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/7cf80780-4a14-1420-bf95-6581bac5865c.png)
AWS側(172.31.0.0/16)でOCI側(192.0.0.0/16)なので問題なさそうです。

####AWS側にIPSecトンネルを作成する
#####カスタマーゲートウェイの用意（AWS）
まずはじめにAWS側にVPN接続設定を用意するため、カスタマーゲートウェイ（仮）を用意します。
[仮想プライベートネットワーク（VPN)]-[カスタマーゲートウェイ]をポチッとする。
![20201224-002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/3e4e27af-b2cc-0721-911e-da2f9dfca623.png)
あとで、OCI側の情報が分かってから、ちゃんと登録するので、今は、仮に登録しておきます。（これが無いとAWS側で欲しい情報を用意できませんので:sweat_drops:）
![ 2020-12-24 10.24.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/96dc541a-8c8a-bc69-abfe-f7e0ddf71d6c.png)
ここは名前とルーティング設定ぐらい。あとは、デフォルトで良いです。IPアドレスは適当なものを入れて[カスタマーゲートウェイの作成]をポチッとする。
![ 2020-12-24 10.24.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/415699f6-1de0-5565-199d-8b09c9d5e670.png)
特に、問題なく作成ができるかと思います。

#####仮想プライベート・ゲートウェイ（VPG）の用意（AWS）
こちらはAWS側のルーティングサービス。OCIでいうDRGにあたるものの準備になります。
[仮想プライベートネットワーク（VPN)]-[仮想プライベートゲートウェイ]をポチッとする。
![20201224-003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/242d5686-56b2-8907-6cdb-9a995571b956.png)
最初のVPG作成に必要な情報は、名前ぐらいです。
![ 2020-12-24 10.48.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/eefa372a-f34b-92bc-a551-db7ca7b57d7c.png)
サクッと作成できます。
![ 2020-12-24 10.49.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/a714598c-4a4b-03c1-8a52-41b47530deb2.png)
あとは、この VPG を VPC にアタッチします。[アクション]-[VPCにアタッチ]をポチッとします。
![20201224-004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/f220a389-739b-9f66-d72a-9afbc986b1d8.png)
現在用意してあるVPCを選択できるので、該当するVPCを選択します。（今回はAWS上で稼働しているブログのVPCを選択しています。）
![ 2020-12-24 10.50.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/9da23c46-c1c4-3049-ebdc-1eb7d2f6e7d8.png)
特に問題なければ、「状態」が attaching になります。
![20201224-005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/42a7e443-2505-d2df-2b9f-78fdb5e339f6.png)

#####VPN接続の作成（トンネルの作成）(AWS)
やっと、AWS 側に IPSec トンネルを作成します。
[仮想プライベートネットワーク（VPN)]-[サイト間のVPN接続]から[VPN接続の作成]をポチッとする。
![20201224-006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/7e95b3ef-e5a3-7cb8-8450-d980c71749c5.png)
設定する項目は、こちらも名前ぐらい。あとは、事前に用意した仮想プライベートゲートウェイ(VPG)とカスタマーゲートウェイを設定します。なお、こちらのIPSecトンネルは複数構築（冗長構成）することもできます。今回は１本だけ用意します。
![20201224-007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/a3f8fd15-b0a5-9255-2745-bcab58af0953.png)
こちらも特に問題なく作成されます。

*※トンネルオプションの「トンネルの事前共有キー」については、OCI側で認められる文字列で事前に用意することをオススメします。詳細は、下記に記載ある「注意：「トンネルの事前共有キー」生成」を確認ください。*


![ 2020-12-24 11.21.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/6c806d18-f62c-2151-de05-369d7aaa4b08.png)
VPN接続の作成は少し時間がかかりますが、しばらくすると「利用可能」状態に変わります。
![20201224-008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/9e6e40d9-86a1-0b32-4f32-41791df9d078.png)
IPSec(AWS)の準備ができたら、OCIでIPSecトンネルを用意するため、AWS側のVPN構成情報を取得します。
![20201224-009.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/58531907-29e1-e24d-cfd5-652b82a0fb8c.png)
設定については、各ベンダー用の定義情報がダウンロードできますが、ここでは(Vendor)Generic、(Platform)Generic に設定してダウンロードします。
![ 2020-12-24 11.59.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/88bf02b8-076b-d8d5-b50e-ad89750110bf.png)
ここに「Oracle Cloud」なんて表示されたらステキなのになあー。（マルチクラウドは想定していないか…。:sweat:）

設定をダウンロードすると、こんな感じのテキストファイルを入手できます。
![ 2020-12-24 12.16.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/32c8929c-7dbf-22a3-0b57-4a532cab63c1.png)
こちらの情報をもってOCI側のIPSecトンネルを作成します。

#####注意：「トンネルの事前共有キー」生成
こちら「Amazonによる生成」とOCIで使える文字が異なるため、自動生成だと後で変更になるかもしれません。
今回のケースだと、こちらが例。
![20201225-001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/212d0d7f-d0ce-8094-58fe-80472542d9ab.png)

OCIのトンネル設定では<font color=red>数字、文字およびスペースのみ許可</font>されています。
![20201225-003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/3f625fa4-e573-9ace-c5cb-cf0c4e827f49.png)
そのため、作成後であれば「Modify VPN Tunnel Option」からトンネルの事前共有キーの変更が必要になります。
![20201225-002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/c8c5b9c0-74b2-543d-a6df-fc38e5f16851.png)
:point_up:先に進めるときは注意してください

####OCI側にIPSecトンネルを作成する
#####顧客宅内機器(CPE)の作成(OCI)
先ほど用意したAWS側のVPN接続の情報を「顧客宅内機器」として登録します。
[ネットワーキング]-[顧客宅内機器]をポチッとします。
![20201224-010.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/2d967083-1185-1869-f62b-6b34826d5ce3.png)
こちらでAWS側のVPN接続を設定します。
![ 2020-12-24 13.58.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/cf7f2745-14b4-972d-d1b0-58921e5f700e.png)
パブリックIPは、先ほどの構成情報にある[Outside IP Addresses]の[Virtual Private Gateway]のIPアドレスを登録します。CPEベンダー情報としては、もちろん AWS なんてあるわけがないので:sweat:、Otherを選択して作成します。作成すると、こんな感じになります。
![20201224-011.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/7b8542a0-c34c-84d3-41ee-b304be2763cc.png)

#####動的ルーティング・ゲートウェイ（DRG）の作成(OCI)
AWSでもVPGを作成しましたが、OCI側も同様にゲートウェイを作成する必要があります。
[ネットワーキング]-[動的ルーティング・ゲートウェイ]をポチッとします。
![20201224-012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/13381efe-3267-e17a-f014-40d34568bcdf.png)
こちらも、まずは名前を設定して作成。
![ 2020-12-24 14.31.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/0e401a5e-7cca-8c84-bda4-2cc01117c3a7.png)
DRGを用意したら、このDRGに、Blog用として用意したVCNをアタッチします。
![20201224-013.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/ea15f499-7ad4-4e54-2047-ad28f5c3cded.png)
アタッチまでは少し時間がかかりますが、無事に完了すると「アタッチ済」になります。
![ 2020-12-24 14.51.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/77161019-7194-4613-60d2-86ab6fd20152.png)

######気づいた…。根本的な誤り（笑）
コンパートメントを本番（Production）と開発（Development）に分けたのに、親の[Blog]で作っていました（笑）まあードンマイ！今回は、コンパートメント[Blog]上で構築します:sweat_smile:
:point_up:構築場所は、確認することをオススメいたします:sweat_drops:

#####VPN接続の作成(OCI)
OCI側にIPSecトンネルを作成します。
[ネットワーキング]-[VPN接続]をポチッとします。
![20201224-014.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/75d981b6-0c63-e386-abff-5983eafec60f.png)
[IPSec接続の作成]をポチッとします。このとき、先ほどAWSにて定義情報をダウンロードしたテキストを利用します。
![20201224-015.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/9f6a7e46-b651-2e76-5fa5-cb25e398c601.png)
登録する情報は、こんな感じ。
![20201224-016.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/55699e5f-ef8b-4c19-7bf6-f076680bb2a6.png)
拡張オプション外の設定については、そんなに難しいところはないと思いますが、トンネル設定は少しややこしいので、こちらをフォーカスして記載します。
######トンネル設定(OCI)
AWS上で作成した「VPN接続」について定義情報を確認しながら、下記の通り設定します。

![20201224-017.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/531bc263-0d83-03e4-d1da-098f4c65108a.png)

**■共有シークレット**
[カスタム共有シークレットの指定]にチェックをつけて共有シークレットを登録します。こちらは、「#1: Internet Key Exchange Configuration」にある[Pre-Shared Key]の値を貼り付けます。
※注意：AWSのVPN接続でも補足しましたが、AWS上で共有シークレットキーにOCI側で認められない文字を利用している際は、AWS上の共有シークレットキーをOCIで認められている文字列で更新してください。

**■BGP ASN**
こちらは「#3: Tunnel Interface Configuration」の[BGP Configuration Options]-[Virtual Private  Gateway ASN]の値を貼り付けます。

**■IPV4トンネル内のインタフェース - CPE**
こちらは「#3: Tunnel Interface Configuration」の[Inside IP Addresses]-[Virtual Private Gateway]の値を貼り付けます。

**■IPV4トンネル内のインタフェース - ORACLE**
こちらは「#3: Tunnel Interface Configuration」の[Inside IP Addresses]-[Customer Gateway]の値を貼り付けます。

間違えやすい気がしますので、よく確認して設定してください:smiley:。

あと「トンネル２」の設定ですが、今回は１本だけ用意したいので使わないのですが、VPN接続の設定としては必須情報になりますので、ダミーとして登録しています。
![ 2020-12-24 17.00.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/bbc411e7-b527-9502-b41e-d87356fbdbd4.png)

######VPN接続情報の登録完了
使えるようになるまで少し時間がかかりますが、OCI側のIPSecトンネルを準備できました。
![20201224-018.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/ddcbe6c5-844f-00c8-6760-ff8bfa8e4c79.png)

今度は、OCIで用意したIPSec情報を元にAWS側のカスタマーゲートウェイに登録します。

###AWS側にIPSecトンネルを作成する(続）
####カスタマーゲートウェイの用意。（前に仮で登録したところを正しく設定する）（AWS）
先ほどは仮で登録しましたが、今回はOCI側のIPSec接続情報があるので、こちらを元に作成します。
![20201224-021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/759e1802-7b6a-dc16-946d-62d7086be449.png)
先ほど作ったOCIの[VPN接続]の[CPEおよびトンネル情報]を確認しながら、カスタマーゲートウェイを作成します。

・ルーティング設定を「動的」にする
・BGP ASNは、Oracle BGP ASN(31898)を設定する
・IPアドレスは、Oracle VPN IPアドレス（AWS-Tunnel-1 の Oracle VPN IPアドレス）を設定する。

こちらでカスタマーゲートウェイとしては完成です。

####VPN接続の更新（トンネル情報の更新）（AWS）
先ほどサイト間VPN接続で仮のカスタマーゲートウェイを設定していた情報を、上記で作成したカスタマーゲートウェイに差し替えます。
先ほど用意した[VPN接続情報]を選択して、[アクション]から[Modify VPN Connection]をポチッとします。
![20201224-020.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/32abf979-583f-b4cd-7dc5-01dc7f6a3c69.png)
VPN接続情報のカスタマーゲートウェイを、先ほど、作成した本番用のものに変更します。
![20201224-022.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/67b79f82-00aa-89fa-4779-cb7d8259c09e.png)
ここで[Save]すれば、AWSとOCI間のIPSec接続に関する設定は終了です。
![ 2020-12-24 18.15.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/9f78517b-2987-c34c-f3e7-15273a9d8680.png)
設定反映に少し時間がかかりますが、設定が正しければAWSとOCIがIPSecでつながります。
![ 2020-12-24 18.17.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/d4bfdfab-4eaf-b951-b027-74f101bad01a.png)

####接続確立までの緊張の一瞬:sparkles:
VPN接続の状態が「使用可能」になると、トンネルのステータスが変更されます。
![20201224-023.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/1dd870c9-eb4c-953e-666f-d7e8a1218d37.png)

AWS側のトンネルステータスは、こんな感じ。
![20201224-024.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/2b808c74-8563-d8c7-7dc9-64034c9013cf.png)

となると、もちろんOCI側のステータスも、こんな感じ。
![20201224-025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/80303b5c-a065-7b41-51e6-3bd31b066bf2.png)

設定が正しければ、両トンネルのステータスは稼働状態（アップ）になります。

こちらで両環境のIPSecVPN設定は完了です。（のはず…）
##けれども、サンタはやってこなかった…:sob:。
実は、この後は**「4. AWS から OCI へデータを転送する」**を進めるため、ルートテーブルの設定紹介、データ転送までをお伝えしたかったのですが、ここで、つまずきました。。。:persevere:

もう少し検証したかったのですが、時間がかかりそうな雰囲気です。Advent Calendar に穴を開けたくないので、今回は、IPSecVPN構築までの情報で投稿させていただきます:droplet:　（くやしい〜:persevere:）
Qiita住民は強者も多いと思いますので、この続きは誰か検証してくれると信じて・・・:sweat_drops:。
みなさま、よろしくお願いいたします:raised_hands:

私も時間あるときに確認してみようとは思いますが、今のアタマ（２０２０年のわたし（笑））では難しいかな。誰か拾ってくれるとは思いますが、誰も拾われず、私の方で検証する機会があれば、またQiitaに投稿させていただきます:writing_hand:（まずは、検証する時間を確保しないと。。。:sweat_drops:）

#おわりに（最終回）
いやー。今年の Advent Calendar は後半がたくさん空いていて、お休みも頂けたこともあり「せっかくなので埋めてしまおう！」と思い、久しぶりに OCI で遊んでしまいました:smile:。しかも、ちょうど OCI の Always Free が手に入ったこともあり、「これのネタにしよう！」と思いました。ホント使ってみて思いましたけど、OCIを無料で使えるのは良いですね。今回はIPSecVPNにパワーを使ってしまい、実移行はまだ実施できていないのが残念ではありますけど:sweat:。ただ今現在、Advent Calendar を書いている間インスタンスをあげている状態ですが、お試しクレジットを全く使っていません:sparkles:。
![ 2020-12-25 16.09.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/c50fbddf-a4c7-f837-f880-b6a42d0ef953.png)
他にも IPSecVPN の検証をしているデータ通信もポート料金はなく、Networking Cloudの価格（毎月最初の10TBは無料）なので、結局、無料枠で収まっている状況です。
ご参考→　<a herf="https://www.oracle.com/jp/cloud/networking/networking-pricing.html">Oracle Networking Cloudの価格（公式）</a>

この状態だと、やはり私のブログを移行すると効果はありそうです。
オラクルサンタ:santa_tone2:からの贈り物:christmas_tree:として、皆様も、この機会にOCIをもらってみてはいかがでしょうか:grinning:。個人的にはオススメです:gift:

さて、今日も長くなりましたが、このあたりで今年の Advent Calendar 2020 を終了しようと思います。また来年も枠が空いていたら投稿させていただきたいと思いますので、よろしくお願いします:bow_tone1:

それでは、皆様。
メリークリスマス！！:christmas_tree:　と、良いお年を！！:tada:

#追加（間に合った！！）
（2020/12/25 23:55追加）
##やっぱり、サンタはやってきた！
これです！！これを見たかったのです:relaxed:。
![20201225-004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/108642/4897eb42-75cc-1e52-757a-68dc741de4db.png)
ちゃんと、AWSとOCIが提供しているVPNサービスだけで疎通できました:sparkles:

とりあえず、細かい手順はまた機会あるときに記載しますが（Advent Calendar期間にアップしたかったので（笑））、簡単にお伝えすると解決した方法は、『今回「BGP動的ルーティング」をやめて、「静的ルーティング」に変更』してみました。
動的ルーティングで到達できない理由は、まだ分かりませんが、このあたりはきっと強者様たちが解決してくれると信じて…:sweat_drops:

というところで、この後はブログデータを移行させて、OCIでオープンすればおしまい。２０２１年からはできるかな:sparkles:

さてさて、スッキリしたところで今年を終えられそうです。それでは、皆様、改めまして、良いお年を！！:wave:
クリスマス中にスッキリできてよかったーーー:santa_tone2: