IBM Cloud: Transit Gatewayを使って異なるアカウント間のClassic Infrastructureを接続する

#1. はじめに
過去に[Transit Gatewayを使ったアカウント間接続の記事を書いたことがある](https://qiita.com/testnin2/items/24baea110c9dd8390575)が、この時にはClassic Infrastructure同士は接続できなかった。今回新たにClassic Infrastructure同士も接続可能になったため、検証してみた。目指す接続形態はシンプルに以下である。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/bf9589f8-24b0-4601-f974-1f7fe97ce9e7.png)

#2. Transit Gatewayの注文


ドキュメントは[こちら](https://cloud.ibm.com/docs/transit-gateway?topic=transit-gateway-edit-gateway#adding-cross-account-connections&locale=en)。Classic Infrastructureは[VRFに変更されている必要がある](https://cloud.ibm.com/docs/transit-gateway?topic=transit-gateway-helpful-tips#classic-infrastructure-connection-considerations&locale=en)。

1. メニューより、Interconnectivity -> Transit Gatewayより、Create Transit Gatewayを選択。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/e4c5f6b4-0863-3c6e-e474-09b5b259fbe5.png)
2. TransitGatewayの名称を入力して、まずはTransit Gatewayを作成（Connectionはオプションなので後から作成することにする）。今回は`Local Routing`を選択した。Classic Infrastructure同士の接続であれば、Classic InfrastructureのDC間が相互に通信可能のなっているため、利用するTransit Gatewayがたとえ`Local Routing`であっても、どこのDCとも通信可能であることが確認できるはずであり、その確認をするためである。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/1b685c91-95aa-ea03-5297-ce87d1076bf4.png)

#3. Transit Gatewayの設定

作成したTransit Gatewayにconnectionを追加する。以下から`Add connection`を選択。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/38fb1cb0-ca78-ba90-ae09-234267d7959b.png)

##3.1 自アカウントのClassic Infrastructureへの接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/3da28d93-5602-3af1-a661-c4cdcfe64857.png)

- 自アカウントへの接続なので、`Add new connection in this account`
- Network Connection: `Classic Infrastructure`
- Connection name: 任意

これでaddしてしばらく待っていると、`Attached`状態になる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/8055c248-91d2-3793-32c7-c330a6448268.png)


##3.2 別アカウントのClassic Infrastructureへの接続
再度`Add Connection`を選択。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/e4c5cb66-5b3e-cb2a-7a0c-7d3c7c9817b5.png)

- 別アカウントへの接続なので、`Request connection to a network in another account`
- Network Connection: `Classic Infrastructure`
- Cloud Account ID: 接続先アカウントにて、Manage -> Account -> Account Settingsで表示されるIDを入力する。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/e16e532b-21fe-91ad-5abf-dfa27b248d5a.png)
- Connection name: 任意


これでaddすると、以下のようにpending approval状態になる。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/2bcbf8b3-e569-a0c4-cba8-9dd489a0721a.png)

##3-3. 接続先アカウントでの承認処理
接続先アカウントでは、以下のようにconnection requestが来ている。

1. 対象のTransit Gatewayを選択する。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/a0758994-91eb-f33e-91e8-159caa70f033.png)
2. Approveを押下。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/7fac654e-351e-9fdb-6e66-f3eb12e2c576.png)
3. もう一度Approveを押下。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/210efd30-99db-6a42-826b-cc9763573410.png)
4. 1-2分待っていると、`Attached`状態になる。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/fa04a863-9e96-33a5-d738-c4790c67bc2c.png)



元アカウントの方でも`Attached`状態になっている。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/788e0227-644a-37f7-4b04-2773b03c60fd.png)



#4. TOK02のVSIからの接続テスト

- Classic InfrastructureのVSIは10.0.0.0/8宛のパケットはBCRに転送されるようにstatic routingの構成が行われているため、特にrouting設定は必要ない。
- IPアドレスのバッティングもない

ため、security groupなどでblockされていない限りは特に追加設定なしに接続が可能。
以下の検証では自アカウントのTOK02のVSIから、別アカウントの以下のVSIにpingで接続確認してみたが、この結果から分かる通り、Classic Infrastructure同士の接続であれば、Classic InfrastructureのDC間が相互に通信可能のなっているため、利用するTransit Gatewayがたとえ`Local Routing`であっても、どこのDCとも通信可能であることが確認できた。

- 接続元VSI（自アカウント）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/637abe32-72da-0c1c-6e2a-80895088c719.png)
- 接続先VSI（別アカウント）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/a7c0c9a2-75e5-8bc8-6206-67bfdf99b30f.png)



##4-1. TOK02のVSI（自アカウント） -> TOK02のVSI（別アカウント）: 接続可能

```
[root@syasudacentos7 ~]# ping 10.132.100.77 -c 3
PING 10.132.100.77 (10.132.100.77) 56(84) bytes of data.
64 bytes from 10.132.100.77: icmp_seq=1 ttl=59 time=0.644 ms
64 bytes from 10.132.100.77: icmp_seq=2 ttl=59 time=0.672 ms
64 bytes from 10.132.100.77: icmp_seq=3 ttl=59 time=0.794 ms

--- 10.132.100.77 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.644/0.703/0.794/0.068 ms
```

