(Windows11) Hyper-V に付随するネットワークアダプタ vEthernet を無効化する

経緯

Windows で Hyper-V をインストール・有効化すると仮想ネットワークスイッチ「vEthernet (Default Switch)」が追加されます。

その関係で、 L2 レベルの通信 (e.x. ARPテーブル探索 や NAS の初期設定ツール) を行おうとすると、探索しに行くネットワークアダプタが実際に所属している LAN ではなくこの vEthernet の方に探索しに行ってしまうのか、「接続しているはずの機器が一切見付からない」という現象が発生することがありました。

これを抑制するため、 vEthernet を無効化したいです。一方で、 Windows10 のときはネットワークアダプタの一覧 (「コントロールパネル」→「ネットワークとインターネット」→「ネットワーク接続」) でアダプタの右クリックから無効化を手動でできたのですが、 Windows11 (いわゆるおま環かもしれませんが) ではこの手動無効化がグレーアウトしておりできない状態だったため、本件のように別途対応が必要になった次第です。

対処

最初は vEthernet の無効化のみを考えていたのですが、 Hyper-V 関係のサービスを停止しないと vEthernet の無効化ができなかったため、対処としては「 Hyper-V の関係サービスを停止しつつ vEthernet を無効化する」という形を取りました。

# Hyper-V 関係のサービスを停止する
Stop-Service -Name "vmms"
Stop-Service -Name "vmcompute"
Stop-Service -Name "HvHost"
Stop-Service -Name "WSLService"

# マッチするアダプタの個数分 はい/いいえ の確認が来る
get-netadapter|where-object {$_.interfacedescription -like "*hyper-v*"}|Disable-NetAdapter

実際は例外処理等諸々あるのでもっと長いですが、やりたいことのコアとしては上述のコマンドで一式となります。

参考

サービスの停止

ネットワークアダプタの無効化

参考: トラブル例

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。