Hyper-Vのネットワーク(接続の種類)について

前書き

Hyper-Vの仮想スイッチマネージャーにて、下記の3種類の接続の種類があります。

  • 外部ネットワーク
  • 内部ネットワーク
  • プライベートネットワーク

この中で、「外部ネットワーク」と「内部ネットワーク」の仮想スイッチがどのような動きをするのか、図解を用いて解説したいと思います。
※「プライベートネットワーク」は取り上げません。

仮想スイッチマネージャ管理画面

 

ここでは、Hyper-Vがインストールされているホストマシンを物理ホストマシンと呼びます。
また、Hyper-V上に構築するゲストマシンを仮想ゲストマシンと呼びます。

物理ホストマシンのOSとIPアドレスは下記の通りです。

物理ホストマシンOS Windows 10 Pro(バージョン:1803)
物理ホストマシンのIPアドレス(物理NICのIPアドレス) 192.168.10.253
ルータのIPアドレス 192.168.10.1

 

仮想ゲストマシンにネットワークアダプタを割り振っていない(仮想NICを付与していない)ときの状態は、下図のようになります。
当たり前ですが、仮想ゲストマシンはネットワークに所属していなく、物理ホストマシンからのみ操作が可能です。(リモートデスクトップ接続などはできない)

15.ネットワーク構成図_仮想NIC割り振り前

vEthernet (規定のスイッチ)

接続の種類の説明に入る前に、「vEthernet (規定のスイッチ)」について少し触れたいと思います。

Hyper-Vをインストールすると、「vEthernet (規定のスイッチ)」というネットワークアダプタが物理ホストマシンに現れます。

Hyper-Vインストール後のネットワーク接続

これは、Hyper-Vをインストールすると仮想スイッチがひとつ作成されるためです。そしてこのデフォルトの仮想スイッチの種類は「内部ネットワーク」になり、変更することはできません。

仮想スイッチマネージャ_既定のスイッチ

物理ホストマシンのNICを使用して仮想スイッチが作成され、「vEthernet (規定のスイッチ)」という名前のネットワークアダプタ(仮想NIC)が作成されたわけです。

では、この「vEthernet (規定のスイッチ)」を使用して、「内部ネットワーク」の動きについて見ていきます。

 

「内部ネットワーク」の仮想スイッチ

「内部ネットワーク」の仮想スイッチには初期状態でIPアドレスが割り振られており、DHCP機能も持っています。
「vEthernet (規定のスイッチ)」という仮想NICには初期状態でIPアドレスが割り振られており、DHCP機能も持っています。

下の図は、「vEthernet (規定のスイッチ)」を割り当てた仮想ゲストマシンでipconfigを実行した結果です。
仮想ゲストマシンのIPアドレスは「172.22.123.217」となっており、仮想スイッチ仮想NICよりDHCPで割り当てられたものです。
また、仮想スイッチ仮想NIC自身のIPアドレスは「172.22.123.209」となっており、仮想ゲストマシン上では「デフォルトゲートウェイ」と表現されています。

仮想ゲスト_ipconfig-all_既定のスイッチ

 

物理ホストマシンでipconfigを実行すると、仮想スイッチ仮想NICのIPアドレスが「172.22.123.209」であることがわかります。

19.物理ホストマシンでipconfig_E

 

「vEthernet (規定のスイッチ)」(内部ネットワーク)を使用した場合の構成を図にすると、下記のようになります。

20-2.ネットワーク構成図_既定のスイッチ_仮想NICあり

しかし、物理ホストマシン上の仮想NICは設定上目に見えないため仮想NICと「vEthernet(仮想のスイッチ)」は同等の存在となるため、下図のように物理ホストマシン上に「vEthernet(既定のスイッチ)」という名前の仮想スイッチ仮想NICが存在すると考えたほうがわかりやすいです。

20.ネットワーク構成図_既定のスイッチ

仮想スイッチが作成されると物理ホストマシン上に新しいネットワークアダプタが作られ(vEthernet (規定のスイッチ))、そこに設定されたIPアドレスが仮想スイッチ仮想NICのIPアドレスとなることがわかったので、仮想スイッチ仮想NICのIPアドレスを変更することを考えてみます。

 

「内部ネットワーク」の仮想スイッチ仮想NICのIPアドレス変更

まず、物理ホストマシン上の「vEthernet (規定のスイッチ)」のIPアドレスを「10.0.0.1」にします。つまり仮想スイッチ仮想NICのIPアドレスを「10.0.0.1」にしています。