##4-2. TOK02のVSI（自アカウント） -> TOK05のVSI（別アカウント）: 接続可能

```
[root@syasudacentos7 ~]# ping 10.193.131.2 -c 3
PING 10.193.131.2 (10.193.131.2) 56(84) bytes of data.
64 bytes from 10.193.131.2: icmp_seq=1 ttl=55 time=2.41 ms
64 bytes from 10.193.131.2: icmp_seq=2 ttl=55 time=1.55 ms
64 bytes from 10.193.131.2: icmp_seq=3 ttl=55 time=1.53 ms

--- 10.193.131.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.535/1.832/2.412/0.411 ms
```

##4-3. TOK02のVSI（自アカウント） -> OSK21のVSI（別アカウント）: 接続可能

```
[root@syasudacentos7 ~]# ping 10.8.38.158 -c 3
PING 10.8.38.158 (10.8.38.158) 56(84) bytes of data.
64 bytes from 10.8.38.158: icmp_seq=1 ttl=54 time=9.22 ms
64 bytes from 10.8.38.158: icmp_seq=2 ttl=54 time=8.34 ms
64 bytes from 10.8.38.158: icmp_seq=3 ttl=54 time=8.35 ms

--- 10.8.38.158 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 8.345/8.642/9.226/0.426 ms
```

##4-4. TOK02のVSI（自アカウント） -> SNG01のVSI（別アカウント）: 接続可能

```
[root@syasudacentos7 ~]# ping 10.117.155.77 -c 3
PING 10.117.155.77 (10.117.155.77) 56(84) bytes of data.
64 bytes from 10.117.155.77: icmp_seq=1 ttl=53 time=69.7 ms
64 bytes from 10.117.155.77: icmp_seq=2 ttl=53 time=68.7 ms
64 bytes from 10.117.155.77: icmp_seq=3 ttl=53 time=68.8 ms

--- 10.117.155.77 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 68.784/69.123/69.768/0.504 ms
```


#5. HKG02のVSIからの接続テスト

- 接続元VSI（自アカウント）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/29f0c30b-2832-9287-94d6-694258b98ef6.png)
- 接続先VSI（別アカウント）![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/a7c0c9a2-75e5-8bc8-6206-67bfdf99b30f.png)

##5-1. HKG02のVSI（自アカウント） -> TOK02のVSI（別アカウント）: 接続可能

```
[root@syasudahkg ~]# ping 10.132.100.77 -c 3
PING 10.132.100.77 (10.132.100.77) 56(84) bytes of data.
64 bytes from 10.132.100.77: icmp_seq=1 ttl=54 time=58.5 ms
64 bytes from 10.132.100.77: icmp_seq=2 ttl=54 time=52.9 ms
64 bytes from 10.132.100.77: icmp_seq=3 ttl=54 time=52.9 ms

--- 10.132.100.77 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 52.905/54.810/58.558/2.650 ms
```

##5-2. HKG02のVSI（自アカウント） -> TOK05のVSI（別アカウント）: 接続可能

```
[root@syasudahkg ~]# ping 10.193.131.2 -c 3
PING 10.193.131.2 (10.193.131.2) 56(84) bytes of data.
64 bytes from 10.193.131.2: icmp_seq=1 ttl=54 time=54.5 ms
64 bytes from 10.193.131.2: icmp_seq=2 ttl=54 time=59.2 ms
64 bytes from 10.193.131.2: icmp_seq=3 ttl=54 time=45.2 ms

--- 10.193.131.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 45.209/52.985/59.221/5.829 ms
```

##5-3. HKG02のVSI（自アカウント） -> OSK21のVSI（別アカウント）: 接続可能

```
[root@syasudahkg ~]# ping 10.8.38.158 -c 3
PING 10.8.38.158 (10.8.38.158) 56(84) bytes of data.
64 bytes from 10.8.38.158: icmp_seq=1 ttl=49 time=79.1 ms
64 bytes from 10.8.38.158: icmp_seq=2 ttl=49 time=65.9 ms
64 bytes from 10.8.38.158: icmp_seq=3 ttl=49 time=69.0 ms

--- 10.8.38.158 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 65.958/71.402/79.171/5.643 ms
```

##5-4. HKG02のVSI（自アカウント） -> SNG01のVSI（別アカウント）: 接続可能

RTTが150msec近いのは、TGWが東京にあるためHKG02 -> Tokyo -> SNG01という通信になっているためだと思われる。

```
[root@syasudahkg ~]# ping 10.117.155.77 -c 3
PING 10.117.155.77 (10.117.155.77) 56(84) bytes of data.
64 bytes from 10.117.155.77: icmp_seq=1 ttl=43 time=156 ms
64 bytes from 10.117.155.77: icmp_seq=2 ttl=43 time=152 ms
64 bytes from 10.117.155.77: icmp_seq=3 ttl=43 time=146 ms

--- 10.117.155.77 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 146.183/151.728/156.981/4.413 ms
```