仮想スイッチの種別と用途:Windows 10 Hyper-V入門
Windows 10でHyper-Vを利用する場合、悩ましいのがネットワークの設定だ。「Default Switch」「外部ネットワーク」「内部ネットワーク」「プライベートネットワーク」の4種類ある仮想スイッチは何が異なり、どう設定すればいいのか分かりにくい。そこで、Hyper-Vの仮想スイッチについてどのような違いがあるのかを解説しよう。
Hyper-Vの「仮想スイッチ」の種類
Hyper-Vのネットワークは、「仮想スイッチ」で構成する。仮想スイッチには、「Default Switch」「外部ネットワーク」「内部ネットワーク」「プライベートネットワーク」の4種類がある。それぞれどのようなものなのかを解説する。
アプリケーションのテストや「Windows Insider Program」の実行には、仮想マシンを利用すると安全だし、便利だ。Windows 10のPro以上のエディションでは、仮想マシン環境である「Hyper-V」が付属しており、無償で利用できる。
ここで問題になるのは、ネットワークの設定だ。もともとWindows Server向けに作られたHyper-Vは、Windows 8で初めてクライアント版Windows OSに搭載された。だが、当初の仕様は、サーバ向けのサブセットであり、クライアントのWindows OSに最適化されているとは言い難く、使いにくいところもあった。
しかし、Windows 10とともにいろいろと改良されており、ネットワークの設定などもクライアント向けのWindows OSで使うのに適したものが利用できるようになった。ここでは、Windows 10でHyper-Vを使うときのネットワーク設定に焦点を当てて、具体的な設定などを解説することにする。逆に、Windows Serverなどでの利用は全く考慮していないので、この点には注意していただきたい。本稿では、動作の確認をWindows 10 November 2019 Update(バージョン1909)で行っている。
結論からいうと、Windows 10のHyper-Vでは、「初期状態で登録されている仮想スイッチ『Default Switch』をそのまま使う」のがベストなやり方である。特に、仮想マシンでプレビュー版Windows 10や他のバージョンのWindows 10などを動かす程度の場合なら、Default Switchで十分対応できる。
Windows Server用として登場したHyper-Vでは、仮想マシンからのインターネットアクセスを行わせるには、仮想スイッチを「外部ネットワーク」として作成する必要があり、ブログ記事などにもこうした記述が多い。
これは、「過去の情報」である。現在では、Windows Serverにも「WinNAT」と呼ばれるNAT(ネットワークアドレス変換)技術が導入されており、仮想ネットワークからインターネットアクセスが可能になる。WinNATの機能は、Windows 10 Anniversary Update(バージョン1607)で導入され、Windows 10 Fall Creators Update(バージョン1709)でHyper-Vの「Default Switch」に組み込まれた機能だ。
しかしWindows 10では、デフォルトで作られる「Default Switch」に必要な設定が全て行われており、これを使うだけでよい。逆に、他の仮想スイッチ、特に「外部ネットワーク」を設定してしまうと、ホスト側のネットワークドライバが差し替えられるなどの問題が起きて、かえってトラブルを招きやすい。
Windows Insider Programのプレビュー版での経験であるが、「外部ネットワーク」(後述)に設定したHyper-Vの仮想スイッチを変更していて、ホストWindowsがクラッシュしてブルースクリーンになったことや、外部ネットワークに設定した仮想スイッチを削除できなくなったことがある。
仮想マシンのネットワーク
物理的なネットワーク(LAN)は、スイッチングハブやネットワークアダプター(ネットワークカードまたはネットワークインタフェース)、ケーブルなどで構成されている。現在では、この中でもスイッチングハブがネットワークを構成している。一般に機器名としては「スイッチングハブ」と呼ばれるが、「ネットワークスイッチ」ともいう。
Hyper-Vの「仮想スイッチ」とは、仮想的なスイッチングハブによって構築された仮想ネットワークのことだ。仮想マシンは、1つの仮想ネットワークアダプターに対して、1つの仮想スイッチを指定できる。これは、仮想マシンを特定の仮想ネットワークに接続することを意味する。このとき、仮想マシンから見て、物理マシンで動作しているWindows OSがHyper-Vのホストオペレーティングシステム(ペアレントパーティション)である。本稿では、これを「ホストWindows」と表記する。
Hyper-Vの仮想スイッチ
仮想スイッチは、仮想化されたネットワークを表す。仮想スイッチの設定に応じて、ホスト側には仮想ネットワークドライバなどが組み込まれる。仮想スイッチは、具体的なIPアドレスを持つ仮想ネットワークとして動作する。
なお、ホストWindowsにも仮想スイッチの設定に応じて仮想ネットワークアダプターのデバイスドライバが組み込まれ、仮想マシンとのネットワーク相互アクセスに使われる。このため、Hyper-Vで仮想スイッチを追加/設定した場合、仮想スイッチのタイプに応じて、ホスト側に仮想ネットワークアダプターが組み込まれ、場合によっては、物理ネットワークアダプターの設定が変更される。
こうした仮想ネットワーク機能や仮想ネットワークアダプタードライバは、Hyper-V以外でも利用される。例えば、WSL 2やWindowsサンドボックスなどは、仮想ネットワークドライバを追加するが、これらは、Hyper-Vの仮想スイッチマネージャーの管理外にある。
これらに関しては、設定を変更、追加などを行うユーザーインタフェースがないため、「アダプターの設定の変更」([コントロールパネル]−[ネットワークと共有センター])やレジストリー編集などで、うっかり削除などを行わないように注意されたい。同様に仮想スイッチが設定する仮想ネットワークアダプターの制御も、Hyper-Vの仮想スイッチマネージャーで行い、ドライバを勝手に削除しないようにする。
4種類ある仮想スイッチ
Hyper-Vの仮想スイッチには、「Default Switch」「外部ネットワーク」「内部ネットワーク」「プライベートネットワーク」の4種類がある。その違いを下表に示す。ただし、「Default Switch」は、1つしか存在できず、Hyper-Vの初期設定に最初から含まれているため追加できない(削除もできない)。ユーザーが作成可能なのは「外部ネットワーク」「内部ネットワーク」「プライベートネットワーク」の3つのみである。
仮想スイッチの種類 | Default Switch | 外部ネットワーク | 内部ネットワーク | プライベートネットワーク |
---|---|---|---|---|
仮想マシン ←→ 仮想マシン | ○ | ○ | ○ | ○ |
仮想マシン ←→ ホスト | ○ | ○ | ○ | × |
仮想マシン ←→ 物理ネットワーク(LAN) | × | ○ | × | × |
仮想マシン → インターネット | ○ | ○ | × | × |
Hyper-Vの仮想スイッチの違い |
「プライベートネットワーク」仮想スイッチとは
「プライベートネットワーク」仮想スイッチは、仮想マシンだけの仮想ネットワークを作る。複数の仮想ネットワークを持つような場合や外部との接触を禁じるような場合に使う仮想スイッチ設定だが、おそらくクライアントであるWindow 10で使うメリットはほとんどないと思われる。悪意のあるソフトウェアのテストなどなら、Hyper-Vの仮想マシンよりも、Windowsサンドボックスの方が適しているだろう。
「内部ネットワーク」仮想スイッチと「Default Switch」とは
「内部ネットワーク」仮想スイッチは、仮想マシンとホストを接続する仮想ネットワークが作られる。前述の「プライベート」にホストとの接続が追加された仮想ネットワークを構成するのが「内部」仮想スイッチだ。
「内部ネットワーク」仮想スイッチとは
「内部ネットワーク」仮想スイッチは、仮想マシンとホストWindowsを仮想ネットワークで接続する。プライベートネットワークにホストWindowsとの接続を追加したのと同じである。また、「Default Switch」は、特殊な「内部ネットワーク」仮想スイッチである。どちらも、ホストWindows側には仮想ネットワークドライバ(vEthernet)が組み込まれる。
「内部ネットワーク」の仮想ネットワークはローカルマシン内のみであり、物理的なネットワークやインターネットにアクセスすることはできない。「内部ネットワーク」仮想スイッチを使うのは、仮想マシン上でサポートの切れたOS(Windows 7など)をインターネット接続から遮断し、安全に稼働させたいような場合に利用する。「内部ネットワーク」の設定方法については、Windows 10への移行「いつでも仮想化Windows 7 in Windows 10」を参照してほしい。
ただし、「内部ネットワーク」仮想スイッチを利用しているときでも、WinNATを設定することで、仮想マシンからインターネットアクセスが可能になる(WinNATは、PowerShellからのみ設定が可能)。WinNATの設定に関しては、Tech TIPS「Windows 10/Windows Server 2016のHyper-VでNAT(ネットワークアドレス変換)機能を利用する」参照のこと。
この「内部ネットワーク」にWinNATによるインターネットアクセスを追加したのが「Default Switch」だ。そのため、仮想マシンからインターネットアクセスを行うだけなら、わざわざ「内部ネットワーク」を作り、WinNATの設定をせずとも、「Default Switch」を利用すれば事足りる。
WinNATを手動で設定する必要があるのは、WinNATを完全に制御したい場合だ。というのは、Default SwitchのWinNATは特殊な状態であり、PowerShellからその制御が行えないからだ。
「外部ネットワーク」仮想スイッチとは
「外部ネットワーク」仮想スイッチは、物理的なネットワークアダプターを仮想化して、仮想ネットワークと物理ネットワークの接続に利用するものだ。これは、Windows Serverなどで、複数のネットワークアダプターが存在している場合に仮想ネットワーク用にこれを専有させて利用することを想定した設定だ。ネットワークアダプターが1枚だけの場合を想定して、ホスト側のネットワークアクセスにも利用できるように設定できるが、仮想ネットワークデバイス経由となるため、ホスト側のWindowsのネットワーク設定が大きく変化する。
「外部ネットワーク」仮想スイッチとは
「外部ネットワーク」仮想スイッチは、ホストWindows側から物理ネットワークアダプターを切り離し、ホストWindowsは仮想ネットワークに接続、物理ネットワークアダプターは仮想ネットワークと物理ネットワークの接続専用にする。このため、ホストWindowsは、仮想ネットワークアダプターを経由して物理ネットワークに接続するようになる。
はっきりいえば、「外部ネットワーク」は、クライアントWindows向きではない仮想スイッチだ。トラブルの原因にもなりやすいため、Windows 10では、できれば使わない方がいいだろう。仮想マシンでネットワークからしかアクセスできないサーバプログラム(HTTPサーバなど)を動かさなければならない上に、これを物理ネットワーク側から直接アクセスする必要がある場合などに利用するものだ。ただ、こうした使い方は、Windows Serverの領域で、クライアントのWindows 10で利用するには少し荷が重すぎる使い方である。
単に、物理ネットワーク側のマシンと仮想マシン間でファイルをコピーする程度なら、「Default Switch」や「内部ネットワーク」であっても、ホストWindows側のエクスプローラーで、外部マシンと仮想マシンの両方の共有名にアクセスすることができるため、「外部ネットワーク」仮想スイッチをわざわざ設定する必要はない。
もちろん、複数のネットワークカードが搭載されており、ネットワークドライバがどうなるのかを理解して利用するなら問題はないが、何も理解せずに利用するのは危険だ。インターネット上のブログ記事などで紹介されているHyper-Vの仮想スイッチ設定では、この「外部ネットワーク」を使うものが少なくない。だが、WinNATの存在に触れておらず、サーバ向けか単に古い情報であることが多い。
Windows 10 でHyper-Vを有効にする方法
仮想スイッチの設定手順を説明する前に、Hyper-VをWindows 10で利用可能にする手順を簡単に説明しておく。
仮想マシン実行環境であるHyper-Vを使うには、[コントロールパネル]の[プログラムと機能]にある「Windowsの機能の有効化または無効化」で「Hyper-V」を有効にする。なお、ハードウェアによっては、Hyper-Vに必須であるCPUの仮想マシン支援機能(Intel-VTやAMD-V)が標準で「オフ」になっていることがあるため、事前にUEFIメニュー(BIOS設定)で仮想マシン支援機能を有効にしておく。機種ごとに違いがあるため、ここで手順は示せない。PCあるいはマザーボードの付属マニュアルなどを参考に各自確認、設定してほしい。
Hyper-Vのインストール(2)
[Windowsの機能の有効化または無効化]ダイアログが開いたら、「Hyper-V」のチェックを「オン」にしてインストールする。設定後、再起動すると、Hyper-Vが利用できるようになる。
仮想スイッチの設定方法
Hyper-Vで動作させる仮想マシン環境のネットワーク設定は、「仮想スイッチマネージャー」で行う。これは、Hyper-Vマネージャーから起動できる。インストール直後には、「Default Switch」(既定のスイッチ)だけが登録されているはずである。Windows 10で仮想マシン環境を利用するには、これで十分である。
仮想スイッチの設定(2)
初期状態で既に「Default Switch(既定のネットワーク)」が作られており、原則、これを利用する。別のタイプの仮想スイッチを使う場合には、「新しい仮想ネットワークスイッチ」を選び、「仮想スイッチの作成」ボタンを押す。接続の種類では、「外部」「内部」「プライベート」を選ぶ。
仮想スイッチの設定(3)
「外部」を選択した場合には、対象の物理ネットワークアダプターを選択する。このとき、「管理オペレーティングシステムにこのネットワークアダプターの共有を許可する」のチェックを「オン」にしないと、その物理ネットワークアダプターがホスト側から利用できなくなってしまうので注意すること。
仮想スイッチは、作成しただけで、実際に仮想マシンに割り当てを行わなくてもホスト側に影響が及ぶ。例えば「内部ネットワーク仮想スイッチ」を作れば、ホスト側に仮想ネットワークアダプターが登録される。一方、「外部ネットワーク仮想スイッチ」を作れば、ホストの物理ネットワークアダプターの設定が変更され、ホストWindowsからは直接利用することができなくなる。このため、仮想スイッチマネージャーでの作業には十分注意する必要がある。
Hyper-Vは、Windows Server向けに作られたが、Windows 10に搭載され、改良が続く間に、クライアントWindowsでも比較的使いやすい環境になってきた。プレビュー版や他のバージョンのWindowsでアプリケーションを時々実行する程度といった使い方なら、ネットワークに関しては、「何も設定しない」というのがベストの設定である。
Copyright© Digital Advantage Corp. All Rights Reserved.