前書き
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を付与していない)ときの状態は、下図のようになります。
当たり前ですが、仮想ゲストマシンはネットワークに所属していなく、物理ホストマシンからのみ操作が可能です。(リモートデスクトップ接続などはできない)
vEthernet (既定のスイッチ)
接続の種類の説明に入る前に、「vEthernet (既定のスイッチ)」について少し触れたいと思います。
Hyper-Vをインストールすると、「vEthernet (既定のスイッチ)」というネットワークアダプタが物理ホストマシンに現れます。
これは、Hyper-Vをインストールすると仮想スイッチがひとつ作成されるためです。そしてこのデフォルトの仮想スイッチの種類は「内部ネットワーク」になり、変更することはできません。
物理ホストマシンのNICを使用して仮想スイッチが作成され、「vEthernet (既定のスイッチ)」という名前のネットワークアダプタ(仮想NIC)が作成されたわけです。
では、この「vEthernet (既定のスイッチ)」を使用して、「内部ネットワーク」の動きについて見ていきます。
「内部ネットワーク」の仮想スイッチ
「vEthernet (既定のスイッチ)」という仮想NICには初期状態でIPアドレスが割り振られており、DHCP機能も持っています。
下の図は、「vEthernet (既定のスイッチ)」を割り当てた仮想ゲストマシンでipconfigを実行した結果です。
仮想ゲストマシンのIPアドレスは「172.22.123.217」となっており、仮想NICよりDHCPで割り当てられたものです。
また、仮想NIC自身のIPアドレスは「172.22.123.209」となっており、仮想ゲストマシン上では「デフォルトゲートウェイ」と表現されています。
物理ホストマシンでipconfigを実行すると、仮想NICのIPアドレスが「172.22.123.209」であることがわかります。
「vEthernet (既定のスイッチ)」(内部ネットワーク)を使用した場合の構成を図にすると、下記のようになります。
※コメントいただきまして訂正しました。古いものには×を付けて、訂正後の図はその下にあります。(2020/2/12追記)
しかし、物理ホストマシン上の仮想NICと「vEthernet(仮想のスイッチ)」は同等の存在となるため、下図のように物理ホストマシン上に「vEthernet(既定のスイッチ)」という名前の仮想NICが存在すると考えたほうがわかりやすいです。※コメントをいただき、上記の説明と下図は無い方は良いと判断し、取り消し線を入れました。「仮想NICにIPアドレスが付与されている」と考えた方がベターと判断したためです。(20202/12追記)
仮想スイッチが作成されると物理ホストマシン上に新しいネットワークアダプタが作られ(vEthernet (既定のスイッチ))、そこに設定されたIPアドレスが仮想NICのIPアドレスとなることがわかったので、仮想NICのIPアドレスを変更することを考えてみます。
「内部ネットワーク」の仮想NICのIPアドレス変更
まず、物理ホストマシン上の「vEthernet (既定のスイッチ)」のIPアドレスを「10.0.0.1」にします。つまり仮想NICのIPアドレスを「10.0.0.1」にしています。
仮想ゲストマシンのIPアドレスを「10.0.0.2」と設定します。仮想NICのIPアドレスは「10.0.0.1」なので、デフォルトゲートウェイとDNSサーバーのIPアドレスに「10.0.0.1」と入力します。
仮想ゲストマシンがインターネットに接続できることが確認できます。
この状態で、仮想ゲストマシンからルータにtracertコマンドを実行すると、物理ホストマシン上に存在する仮想NICを経由していることがわかります。
今の状態を構成図にすると下記のようになります。
※コメントいただき、下図は修正しました。修正後の図は下に配置しています。(20202/12追記)
内部ネットワークの仮想NICに静的IPアドレスを指定でき、仮想ゲストマシンのIPアドレスも変更できることがわかりました。ここで抑えておきたいことは、内部ネットワークの仮想NICで仮想ゲストマシンが通信するときは、物理ホストマシンを通過するということです。そして、物理ホストマシンは、仮想NIC側とルータ側で、2つのネットワークに所属することになります。
ちなみに、内部ネットワークの仮想NICにはNAPT機能が備わっているため、仮想ゲストマシンはルータまで通信できてインターネットにも出ていくことができています。
「外部ネットワーク」の仮想スイッチ(物理ホストマシンとネットワークアダプタを共有する場合)
次に外部ネットワークの仮想スイッチの動きを見ていきます。
外部ネットワークには「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」というオプションが存在します。
ここでは、このオプションがONである場合について見ていきます。
仮想スイッチの名前は「外部ネットワーク 共有あり」とします。作成するときにプルダウンから選ぶのは、物理NICのデバイス名です。
Hyper-Vの仮想スイッチマネージャで「外部ネットワーク」の仮想スイッチを作成すると、物理ホストマシンの物理NICの通信機能は仮想NICに奪われます。
下図は外部ネットワークの仮想スイッチ作成前の物理NICのプロパティです。プロトコルのチェックも入っており、IPアドレスも設定されています。
外部ネットワークの仮想スイッチを作成した後の物理NICのプロパティが下図です。
ほとんどのプロトコルのチェックが外れ、代わりに「Hyper-V Extensible Virtual Switch」にチェックが入ります。
そして新しく作成された仮想NIC(ここでは「vEthernet (外部ネットワーク 共有あり)」)のプロパティを開いてみると、物理NICのIPアドレスを引き継いでおり、使用するプロトコルも引き継がれています。(下図参照)
つまり、外部ネットワークの仮想スイッチを作成すると、作成時に指定した物理NICは仮想NICに通信を通すだけの役割になります。
そしてこの「外部ネットワーク 共有あり」の仮想スイッチを仮想ゲストマシンに割り振ると、構成図は下記のようになります。
※コメントいただき、図を多少修正しました。(2020/2/12追記)
試しに、仮想ゲストマシンからルータへtracertコマンドを実行してみると、物理ホストマシンを通過していないことがわかります。
また、仮想ゲストマシンでipconfigを実行すると、デフォルトゲートウェイはルータになっていることがわかります。
仮想ゲストマシンはルータとつながっている状態となり、同じルータとつながっている物理ホストマシンとは同じネットワークに属することになります。
ルータがDHCPサーバとして動作していれば、仮想ゲストマシンはIPアドレスをリースしてもらえることになりますし、ルータが作るネットワークの中でIPアドレスを静的に設定することもできます。
「外部ネットワーク」の仮想スイッチ(物理ホストマシンとネットワークアダプタを共有しない場合)
最後に、外部ネットワークの仮想スイッチで、オプションの「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」が無効である場合について見ていきます。
仮想スイッチの名前は「外部ネットワーク 共有無し」とします。
おわかりかと存じますが、外部ネットワークの仮想スイッチは物理ホストマシンが持っている物理NICの数だけ作成できます。物理NICの数がひとつの場合はひとつしか作成できません。(外部ネットワークの仮想スイッチは、物理NICの通信機能を奪うため)
「外部ネットワーク 共有無し」の仮想スイッチを仮想ゲストマシンに付与すると、ネットワーク構成図は下記のようになります。
図でわかるように、物理ホストマシンはルータに接続できず、インターネットにも出ていくことができません。
これは、外部ネットワークの仮想スイッチは物理NICの通信機能を奪うことと、物理ホストマシンにネットワークアダプタ(仮想NIC)が共有していないことが同時に行ったためです。
繰り返しで恐縮ですが、物理NICの通信機能が仮想スイッチに奪われ、さらに仮想NICが物理ホストマシンに共有されていないので、物理ホストマシンはネットワーク接続を失ったのです。
物理ホストマシンに物理NICが複数存在する場合には使い道があると思いますが、インターネットに接続して使用することを前提としているWindows 10 Proでは、設定しないように気をつけたほうが良いと思います。(インターネットに接続できなくなるから)
後書き
最後までお読みいただきありがとうございました。
Hyper-Vのネットワーク設定では、ひとつの設定が複数の箇所の設定を担っているなど、目に見えない箇所があるため混乱することが多いと思います。そのため本記事ではなるべくシンプルに書かせていただきました。
Hyper-Vを使用する方々に、少しでも助けになれば幸いです。
|
|
コメント
コメント一覧 (9件)
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のクライアントマシンを使用して検証を行ったため、サーバでの運用には触れることができていませんでした。
他のご指摘事項を含め、コメントありがとうございました。
図面付きの紹介ページを作成してくださってとても分かりやすくありがたいです。ですが少々混乱しました。
①Hyper-Vをインストールした物理ホストマシンに現れた「vEthernet (規定のスイッチ)」と言うネットワークアダプタは、Hyper-Vが作った仮想LAN内のスイッチにつなげる専用の仮想NIC(他へはつなげないのでNICなのに「既定のスイッチ」と命名されている)と理解すると、図面の内容と理解がスムーズになるのではないでしょうか?「仮想NICと「vEthernet(仮想のスイッチ)」は同等の存在」と書かれてIPアドレスもスイッチ部分の長丸に添えられていますが、やはり仮想NICにアドレスがあって、その先に仮想LANの長丸があるべきかと。
②「外部ネットワーク 共有あり」の図面にある物理NICは、仮想LANと物理的に存在する「ルーター」の間に入るブリッジではないかと思うのですが、いかがでしょうか?仮想LAN内のスイッチの1つのポートから物理NIC=ブリッジにつながり、その先には物理ルーターが存在するイメージです。
コメントありがとうございます。以下ご返信します。
本記事をあらためて読み直し、ご指摘の個所を考えましたが、ご認識の通り「仮想NICにIPアドレスが付与されている」と考えた方が正しいと思いました。
記事と図は修正致しました。
こちらについて、「物理NIC=ブリッジ」という考え方は一理あると思いました。しかし、本記事の中で明確に「物理NIC=ブリッジ」と書くことは避け、図だけを修正することにしました。
あくまでも物理ホストの上に仮想ゲストが動作しているわけで、ルーターは物理ホストに接続されています。今までの図だと、ルーターから出る線がT字になっており、物理ホストと仮想ゲストの両方に接続されているように見えてしまっていました。
ルーターは物理ホストの物理NICにのみ接続しているように図を修正し、暗黙的にですが、物理NICがブリッジにような役割を担っているようにしてみました。
Hyper-Vの初心者です。Hyper-Vのネットワーク設定についていくつかネットの情報を見て回ったのですが、よくわからなくて躓いていたところ、こちらのページを拝読して納得することができました。おかげさまでHyper-V内のwindows10を自宅や職場のネットワークにつなげてホストマシン以外のPCからRDP接続して操作することがようやく出来るようになりました。このページに出会ってなければ混乱したまま設定を諦めてしまうところでした。大変有用な情報、わかりやすいまとめをありがとうございました。
本記事が参考になって良かったです。とても嬉しく思います。
コメントありがとうございました。
×規定のスイッチ
○既定のスイッチ
ありがとうございます!修正致しました。
緑丸の”vEthernet (規定のスイッチ)”について。
“vEthernet (規定のスイッチ)”は仮想NICの名前であり、仮想NICが接続している仮想スイッチの名前ではないのではないでしょうか?
緑丸は、”vEthernet (規定のスイッチ)”が接続する仮想スイッチの名前=”規定のスイッチ”では?