TL;DR

Hyper-Vでホストとゲストが通信できない場合、まず、Windowsの仮想NICができているか確認したほうが良いかも。

経緯

Hyper-Vでホストとゲストがどうしても通信できないということがありました。久々に利用したPCだったので設定がおかしくなってしまったのかも。

例えば外部スイッチにつないでホスト、ゲストともにゲートウェイまでは通信できるけどお互いへの通信ができない。別のPCからゲストへの通信はできる。 内部スイッチにつないでもだめ。

基本に立ち返ろうと、村嶋 修一氏のHyper-Vネットワークの基本を見たところ、外部ネットワークでホストと共有設定した場合、および内部ネットワークを作成した場合にホストに作成されるはずの仮想NICが無いことに気付きました。

http://www.vwnet.jp/windows/WS12R2/Hyper-V/Hyper-V_Network.htm

  1. いったんスイッチを再作成しようと思い、内部ネットワークのスイッチを削除。
  2. が、外部ネットワークのスイッチはエラーで削除できない。
  3. これは内部的におかしくなっていると判断。いったんHyper-Vをアンインストール。
  4. が、仮想NICが1つだけ残ってしまい、コントロールパネルのネットワーク接続からは削除できない(グレーアウトされている)ためデバイスマネージャーからアンインストール。
  5. その後、再起動を経て再度Hyper-Vをインストールしたところ、外部/内部ネットワークのスイッチ作成時にホスト上に対応した仮想NIC(スイッチ名が「ExternalSwitch」であれば「vEthernet(ExternalSwitch)」というNIC)が作成されていることが確認できました。

ゲスト-ホスト間の通信も問題なし。

トラブルシューティングは、目先のエラーメッセージから安直に検索するのではなく、技術的な基礎に立ち返って原因を下から追いかけることが大事ということを改めて認識しました。