IBM Cloud: VCS v4.8で修正されたESXi Firewallの構成(NFS)と"/etc/hosts"について

# はじめに
IBM CloudのVMware Solutionsにおける[VCS version 4.8のrelease notes](https://cloud.ibm.com/docs/vmwaresolutions?topic=vmwaresolutions-vmwaresolutions-relnotes#june-2022)には、

```
VMware ESXi firewall configuration for NFS - issue fixed

    IBM Cloud identified a problem with the VMware ESXi firewall configuration for NFS feature, which might cause some firewall rules to be lost during the update. This problem is now fixed.
```

という記述があった。この仕様変更についてまとめてみた。こちらの[IBM Cloud docs: Why did my host lose connection to my NFS datastore?](https://cloud.ibm.com/docs/vmwaresolutions?topic=vmwaresolutions-trbl_esxi_firewall_config_nfs&locale=en)も参照のこと。


# 以前の仕様
以前のVCSでは、下記画像のようにESXi FirewallにてNFS Clientのoutgoingの許可IPアドレスをピンポイントで指定していたようだ。File Storage(NFS)のFQDNは本来複数のIPアドレスを返すが、`/etc/hosts`にてその内の1つにのみ制限している。もしここで指定したFile StorageのIPアドレスが計画メンテナンスで一時的にアクセスできなくなった場合は、File Storage上のVMが全停止する可能性があった。

![NFSClient-old.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/62127/ba2b0b2f-db30-6997-49b9-238fc04f48b0.jpeg)

```
[root@host0:~] cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1	localhost.localdomain localhost
::1		localhost.localdomain localhost
10.193.72.206	host0.vcs65.ibm.local host0
10.201.206.43	fsf-tok0501b-fz.service.softlayer.com
```

# VCS v4.8での変更内容

以下のように、ESXi Firewallではsubnetレベルで指定し、DNSを使って名前解決したIPアドレスにアクセスするように構成されている。
![NFSClient-new.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2746922/06405269-8dfd-e9dc-fe7d-809860b5be89.jpeg)


```
[root@vcs48000:~] cat /etc/hosts
# Do not modify this file directly, please use esxcli.
127.0.0.1	localhost.localdomain localhost
::1		localhost.localdomain localhost
10.192.64.2	vcs48000.ibm.vcs.local vcs48000
```


以下は注意点である。

- VCS環境では、vCenter/ESXi/NSXなどの名前解決を行うために、Classic Infrastrutureで用意されている`10.0.80.11`/`10.0.80.12`のシステム提供のDNSではなく、ユーザー独自のAD/DNSサーバーを利用している（このAD/DNSでは、VCS独自のDNSレコード以外を`10.0.80.11`/`10.0.80.12`を参照するように構成している。[この記事のDNS構成情報](https://qiita.com/testnin2/items/1cb0630f53e166994bff#3-4-dns%E6%A7%8B%E6%88%90)も参考のこと）。よって、このAD/DNSサーバーにアクセスできないと（こうしたコンポーネントにもアクセスできないし）ストレージアクセスのための名前解決もできない。
- VCSでは注文時にAD/DNSとして`VSI 1台構成`もしくは、`ESXi上のVM2台構成`のいずれかを選択できる。
    - `VSI 1台構成`だと、AD/DNSがSPOFになる。よって、もう一台AD/DNSサーバーを増やした方が良い。
    - `ESXi上のVM2台構成`ではSPOFにはならないが、どちらもFile Storage(NFS)上に構成されている。そのため、万が一両方のVMが停止してしまうと、NFSアクセスするための名前解決を提供するDNSサーバーにアクセスできなくなり、結果としてESXiからFile Storageもマウントできなくなってしまう。つまり、VCS環境を起動できなくなる。そのため、AD/DNSサーバーは必ず1台は起動させた状態でメンテナンスをすること。[IBM Cloud docs: Why did my host lose connection to my NFS datastore?](https://cloud.ibm.com/docs/vmwaresolutions?topic=vmwaresolutions-trbl_esxi_firewall_config_nfs&locale=en)にも書かれているように、万が一両方のVMが停止してしまった際には、一時的にESXiホストの/etc/hostsに従来のように名前解決するための設定を入れるなどの回避策で緊急避難的に起動できるが、こういう事態を避けるためには、もしかしたら片方のVMはFile Storageではなくローカルディスクに配置した方が安全なのかもしれない。

>If all your directory controllers are offline, then storage mounts might fail. To recover from this situation, temporarily add entries to /etc/hosts for the storage volume. To reduce the likelihood of this situation, you can create extra domain controllers or move at least one of your domain controllers from shared storage to local storage.