Re:シルの日々の戯言。

散財が生き甲斐になりかけている、デジタルガジェット大好き自称黄色いネズミの戯言。

ESXiでUSB NICを利用したいので使えるようにした

在宅勤務中にUTM*1に興味を持ってしまいまして、普通にインターネット接続するのとは別の実験専用ネットワークが必要となりました。

やり方は様々ですが、手持ちでYAMAHA NVR500とL-03Dを持て余しているので、純粋にもう1つインターネット接続可能な小規模ネットワークを作ってしまおうと思い、以下のようなネットワークを目論んでいます。*2

Flet's            MVNO SIM(OCN Mobile One)
 |                      |
[ONU]              [L-03D]
 |                      |
 |(LAN2)          (USB1)|
[RTX1200]         [NVR500]
 |(LAN1)           (LAN)|
 |                      |
 +------[ESXi 7.0]------+
 |(OnBoard)    (USB NIC)|
 |                      +---[UTM検証機(VM)]
 |                      |
各種機器            テスト用仮想マシン郡
/仮想マシン郡

今回ThinkPad T440pをESXiサーバにしている都合上、NICを増やす場合はUSBを利用する必要があります。・・・ESXiは基本的にIntelNICしか使えず、カニさんマークでお馴染みのRealtekNIC*3を使おうとするのならばカスタマイズISOファイルを作成してインストールに望む必要があります。
sylve.hatenablog.jp

そんな状況下、根本的な問題としてUSB NICは使えるのか。*4

結論から言うとUSB NICイケる

ESXiを導入した機器のコンソール画面には黄色と灰色の如何にもCUIと言うような画面、実際の操作はWeb UIからと言う状態でUSB接続のNICが使えるかと言うと、結論としては使えます。

USB NICのESXi向け汎用ドライバが公開されているので、ドライバを適用してしまえば利用可能です。
flings.vmware.com

但し、注意点としては動作条件として以下のように綴られています。

VMware ESXi 6.5, 6.7 & 7.0
USB Network Adapter with AX88178a, AX88179, RTL8152 or RTL8153 Chipset

利用可能なUSB NICの条件としてチップが限定されています。
多くの場合はASIX/Realtekのいずれかが採用されていると思われますが、どうやらUSB NICの選定に注意する必要がありそうです。

それではどうやってUSB NICのチップを特定するのかと言うと・・・、・・・とりあえずWindowsなりLinuxなりでぶっ刺してみて認識されるデバイスを確認するのが手っ取り早い気がしますが、調達前に知りたいとなると・・・ぐぐるしか無いかも知れません。

例えば私の環境下で余っていたUSB NICのEDC-GUA3-Bは、Googleに「(カラーリングを意味する型番を除いた)*5EDC-GUA3 Chip」のキーワードで検索すれば先駆者様の記事が出てきて、AX88179を採用している・・・と言うことを知ることが出来ます。

デバイスドライバの適用方法

適用方法については、先日綴ったESXiのパッチ適用方法に似ています。
sylve.hatenablog.jp

