Windows Server 2019 サーバ上でのHyoer-V のネットワーク(仮想スイッチ)について、設定方法は至ってシンプルなのですが、「どのような役割」とか「設定によってどういった通信が行えるのか」などと、むつかしこともあります。
たとえば、「仮想マシンが外部ネットワークへ接続したい場合」とか、「検証用に閉じたネットワークへ接続したい場合」ではどういった構成にしたらよいか。
このような場合では、Hyoer-V の仮想スイッチ経由で外部ネットワークへ接続したり、閉域ネットワーク構築してテスト環境を整備したりと利用用途にあわせて使っていけます。
仮想スイッチは3種類のスイッチが設定でき、それぞれのスイッチの接続イメージでどのような通信ができるのかをまとめてみました。また、仮想スイッチを作成する方法も記載しています。
仮想スイッチの種類
Hyper-V での仮想スイッチは3つの種類しかありません。
具体的な仮想スイッチ名称は、「外部仮想スイッチ」「内部仮想スイッチ」「プライベート仮想スイッチ」の3つです。
初心者の方が間違いやすい(理解しにくい)点としては、外部ネットワーク接続する際にホストOSでの通信の共有方法かと思われます。
仮想スイッチマネージャ上での「管理オペレーティングシステムにこのネットワークアダプタを共有する」という項目です。
外部仮想スイッチ
外部ネットワークは文字通り外部のネットワークへの通信を行う際に利用する仮想スイッチです。
上記の図では「管理オペレーティングシステムにこのネットワークアダプタを共有する」項目はチェックがついています。(有効になっています。)
ゲストOS上に仮想NICの割り当てを行います。仮想スイッチは利用する物理NICを指定します。これで仮想マシンは外部のネットワークへ通信できます。
ネットワークアダプタを共有する
Hyper-Vの機能・役割を実装後に、ホストOSはハイパーバイザー上に配置されるようになり、仮想NICと仮想スイッチが自動的に割り当てられます。
ネットワークアダプタを共有しない
仮想スイッチの割り当て解除(仮想スイッチ削除)することでネットワーク接続の仕組みが変わってきます。
ホストOSは直接に物理NICを利用することも可能になります。
実際のサーバ設定では。冗長構成していることが多く、あまり直接的に物理NICを利用しているのは見たことがありません。
内部仮想スイッチ
内部仮想スイッチは、Hyper-Vホストホスト上にある仮想マシンとホストOSの間でのみ使用できるネットワークです。
このスイッチの構成では、ゲストOSは外部ネットワークへは通信できません。ホストOSのみ通信が可能となるネットワーク構成です。
どういった時に利用するかというと、「テスト環境が欲しいけど、データのやり取りもしたい」といったデータの受け渡しが必要な際に利用します。同一筐体(ホスト内)での通信のみ利用できますので、テスト環境とかの利用に限られます。
テスト環境が必要とか、よほどのことが無い限り、通常はほとんど利用しない構成になるでしょう。
プライベート仮想スイッチ
プライベート仮想スイッチは、仮想スイッチを持つホスト上で実行されている仮想マシンでのみ使用できるます。
仮想マシンは、同一のプライベート仮想スイッチで接続されているネットワークで利用できますが、ホストOSや外部ネットワークへの接続はできません。完全な閉域ネットワークとなります。
仮想スイッチ作成
Hyper-Vの仮想スイッチ作成は、Hyper-vマネージャ か Powershell で作成できます。
設定項目はほとんどないので、GUI上で仮想スイッチを作成したほうが簡単です。
仮想スイッチでの作成(GUI)
メニューの [操作] → [仮想スイッチ マネージャー] を開きます。
仮想スイッチ名を入力し、必要な仮想スイッチの種類を3つより選択します。
[外部ネットワーク] を選択した場合は、通信に利用するネットワークアダプターを選択します。
「管理オペレーティング システムにこのネットワーク アダプターの共有を許可する」項目は、Hyper-V ホストが仮想マシン・仮想スイッチ・ NIC の使用を共有する場合は、チェックを入れておきます。
「シングル ルート I/O 仮想化 (SR-IOV) を有効にする」というのは、仮想マシンのネットワークトラフィックが Hyper-V 仮想化スタックのソフトウェアスイッチレイヤーをバイパスして物理 NIC に直接通信できる機能(と解釈しています)。
このSR-IOV は、PCI Express (PCIe) 仕様の拡張機能ですので、対応しているNICが必要です。
Powershell での仮想スイッチの作成
Powershell で仮想スイッチを作成できます。
コマンド実行前に、既存のネットワークアダプターの名称を調べておきます。
コントロール パネルから「ネットワークと共有センター」を開き、アダプターの名称を見てみますと「イーサネット」「イーサネット 2」とかの標記になっています。
コマンドは、New-VMSwitch を利用してオプションで各設定を指定していきます。
New-VMSwitch -name “名前” -NetAdapterName “イーサネット” -AllowManagementOS $true
NetAdapterName にアダプター名称をしていすることで、外部スイッチに指定することになります。
また、Hyper-VホストとNW共有する場合は、AllowManagementOS を $true にします。
New-VMSwitch -name “名前” -SwitchType Internal
コマンドの SwitchType オプションで Internal と指定します。
New-VMSwitch -name “名前” -SwitchType Private
コマンドの SwitchType オプションで Private と指定します。
まとめ
Hyper-vでの仮想スイッチは、たしかに概念は慣れるのに時間がかかるかもしれませんが、仮想スイッチの設定自体は簡単で機能もそれほど多くなく扱いやすいと思います。
GUIでいろいろなパターンの仮想スイッチが作成できます。