VMware ESXi 32ビットマスクでfirewallの設定を行った時の不具合

VMware-ESXi-firewall

現在、名古屋(愛知県)で行っている VMWare esxiの構築が佳境を迎えています。バージョンは5.1。最新は5.5になりますが、エンドユーザー様の要望から5.1を利用しての構築です。サーバ仮想化はトレンドだけあって、esxi構築についてのご相談を少しずつですが、頂いています。しっかりと設計を行って構築、運用を行うと、これほど便利なものもありません。VDIなどデスクトップ仮想化はコスト面や導入規模を考えるとハードルが高いところですが、サーバー側の仮想化なら、構成次第で安価なスモールスタートが可能です。

仮想化に興味はあるが、見積もり依頼を行ったら、法外な見積もりが出てきたという経験がある方、是非、弊社までお気軽にお問合せ下さい。そんなVMwareですが、意外なところで問題が発生したので、今回なそのお話と対策について記載したいと思います。

1. esxiにアクセス制限を設定する

急な要件追加でesxi本体のhttpsにアクセス制限を設定する必要が出てきました。
esxi側でhttpsを利用するサービスはvsphere clientとesxi本体のWeb Accessです。
デフォルトのfirewall設定ではhttpsはどこからでも利用できるようになっていますが、この部分について、特定のIPからのみに制限を掛けたいというお話でした。
esxiのFirewallはGUIから容易に設定変更が可能ですが、これを甘く見て意外なところで嵌ってしまう結果に。

2. GUIからのIPアドレス登録

vCenter ServerへvSphere Web Clientで接続して、該当するesxiのfirewallを設定しました。
デフォルトでは「任意のIPアドレスから接続を許可する」にチェックが入っているため、このチェックを外し、追加するIPアドレス、もしくはIPアドレス/サブネットマスクという形で設定欄に入力を行います。
今回は 192.168.123.10/32を追加する前提で話を薦めます。
許可するIPを記載する欄に192.168.123.10/32と入力して、[OK]をクリック。
これで通常だと設定が完了となるのですが、様子が変です。
追加したIPが反映されません。
IPを再度、追加/削除しようとすると

Ip address doesn't exist.

とのエラーが出力され、削除操作が完了できません。
GUIからだと問題の判断がしにくいのでsshで接続してesxcliコマンドからfirewallの確認をしてみます。

# esxcli network firewall ruleset allowedip remove --ruleset-id vSphereClien
t --ip-address 192.168.123.10

結果は同じです。
許可IPを確認するコマンドを利用してもエントリが削除されていません。

# esxcli network firewall ruleset allowedip list --ruleset-id vSphereClient
Ruleset Allowed IP Addresses
------------- -----------------------------------------------
vSphereClient 192.168.241.10

Firewallに関係する操作の殆どを行うことが出来なくなったため、異常が発生したと判断し、トラブルシュートを行いました。

3. 32ビットマスクでのfirewall登録がNG

ログや設定を確認して、大凡の原因が理解できました。
恐らく/32ビットマスクをつけてIPアドレスを登録してしまうと、Firewallエントリの操作が出来なくなるようです。
このエントリは/etc/vmware/esx.confに追加されています。
例えば/32を付けたIPアドレスを登録すると、esx.confに以下のように記載されます。

/firewall/services/vSphereClient/allowedip[0000]/ipstr = "192.168.123.10/32"

このエントリを削除出来なくなることが問題だと判断できます。
この状態になると、対応が難しくなりますが、次の章で紹介する手順で対応できます。

4. esx.confからエントリを手動で削除する

/32を付与して登録したIPはGUIからでは削除できないので、以下の手順で削除します。

4-1. esxiでSSHサービスの有効化

esxiのGUIからSSHサービスを有効化します。
※esxiのSSHサービスを有効化する手順は「esxi で仮想マシンの保存先フォルダ名を変更する」
を参照下さい。

4-2. 該当するエントリを手動で削除

sshクライアントでesxiへ接続し、viでesx.confを開きます。

# vi /etc/vmware/esx.conf

esx.confを開いたら/32が記載されている部分を検索します。
通常、以下のように記載されています。

/firewall/services/vSphereClient/allowedip[0000]/ipstr = "192.168.123.10/32"

この行を削除して、esx.confを保存します。

4-3. firewall moduleの再ロード

設定を反映させるためにESXiでfirewall moduleを再ロードします。
再ロードは以下のコマンドで行います。

# esxcli network firewall unload
# esxcli network firewall load

再ロード後、削除できなかったIPアドレスが消えているかを確認します。
エントリがvsphere clientに設定されている場合、以下のコマンドで確認できます。

# esxcli network firewall ruleset allowedip list --ruleset-id vSphereClient
(結果)
Ruleset Allowed IP Addresses
------------- --------------------
vSphereClient

上記のようにエントリが削除されていれば、対応は完了です。
/32を付与するのは、通常のfirewallを利用している場合、指定してしまうことが多いのですが、esxiのfirewallでは付与しないことを気を付けて頂ければ、今回の問題に合致することはありません。
意外なところで嵌る、そんなVMwareでした。

  • この記事を書いた人
rem-profile-photo

レムシステム

レムシステムはPC・サーバー・ネットワークでの業務効率化を主な業務としている会社です。全国に対応しています。

-VMware