個人的な方法としては以下の感じです。

  1. USB NICのドライバをダウンロードする。
    1. 先のページ左側の「I have read and agreed to the Technical Preview Licens」のチェックを付ける。
    2. 適用したいESXiのバージョン(に合うドライバ)を選択する。(ESXi 7.0ならESXi700-VMKUSB-NIC-FLING-(以下略)を選択する。)*6
    3. 緑色の「DOWNLOAD」ボタンをクリックする。
  2. ESXiのWeb UIからダウンロードしたドライバ(ZIPファイル)をデータストア上にアップロードする。
    1. ESXi WebUIにログインする。
    2. ストレージ→データストアのデータストアブラウザから任意の場所にドライバ(ZIPファイル)をアップロードする。
  3. ホスト→アクション→サービス→SSHの有効化をクリックする。
  4. TeraTermなり何なりでESXiサーバにSSH経由でログインする。*7
  5. コマンド入力:esxcli software vib install -d /vmfs/volumes/(データストアのストレージ名称)/(ドライバ格納ディレクトリパス)/ESXi700-VMKUSB-NIC-FLING-(中略).zip
  6. 少し時間を要した後に表示されるInstallation Resultで「The update completed successfully(早い話が正常終了)」のメッセージを確認する。
  7. Installation Resultの中に「Reboot Required: true」と再起動が必要とのメッセージも出力されているのでESXiサーバの再起動を実施する。
    1. 再起動前に起動中の仮想マシンをすべてシャットダウンしておく。
    2. (Web UI上の)ホスト→アクション→メンテナンスモードへの切り替えをクリックして、メンテナンスモードに切り替えておく。
    3. Web UIから再起動を選ぶなり、SSH画面でrebootと叩くなりで再起動する。
  8. 再起動中にUSB NICを差し込んでおく。
  9. 再起動後、WebUIからネットワーク→物理NICタブで対象のUSB NICが認識されていることを確認する。*8
  10. とりあえず再起動終わってUSB NIC認識を確認したらメンテナンスモードを解除しておく。

認識さえされてしまえばこっちのものです。
ESXi上で新しい仮想スイッチを作成して、関連付け(リンクアップの追加)して、ポートグループの設定を済ませてしまえば完了です。*9

何か小綺麗に記事まとまってるが、出典はある

珍しく戯言日記にしては小綺麗に内容がまとまってる・・・と自画自賛をしてみるが、なんのこたぁ無い、先駆者様の素晴らしい記事があっただけです。
tech-mmmm.blogspot.com

しかし、デフォルト無効化されているSSHを有効化させてコマンドラインを引っ叩く必要があるのは正直手間だなぁ・・・。
ラクすることばかり考えるなとかお叱りの声が飛んできそうですが、せっかくWeb UIがあるのだからWeb UI上で適用出来たりしないのかしら。

ホスト→管理→パッケージタブで「アップデートのインストール」と言う項目があるのので、実はWeb UI上から適用できそうな気がしなくはないのですが、早々に手順見つけてSSH有効化させて適用させてしまったので割と後の祭り・・・。*10

まぁ、ひとまずは先駆者様の記事のお陰で私のやりたいことを達成することが出来たので、ヨシ!(現場猫感)

*1:統合脅威管理(Unified Threat Management)、端的に表現するならばゲートウェイとして動作させるタイプで、これ一つでネットワーク傘下の機器を守ってやるぜ!的なセキュリティソリューションです。

*2:クローズドなテスト環境をVM内で作って、UTMのルータ機能で既存ネットワークとブリッジさせれば・・・とか思いましたが、残念ながら環境組んだ後に気づいたのだ!・・・つーか、それ今回の戯言日記の根底が崩れてしまう訳でして・・・。

*3:2000年前半にBSDユーザだった人からすると親の仇のように毛嫌いするベンダーですが、なんだかんだで広く利用されているベンダーです。

*4:いえ、そもそもの用途を考慮するとUSB NICなんて利用するとかあり得ないようなソフトウェアなんですけど・・・。

*5:-Bがブラック、-Wがホワイトです。

*6:ESXi6.5/6.7/7.0の3つが対象です。それより前のバージョンを利用している場合はESXi本体のバージョンアップ検討が必要です。

*7:そう言えばWindows10 1803辺りからOpenSSHが内包されて少し準備が必要らしいのですがPowerShellからsshコマンドが叩けるらしいですね。

*8:ドライバ欄で「uether」とされているNICがあればそれがUSB NICです。

*9:仮想マシンからNVR500側のネットワークに繋ぎたいだけなのでこれだけで済ませましたが、VMkernel NICの設定でIPアドレス持たせればテストネットワーク側からもESXiサーバを見ることが出来る・・・と思う。目的を達成したのでそれ以上のことを試していないだけですけど。

*10:次回適用する機会があったら・・・と思いつつ、多分忘れてまたぐぐってコマンドラインで適用する手段を取りそうだなぁ・・・。