ESXi の ポート 902 について
極一部のユーザーに熱狂的な視線を浴びる vSphere の機能に ポート 902 にまつわるモノがあります。
通常の vCenter/vSphere 管理者も、日常的に vSphere の ポート 902 を利用していますので、それほど特別なモノではありません。vSphere ESXi のポート 902 は以下の機能を提供しています。
- MKS (Keyboard、Mouse、Screen) 機能 (VNC)
- NFC (Network File Copier) 機能
- ServerDaemonProtocol 機能 (SOAP)
- VMXARGS 機能
このうち最後の 2 つは内部過ぎるため割愛します。上記の機能は ESXi のポート 902 に telnet でアクセスすることで確認できます。
pollux:~ ohisa$ telnet x.x.x.x 902
Trying x.x.x.x...
Connected to hoge.hoge.hoge
Escape character is '^]'.
220 VMware Authentication Daemon Version 1.10: SSL Required, ServerDaemonProtocol:SOAP, MKSDisplayProtocol:VNC , VMXARGS supported, NFCSSL supported
この Hello メッセージの後は SSL での通信となり平文での通信ではないのでご安心を。
なお、上記 4 つの機能 (プロトコル) を マルチプレキシングしているのがポート 902 なので、画面転送 (VNC) だけを切り出す、などということは出来ません。マジックナンバーでプロトコルを切り替えているわけですが、公開されていない以上無理と割り切るほかありません。
また、旧来のクラシック ESX (Console OS が RHEL ベースの vSphere) の場合は、最初、ポート 903 でアクセスし、その後 ポート 902 に接続し直す、という処理が行われています。ポート 903 は Console OS がオープンし、ポート 902 は vmkernel がオープンしています。ポート 903 で処理し続けてしまうと Console OS の負荷があがってしまうため、初期処理のみを Console OS のポート 903 で処理し、以後は vmkernel のポート 902 で処理が行われます。
以降では、MKS 機能と NFC 機能について説明します。
MKS 機能
仮想マシンのコンソールを操作可能としている機能です。中身は VNC と同一なのでしょうが、如何せんポート 902 でマルチプレキシングされているので、通常の VNC クライアントで見ることは出来ません。唯一 vmrc (VMware Remote Console) プラグインで操作が可能になっているくらいです。
ポート 902 を通じて提供されるこの機能は、vmx ファイルに以下のような値を追加して実現出来る VNC 機能とは異なります。
remotedisplay.vnc.port="5900"
remotedisplay.vnc.enabled="true"
remotedisplay.vnc.password="yourpassword"
この方法で、確かに通常の VNC クライアントでアクセス可能になりますが、問題の方が多くなります。
- パスワードが平文
- 仮想マシン1台に付き、ポートを一つ消費
- つまり DRS/vMotion を前提としたクラスタでは、クラスタ内の仮想マシン毎に VNC 用のポート番号が一意でなければならない
- 仮想マシンが vMotion した際に追随できない
家ラボならまだしも業務環境にはお勧めできません。
よく vCenter に vSphere Client で接続できるのに、仮想マシンのコンソールが開けない、といった問題に当たることがあります。これは、クライアント PC が ESXi の名前解決が出来ない場合、クライアント PC から ESXi に対し IP Reachable ではない場合、あるいは、途中のファイヤーウォールでポート 902 が封じられている場合が原因です。仮想マシンのコンソールを開く機能が 、vmware-vmrc.exe として別プロセスで起動し vmware-vmrc.exe が vCenter と仮想マシンが稼働している ESXi に通信を行うためです。なお、別プロセスとなるため認証情報を引き継ぐ必要がありますが、これには短時間だけ有効なチケットを用いることで実現されています 。vMotion が発生した場合は、vmwware-vmrc.exe が vCenter に対象の仮想マシンが何処の ESXi に移動したかを問い合わせ、その ESXi に再接続します。以上は、vSphere Client と vSphere Web Client (Windows) の場合です。
vSphere Web Client に Mac でアクセスした場合は、これとは異なる状況となります。Mac のターミナルで 「netstat -an」を使って観察したり、コンソールのブラウザタブの HTML ソースを見ると分かります。Mac でコンソールを開くときは、vmware-vmrc.exe などのネイティブアプリケーションではなく、コンソールは HTML5 で描画されています。なお、データ転送プロトコルは SPDY で VNC ではありません (VNC を SPDY で送っているだけかも知れませんが)。これは、vCenter Server 上でコンソールの中継サーバーがポート 7331 で動作しているためです。このため、Mac がクライアントの場合、コンソール画面を表示するだけならば ESXi のポート 902 にアクセスする必要はありません。ただし、ファイルのアップロードを行う場合は、後述の NFC 機能を利用するため、Mac クライアントであっても ESXi のポート 902 と通信する必要があります。
NFC 機能
NFC といってもおサイフ携帯や電子マネーで使われている NFC ではなく、VMware 独自のプロトコルの Network File Copier の略です。主に ESXi とのファイル転送に利用されます。よく管理者から利用するのはデータストアブラウザによるファイルのアップロード/ダウンロードでしょう。また、vSphere Replicatioin の受け側における VRMS ➡ ESXi のデータ転送や、vCenter のゲスト OS カスタマイゼーションでも用いられるので、結構要所で使われている大事な機能です。もう久しく関わっていませんが、vCenter Converter で Windows マシンを移行する際にも使われます。
まとめ
- ポート 902 はマルチプレキシング処理が行われている
- vmware-vmrc.exe は vCenter だけではなく、直接 ESXi にも通信を行う
- クライアントから仮想マシンのコンソールが開けない場合、ESXi の名前解決、ESXi ポート 902 のオープンへの疎通を確認
- Mac クライアントは、仮想マシンのコンソールを vCenter から SPDY でデータを受け取り HTML5 で描画
- NFC はファイル転送だけでなく、vSphere Replication の受信側やゲスト OS カスタマイゼーションでも利用される
- コンソールについてより詳しくは こちらで。VMRC SDK for vSphere 5.5
- 黒魔術バンザイ
[変更履歴]
2014.06.14 暗号化と vMotion 時の挙動を追記