NSX(vShield Endpoint)環境下でのVMwareTools不要ドライバの削除


ことの始まり

「VMware NSX for vSphereへの移行:Japan Cloud Infrastructure Blog 」
https://blogs.vmware.com/jp-cim/2016/11/vmware-nsx-for-vsphere-migration-1.html

すでに一般サポートも2016 年 9 月 19 日に終了を迎えています。テクニカルガイダンスは2017年3月まで提供されます。
セキュリティベンダーが提供する仮想アプライアンスを使用して仮想基盤を保護されているユーザー様、または提案を予定しているパートナー様は、ご注意ください。
~~~~~~中略~~~~~~
<変更のポイント>
1.管理マネージャーが、「vShield Manager」から「NSX Manager」に変わります。NSX Managerは、vShield Managerと同様に1システムに1つ準備します。
2.新たに、仮想アプライアンス「Guest Introspection」を、各ESXiホストに配置します。Guest Introspection がvShield Endpoint の全機能を提供します

vShield-to-NSX

以上の図にはないですが、ESXiホストOSにインストールしていたvShieldEndpointドライバが、NSX環境ではゲストイントロスペクション(特殊用途専用の仮想マシン)に置き換わります。
こんな経緯で、vShieldManager環境からNSXforvShieldEndpoint環境に移行・・・。

vCloud Networking and Security (vCNS)の販売が終了されていることをご存知ですか?

知らんがな・・・。

●導入前環境

 ESXi5.5+vShieldEndpointドライバ
 vShieldManager5.X
 仮想マシンOS:WindowsServer(VMwareTools9.x)
 トレンドマイクロDeepSecurity

導入後環境

 ESXi5.5
 NSXManager6.2.X+ゲストイントロスペクション
 仮想マシンOS:WindowsServer(VMwareTools9.x)
 トレンドマイクロDeepSecurity

導入してからの不具合

 ・仮想マシンの通信がやたら遅い
 ・仮想マシンに乗るアプリケーション側の通信がたびたび断になる
 ・ゲストイントロスペクションのメモリ使用率が高騰

ヒント

「ゲスト イントロスペクションのメモリ使用率が 90% 以上に上昇するか、NSX-V 6.3 でエラー「ESX モジュールとの通信が失われました (Lost communication with ESX module)」が表示される (2151882)」
https://kb.vmware.com/s/article/2151882

Purpose
ゲスト イントロスペクションがインストールされている VMware NSX for vSphere 6.3.x 環境で、次の症状が発生します。
•ゲスト イントロスペクション (GI) エージェントレス ウイルス対策保護によって保護されている仮想マシンで、ネットワーク I/O が断続的に中断される。
•ゲスト イントロスペクション USVM のメモリ使用率がほぼ 100% に上昇すると同時に、仮想マシンへの影響が観察される。
•影響のある仮想マシンが実行されている ESXi ホストの [タスクとイベント] タブに、次のようなエラーが表示される。
ESX モジュールとの通信が失われました。 (Lost communication with ESX module.)
~~~略~~~
注:
この記事が問題に対応するためには、次の条件を満たす必要があります。
NSX for vSphere 6.3.x がインストールされている。

と書きつつ、NSX6.2.x環境でも同事象が発生中。

・この問題が観察されたクラスタにゲスト イントロスペクションがインストールされている。
・ゲスト イントロスペクション (vsepflt.sys) およびネットワーク イントロスペクション ドライバ (vnetflt.sys) が影響を受けるゲスト仮想マシンにインストールされている。

デフォルト値でVMwareToolsをインストールすると、ネットワークイントロスペクションドライバ(vnetflt.sys)は勝手に入る仕様。。。
このKBに当たりをつけて対処検討。

対処検討

上記KBより。

永続的な回避策とは、影響を受けるゲスト仮想マシンからネットワーク イントロスペクション ドライバ (vnetflt.sys) を削除することです。
vnetflt.sys をアンインストールするには、次の 3 つの方法のいずれかを使用します。
•次の追加スイッチを使用して、影響を受けるゲスト仮想マシンで VMware Tools インストーラを再実行します: /s /v"/qn REMOVE=NetworkIntrospection"

また、NSXManager環境でのVMwareTools推奨バージョンは10.0.8以降とのこと。
https://docs.vmware.com/jp/VMware-NSX-for-vSphere/6.2/rn/releasenotes_nsx_vsphere_627.html
※バージョン、システム要件、およびインストール