21.既定のスイッチのIPアドレスを変更_プロパティ

仮想ゲストマシンのIPアドレスを「10.0.0.2」と設定します。仮想スイッチ仮想NICのIPアドレスは「10.0.0.1」なので、デフォルトゲートウェイとDNSサーバーのIPアドレスに「10.0.0.1」と入力します。

22.仮想ゲストマシン上の既定のスイッチのIPアドレスを変更

仮想ゲストマシンがインターネットに接続できることが確認できます。

23.仮想ゲストマシン_既定のスイッチでインターネット接続可能

この状態で、仮想ゲストマシンからルータにtracertコマンドを実行すると、物理ホストマシン上に存在する仮想スイッチ仮想NICを経由していることがわかります。

24.既定のスイッチで、仮想ゲストマシンからtracertコマンド_E

「DKTP13CSTM」は物理ホストマシンのホスト名です。

今の状態を構成図にすると下記のようになります。

25.ネットワーク構成図_既定のスイッチ_IPアドレス変更後

内部ネットワークの仮想スイッチ仮想NICに静的IPアドレスを指定でき、仮想ゲストマシンのIPアドレスも変更できることがわかりました。ここで抑えておきたいことは、内部ネットワークの仮想スイッチ仮想NICで仮想ゲストマシンが通信するときは、物理ホストマシンを通過するということです。そして、物理ホストマシンは、仮想スイッチ仮想NIC側とルータ側で、2つのネットワークに所属することになります。

ちなみに、内部ネットワークの仮想スイッチ仮想NICにはNAPT機能が備わっているため、仮想ゲストマシンはルータまで通信できてインターネットにも出ていくことができています。

「外部ネットワーク」の仮想スイッチ(物理ホストマシンとネットワークアダプタを共有する場合)

次に外部ネットワークの仮想スイッチの動きを見ていきます。

外部ネットワークには「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」というオプションが存在します。
ここでは、このオプションがONである場合について見ていきます。

仮想スイッチの名前は「外部ネットワーク 共有あり」とします。作成するときにプルダウンから選ぶのは、物理NICのデバイス名です。

31.外部ネットワーク共有ありの仮想スイッチ作成

 

Hyper-Vの仮想スイッチマネージャで「外部ネットワーク」の仮想スイッチを作成すると、物理ホストマシンの物理NICの通信機能は仮想スイッチ仮想NICに奪われます

下図は外部ネットワークの仮想スイッチ作成の物理NICのプロパティです。プロトコルのチェックも入っており、IPアドレスも設定されています。

27.物理ホスト_ネットワーク接続_外部仮想スイッチ作成前_E

 

外部ネットワークの仮想スイッチを作成したの物理NICのプロパティが下図です。
ほとんどのプロトコルのチェックが外れ、代わりに「Hyper-V Extensible Virtual Switch」にチェックが入ります。

28.物理ホストマシン_ネットワーク接続_外部ネットワーク仮想スイッチ作成後_E

そして新しく作成された仮想スイッチ仮想NIC(ここでは「vEthernet (外部ネットワーク 共有あり)」)のプロパティを開いてみると、物理NICのIPアドレスを引き継いでおり、使用するプロトコルも引き継がれています。(下図参照)

29.外部ネットワーク共有あり_プロパティ_E

つまり、外部ネットワークの仮想スイッチを作成すると、作成時に指定した物理NICは仮想スイッチ仮想NICに通信を通すだけの役割になります。

そしてこの「外部ネットワーク 共有あり」の仮想スイッチを仮想ゲストマシンに割り振ると、構成図は下記のようになります。

33.構成図_外部ネットワーク共有あり

 

 

試しに、仮想ゲストマシンからルータへtracertコマンドを実行してみると、物理ホストマシンを通過していないことがわかります。

34.仮想ゲストマシン_tracert_外部ネットワーク共有あり_E

また、仮想ゲストマシンでipconfigを実行すると、デフォルトゲートウェイはルータになっていることがわかります。

35.ipconfig_仮想ゲストマシン_外部ネットワーク共有あり_E

仮想ゲストマシンはルータとつながっている状態となり、同じルータとつながっている物理ホストマシンとは同じネットワークに属することになります。

ルータがDHCPサーバとして動作していれば、仮想ゲストマシンはIPアドレスをリースしてもらえることになりますし、ルータが作るネットワークの中でIPアドレスを静的に設定することもできます。

「外部ネットワーク」の仮想スイッチ(物理ホストマシンとネットワークアダプタを共有しない場合)

