IBMCloud VPC VPNゲートウェイの導入（GoogleCloudと接続）

## 目的
IBMCloudのVPC環境でVPNゲートウェイとGoogle Cloudをインターネットを介しIPsecVPNで接続する。
その後、IBMCloudとGoogleCloud間で仮想マシン同士の通信ができる事を確認する。

## 構成図
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/91de5e7b-3a3f-e0e0-0d4e-0f05088f1720.png)

## IBMCloud VPNの作成
### VPNゲートウェイの作成

VPCインフラストラクチャー -> VPNを選択
![Pasted_Image_2024_06_06__10_58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/d262d5fe-5c11-74de-54ca-d29d1763cbc8.png)

* ロケーション:作成するリージョンを選択
* VPNゲートウェイ名:任意の名前を入力
* リソースグループ:自分のリソースグループを選択
* 仮想プライベートクラウド:自分のVPCを選択

![Pasted_Image_2024_06_06__11_10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/d6fed913-f3d1-7a69-341e-db2aaf7a08e8.png)

一旦VPC用のVPN接続のチェックはオフとし、最後にVPNゲートウェイの作成を選択する
![Pasted_Image_2024_06_06__11_25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/82c31ea7-26cd-6bd2-40a0-57deb490c18b.png)

作成されるまで待つ
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/a586a8a0-87ae-e903-8150-62b8ecc779b1.png)

正常性が”正常”であること確認
![Pasted_Image_2024_06_06__11_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/d298f617-c06c-dd23-5982-5574094616ab.png)

### VPNトンネルの作成
VPNの画面よりVPNゲートウェイの右にあるアイコンから、関連付けの作成を選択
![Pasted_Image_2024_06_06__12_14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/57a6c8e6-5cb7-e894-07a6-260a08db5a19.png)

* VPN接続名:任意名
* ピアゲートウェイアドレス:GoogleCloud側のGWアドレスを入力
* 事前共有鍵:GoogleCloud側と一致させるIKEキー
その他は必要に応じて変更し、最後にVPN接続の作成を選択
![Pasted_Image_2024_06_06__12_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/58546eb6-10a5-6d93-94f4-dd0bfa58a79e.png)

問題なければGoogleCloud側とのVPN接続が成功しているはず
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/e549c0a0-2f8b-119c-6770-66941b53e658.png)

## GoogleCloud向けのルーティング追加
GoogleCloud向けの通信をIBMCloudのVPNゲートウェイに向ける設定を実施する

[ルーティングテーブル] -> [ルートを追加するテーブルの名前]を選択
![貼り付けた画像_2024_07_03_11_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/6bd50413-a52b-6845-5c0a-0fc0f47cd991.png)

経路にある[作成]を選択
![Pasted_Image_2024_06_06__10_59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/9187b019-feed-daf2-81c1-f625f24d8b63.png)

名前：任意名
宛先CIDR:GoogleCloud側のサブネットを指定
![貼り付けた画像_2024_07_03_11_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/21737895-d623-bbe1-07b0-9ba7098adb56.png)

ネクストホップタイプ：VPN接続
VPNゲートウェイ：作成したVPNゲートウェイを選択
VPN接続：作成したVPNトンネル名を選択

最後に[保存]を選択
![貼り付けた画像_2024_07_03_11_36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/bdfe1fb8-3ac7-6e83-7d76-82f06c0054b2.png)



## GoogleCloud VPNの作成
### VPNゲートウェイの作成
検索メニューより、VPNで検索し出てきたVPNを選択
![Pasted_Image_2024_06_06__11_48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/91cc3d0d-b992-fda8-eb4b-bf53705834b7.png)

Compute EngineのAPIが有効になってない場合、有効化画面が表示されるので有効化する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/19925c57-c867-a5a6-5848-fd96036bb439.png)

ネットワーク接続画面に移動するので、VPN -> VPN接続を作成を選択
![Pasted_Image_2024_06_06__11_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/db8ff758-fa68-3e2c-5fa3-c2f65a553735.png)

Classic VPNを選択(IBMCloudのVPNはBGPに対応していないため）
![Pasted_Image_2024_06_06__13_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/b1680f75-1b20-98d4-ca7b-622e577266ac.png)


* 名前:任意名
* ネットワーク:GWを作成するネットワークを選択
* リージョン:リージョンを選択
IPアドレスの右にあるボタンを選択
![Pasted_Image_2024_06_06__13_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/0d06f319-a2d5-5137-f485-59b4c56f6e37.png)

IPアドレスを作成を選択
![Pasted_Image_2024_06_06__13_20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/716c6d4f-3ab0-fec1-09ed-dd7b62434578.png)

* 名前:任意名
予約を選択し、VPN-GWのIPを作成する
![Pasted_Image_2024_06_06__13_21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/10547407-d8f4-4712-e595-a3887d52d955.png)

* 名前:任意名
* リモートピアIPアドレス:IBMCloudのVPN-GWのIPアドレス
* IKE事前共有キー:IBMCloud側と共通のキー
* ルーティングオプション:ルートベースを選択(IBMCloudのVPN-GWはBGPが使えない)
* リモートネットワークIPの範囲:IBMCloud側のシステムのサブネットを入力
最後に完了を選択
![Pasted_Image_2024_06_06__13_52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/e663e6e9-b2fb-c119-0da6-dc9600a01369.png)

設定内容確認後、作成を選択
![Pasted_Image_2024_06_06__13_57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/4019ddb6-085f-1cc9-e8a4-b29e72589b0b.png)

問題なければ接続を確認できる
![Pasted_Image_2024_06_06__14_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/703043/8064809a-99cb-871c-b423-1d549a74c5bb.png)


## 動作確認

### GCP-VMインスタンス
GCPからIBMCloud側への通信確認

```
$ ping 172.22.99.9
PING 172.22.99.9 (172.22.99.9) 56(84) bytes of data.
64 bytes from 172.22.99.9: icmp_seq=1 ttl=62 time=17.1 ms
64 bytes from 172.22.99.9: icmp_seq=2 ttl=62 time=16.9 ms
64 bytes from 172.22.99.9: icmp_seq=3 ttl=62 time=17.8 ms
64 bytes from 172.22.99.9: icmp_seq=4 ttl=62 time=17.1 ms
64 bytes from 172.22.99.9: icmp_seq=5 ttl=62 time=17.10 ms
```

### IBM-VMインスタンス
IBMCloudからGCP側への通信確認

```
# ping 10.128.0.4
PING 10.128.0.4 (10.128.0.4) 56(84) bytes of data.
64 bytes from 10.128.0.4: icmp_seq=1 ttl=62 time=17.7 ms
64 bytes from 10.128.0.4: icmp_seq=2 ttl=62 time=16.7 ms
64 bytes from 10.128.0.4: icmp_seq=3 ttl=62 time=17.0 ms
64 bytes from 10.128.0.4: icmp_seq=4 ttl=62 time=16.8 ms
64 bytes from 10.128.0.4: icmp_seq=5 ttl=62 time=17.1 ms
```