06. IBM Cloud: VMware as a Service（VMWaaS) - 検証: IBM Cloud private networkへの通信におけるSNATの必要性

# 1. はじめに

前稿までにRHELをプロビジョニングしていったんVDCへの通信が可能になったので、ここから少しずつ深掘りをしていきたいと思います。本稿では、[この記事](https://qiita.com/testnin2/items/3575b27c2ec2b6242ee6#6-nat%E3%81%AE%E6%A7%8B%E6%88%90)にて、

>IBM Cloud private networkはVDC外部であるため、たとえIBM Cloud private networkへの通信であってもExternal IPを使ってSNATが必要になります。VDCにとって、外部接続用のIPアドレスとして認識されているIPアドレスは、IBM CloudポータルのVDC詳細画面に記載されていたIPアドレス範囲に限ります。

という記述を書いたので、その検証をしたいと思います。。

- [01. IBM Cloud: VMware as a Service（VMWaaS)の概要](https://qiita.com/testnin2/items/d39ba856f70fc14ea719) 
- [02. IBM Cloud: VMware as a Service（VMWaaS) - VDCの注文](https://qiita.com/testnin2/items/a3630d5a532a6ce48720)
- [03. IBM Cloud: VMware as a Service（VMWaaS) - VDCの追加注文](https://qiita.com/testnin2/items/666a8a03db85f983f56a) 
- [04. IBM Cloud: VMware as a Service（VMWaaS) - 外部接続のためのネットワークとNAT/Firewallを構成する](https://qiita.com/testnin2/items/3575b27c2ec2b6242ee6) 
- [05. IBM Cloud: VMware as a Service（VMWaaS) - RHELをプロビジョニングして疎通確認を行う](https://qiita.com/testnin2/items/56901ef332ee060fcf2f) 
- [06. IBM Cloud: VMware as a Service（VMWaaS) - 検証: IBM Cloud private networkへの通信におけるSNATの必要性](https://qiita.com/testnin2/items/5add312256d1e264e31f) 
- [07. IBM Cloud: VMware as a Service（VMWaaS) - 検証: isolated networkとの通信](https://qiita.com/testnin2/items/9bc1b57b9636071b7239)
- [08. IBM Cloud: VMware as a Service（VMWaaS) - 検証: routed network間の通信](https://qiita.com/testnin2/items/fa9426df262368ddc2ef) 
- [09. IBM Cloud: VMware as a Service（VMWaaS) - Data Center Groupの構成](https://qiita.com/testnin2/items/f940550d7564db526531) 
- [10. IBM Cloud: VMware as a Service（VMWaaS) - Distributed Firewallの構成](https://qiita.com/testnin2/items/26dd06d28effbd83ff9e) 
- [11. IBM Cloud: VMware as a Service（VMWaaS) - VDC間のVM/vApp Migration](https://qiita.com/testnin2/items/381c5e6db4fdd7ed64d6)
- [12. IBM Cloud: VMware as a Service（VMWaaS) - VMWaaS APIの実行例](https://qiita.com/testnin2/items/3e0e86a25bfd06a165bf)
- [13. IBM Cloud: VMware as a Service（VMWaaS) - VMware Cloud Director OpenAPIの実行例](https://qiita.com/testnin2/items/420e55a06255d626a471) 
- [14. IBM Cloud: VMware as a Service（VMWaaS) - 検証: VIP切り替えによる高可用性構成の確認（手動切替）](https://qiita.com/testnin2/items/fead2339a999242ecae9) 
- [15. IBM Cloud: VMware as a Service（VMWaaS) - 検証: VIP切り替えによる高可用性構成の確認（keepalived）](https://qiita.com/testnin2/items/2a5c9660ccfab74faa49) 
- [16. IBM Cloud: VMware as a Service（VMWaaS) - Transit Gateway接続](https://qiita.com/testnin2/items/1ec6223b6713eb58e156) 
- [17. IBM Cloud: VMware as a Service（VMWaaS) - Veeam Backup and Replication service連携](https://qiita.com/testnin2/items/69fd29db9f8cc313e353) 

# 2. ネットワーク設定の再掲

[IBM Cloud: VMware as a Service（VMWaaS) - 外部接続のためのネットワークとNAT/Firewallを構成する](https://qiita.com/testnin2/items/3575b27c2ec2b6242ee6) で設定したネットワーク設定を再掲します。

- Network

| Name | Scope | Routed or Isolated |Distributed Routing | Gateway CIDR | 
|:-|:-|:-|:-|:-|
| nw1-routed-vdc01 |mt-vdc01 |Routed| Enabled | 192.168.100.1/24  | 


- IP Sets

| IP Set name | Address range |
|:-|:-|
| IBM Cloud Private Network  |  161.26.0.0/16, 166.8.0.0/14 |
| syasuda-homeaddress  |  111.xx.xx.xx/24 |

- Edge Firewall

| rule  | firewall rule name | protocol | source<br>(IP Set等で指定） | destination<br>(IP Set等で指定）|action|
|:-:|:-:|:-:|:-:|:-:|:-:|
| 1  | IBM Cloud Private Network  |  - | ANY  | IBM Cloud Private Network| Allow  |
| 2  | allow-from-syasuda  |  SSH | syasuda-homeaddress| ANY| Allow  |
| default  | default_rule  | -  | ANY  | ANY  | Drop  |

- NAT

| NAT name | NAT Type | External IP<br>(VDC外部との通信に利用するPublic IP) | Internal IP<br>(NATルールが適用されるVDC内のネットワーク） |
|:-|:-|:-|:-|
| snat-to-external  | SNAT  |  150.xx.xx.xx  |  0.0.0.0/0 |
| dnat-to-jumpserver01  | DNAT  |  150.xx.xx.yy | 192.168.100.2<br>（この後、プロビジョニングするサーバーに割り当てる予定のIPアドレス）  |

- [VDCネットワークきほんのき](https://qiita.com/testnin2/items/3575b27c2ec2b6242ee6#2-vdc-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E5%9F%BA%E6%9C%AC%E3%81%AE%E3%81%8D)


# 3. 検証

元々、IBM Cloud Private Networkへの通信をする際には、IBM Cloud管理のProvider Gateway(T0)やその先のGatewayなどで暗黙的にMasquaradeが実施されるものだと私は思っていました。なのでユーザー側でわざわざEdge GatewayでSNATを構成する必要はないと思っていました。しかし、この考えは間違いであり、冒頭で述べたようにIBM Cloud Private Networkへの通信であってもSNATは必要です。

試しに、以下のようにSNATを無効にしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/ebfbd573-ea4f-d085-6b76-d3434271de09.png)

すると、jump serverにはSSHでログインできますが、IBM Cloud Private Networkへの接続はできなくなります。この結果は、明らかに[SNAT設定時の結果](https://qiita.com/testnin2/items/56901ef332ee060fcf2f#5-ibm-cloud-private-network%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A%E7%A2%BA%E8%AA%8D)と異なります。

```
[root@jumpserver ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 161.26.0.10
nameserver 161.26.0.11
[root@jumpserver ~]# ping 161.26.0.10
PING 161.26.0.10 (161.26.0.10) 56(84) bytes of data.
^C
--- 161.26.0.10 ping statistics ---
19 packets transmitted, 0 received, 100% packet loss, time 18411ms

[root@jumpserver ~]# dig s3.direct.jp-tok.cloud-object-storage.appdomain.cloud

; <<>> DiG 9.16.23-RH <<>> s3.direct.jp-tok.cloud-object-storage.appdomain.cloud
;; global options: +cmd
;; connection timed out; no servers could be reached

[root@jumpserver ~]# dig private.iam.cloud.ibm.com

; <<>> DiG 9.16.23-RH <<>> private.iam.cloud.ibm.com
;; global options: +cmd
;; connection timed out; no servers could be reached
```