最後に、外部ネットワークの仮想スイッチで、オプションの「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」が無効である場合について見ていきます。

仮想スイッチの名前は「外部ネットワーク 共有無し」とします。

36.外部ネットワーク共有無し_仮想スイッチ作成_E

おわかりかと存じますが、外部ネットワークの仮想スイッチは物理ホストマシンが持っている物理NICの数だけ作成できます。物理NICの数がひとつの場合はひとつしか作成できません。(外部ネットワークの仮想スイッチは、物理NICの通信機能を奪うため)

「外部ネットワーク 共有無し」の仮想スイッチを仮想ゲストマシンに付与すると、ネットワーク構成図は下記のようになります。

37.構成図_外部ネットワーク共有無し

図でわかるように、物理ホストマシンはルータに接続できず、インターネットにも出ていくことができません。

これは、外部ネットワークの仮想スイッチは物理NICの通信機能を奪うことと、物理ホストマシンにネットワークアダプタ(仮想NIC)が共有していないことが同時に行ったためです。

繰り返しで恐縮ですが、物理NICの通信機能が仮想スイッチに奪われ、さらに仮想スイッチ仮想NICが物理ホストマシンに共有されていないので、物理ホストマシンはネットワーク接続を失ったのです。

物理ホストマシンに物理NICが複数存在する場合には使い道があると思いますが、インターネットに接続して使用することを前提としているWindows 10 Proでは、設定しないように気をつけたほうが良いと思います。(インターネットに接続できなくなるから)

 

後書き

最後までお読みいただきありがとうございました。

Hyper-Vのネットワーク設定では、ひとつの設定が複数の箇所の設定を担っているなど、目に見えない箇所があるため混乱することが多いと思います。そのため本記事ではなるべくシンプルに書かせていただきました。

Hyper-Vを使用する方々に、少しでも助けになれば幸いです。

マスタリングWindows Server 2016 Hyper-V (マイクロソフト関連書)

新品価格
¥7,560から
(2018/12/10 23:30時点)

 

できるPRO Windows Server 2016 Hyper-V できるPROシリーズ

 

2 件のコメント

  • IPアドレスを割り当てられるのは、仮想スイッチ ではなくて 仮想NIC ではないでしょうか。
    Hyper-Vネットワークのイロハを学んだMSCCのMURAさんの解説と読み比べると混乱していまいます。
    http://www.vwnet.jp/windows/WS12R2/Hyper-V/Hyper-V_Network.htm
    小生も実務として日常的にHyper-Vに触ったり現場の支援をしておりますが、一般的には物理サーバ上のWindows Server OSをHyper-V利用だけに使用するケースは少なく、何かしらのアプリを同時に動かしているケースが多いです。この場合は、物理サーバで使用する物理NICはアプリやサーバーOSで使用する生命線のNICになります。そのためHyper-V上で動かす仮想マシンの仮想NICが、基幹NICに影響を与えない様に、別の物理NICを仮想スイッチに割り当てることが多いです。LANケーブル接続は余分に必要ですが、ネットワークの独立性を高めるためには止む無しと思っています。このときに、仮想スイッチの設定は「物理ホストマシンとネットワークアダプタを共有しない」としています。つまり、複数NICを(例えば)同一LANに接続して、物理マシンと仮想マシンのネットワークをなるべく相互干渉しない様にするための「物理ホストマシンとネットワークアダプタを共有しない」設定だと思っています。
    そうではない使い方の場合は、物理NIC1個で共用しているパターンもあります。
    目的・前提条件・プロコンなどを最初に書いていただければ、もっと判りやすい記事になると思います。

    • 返信が遅れて申し訳ありません。

      > IPアドレスを割り当てられるのは、仮想スイッチではなくて仮想NICではないでしょうか。
      「仮想スイッチ」という表現はHyper-V上での設定の名前のため、IPアドレスが割り振れるのは「仮想NIC」とした方が正確だと思いました。記事内の表記を取り消し線を交えて修正致しました。

      また、ご指摘の通りサーバ上に仮想マシンを動作させるときは、複数の物理NICを用意するのがセオリーだと思います。サーバがネットワーク機器につながっているとして、仮想マシンとネットワーク機器の通信は物理的に分けて、通信の負荷を分散させることは必須だと思います。
      本記事はWindows 10のクライアントマシンを使用して検証を行ったため、サーバでの運用には触れることができていませんでした。

      他のご指摘事項を含め、コメントありがとうございました。

  • コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    CAPTCHA