対処

・対処1:ゲストOS(Windows仮想マシン)のVMwareToolsのバージョンアップ(9.x⇒10.0.8)
・対処2:VMwareToolsの一部機能、ネットワークイントロスペクションドライバを削除。

対処1-2は、Tools10.0.8のインストーラを叩くことで、バージョンアップしつつ、ドライバ削除も行うことが可能。
というわけで、コマンドによるインストール手順に決定。

cmd.exe
Setup.exe /s /v "/qn REBOOT=R ADDLOCAL=ALL REMOVE=NetworkIntrospection"

setup.exeは新バージョンのVMwareToolsのインストーラのファイル名(実際のファイル名に読み替えて・・・)。/sオプションにてサイレントインストール指定。REBOOT=Rにて再起動抑止。ADDLOCAL=ALLにて全コンポーネントをインストール対象としつつ、REMOVEオプションで特定のコンポーネントを削除。ここではネットワークイントロスペクションドライバをREMOVEに指定。

①コマンドのオプションが決まったところで、バッチ作成。

toolsinstall.bat
C:\work\vmtools\Setup.exe /s /v"/qn REBOOT=R ADDLOCAL=ALL REMOVE=NetworkIntrospection"

シンプルに一行バッチ。Cドライブ直下、workフォルダ直下、vmtoolsフォルダ直下に配置したsetup.exe(VMwareTools10.0.8のインストーラ)を実行する。

②インストール。

単なるバッチなので、①のtoolsinstall.batたたくだけ。

②-aリモートインストール

わざわざサーバにログインして実行するのは面倒くさい場合、以下にて管理サーバ(vCenterが導入されたWindowsサーバなど)で実行。
※可能であれば、DomainAdminsかAdminstratorsグループのユーザにて実施することが好ましい。

PS C:\Users\Administrator> Invoke-Command -ComputerName "対象サーバコンピュータ名" -ScriptBlock {wmic process call create "C:\work\vmtools\toolsinstall.bat"} 

リモートインストールは、Invokeコマンドとwmicの新旧コマンド組み合わせ。
このリモートインストール方法がつらいのはインストールが完了したかどうかが見えないところ。
というわけで、実施する場合、実行後に15分程度待って以下を確認する。

③インストール後のVMwareToolsのバージョン確認

PS C:\Users\Administrator> $HKLM_PATH = "HKLM:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
PS C:\Users\Administrator> $HKLU_PATH = "HKCU:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
PS C:\Users\Administrator> $software = Get-ChildItem -Path($HKLM_PATH,$HKLU_PATH) | %{Get-Itemproperty $_.PsPath} | ?{$_.DisplayName -like "VM*"}  
PS C:\Users\Administrator> $software | select-object -property DisplayName,DisplayVersion

DisplayName                                                 DisplayVersion
-----------                                                 --------------
Vmware Tools                                       10.0.8


確認観点をバージョンとしたが、get-serviceコマンドでVMwareToolsのサービスの起動を確認するのもあり。
※インストール時にサービスの停止、インストール後にサービスの起動という動きをするため。

④インストール後のゲストOSリブート

shutdown /r /t 0

以上が終わったタイミングで実施。

対処してからの不具合

事象はきれいになくなっていた。

やはり、ネットワークイントロスペクションドライバ、、おまえの仕業か・・・・・・。

最終環境

 ESXi5.5
 NSXManager6.2.X+ゲストイントロスペクション
 仮想マシンOS:WindowsServer(VMwareTools10.0.8)
 トレンドマイクロDeepSecurity

vShieldManager環境からNSXforvShieldEndpointに変更する場合、VMwareToolsのコンポーネントには要注意です。

余談

筋肉で一世を風靡したシュワルツェネッガーの代表作『プレデター』(劇中でのシュワのセリフ「血が出るなら○せる(If it bleeds, We can kill it)」は座右の銘になりました)。これの続編が『ザ・プレデター』というタイトルで公開されたのですが、これがなかなかよかったっす。1作目も主役がシュワルツェネッガー、準主役は『ロッキー』のアポロ(役者:カールウェザース)という時点でだいぶ野郎臭い感じですが、本作もなかなか野郎臭い感じで、挫折した”ならずもの野郎たち”の、死に様をかけた戦いが面白かったっす。

The Predator | Official Trailer [HD] | 20th Century FOX