Hyper-Vで内部ネットワーク(サブネット)間のルーティングを有効にする方法
スタンドアロンのHyper-V環境で、複数の内部IPサブネットを作成し、その間のルーティングを設定したいケースは少なくありません。しかし、デフォルト状態のHyper-Vは仮想スイッチ間でトラフィックをルーティングしません。一般的な回避策としては、異なる仮想スイッチ(異なるネットワーク)に接続された2つのNICを持つ仮想マシンを用意し、ゲストOS側でルーティングを設定する方法があります(Windows ServerのRRASロールや、Linuxのルーティングテーブルを利用する形です)。ただしこの方法では、ルーティング専用のVMを常時稼働させる必要があり、新たなIPサブネットを追加するたびにルーティングテーブルを再構成しなければならず、運用が煩雑になります。
本記事では、そのような専用VMを用意せずに、Hyper-Vホスト自体を仮想スイッチ/ネットワーク/IPサブネット間のルーターとして動作させる設定方法を解説します。
検証環境
ここでは、Hyper-Vホスト上の異なる内部ネットワークに配置した次の2台の仮想マシンを使用します。
- mun-dc01:
192.168.13.11/24(ゲートウェイ 192.168.13.1) - hh-dc02:
192.168.113.11/24(ゲートウェイ 192.168.113.1)
手順1:IPEnableRouterの有効化とホストの再起動
Windows Serverでルーティング機能を有効にするには、レジストリ値IPEnableRouterを「1」に設定する必要があります。
Hyper-Vホスト上で管理者権限のPowerShellを開き、以下のコマンドを実行した後、ホストを再起動してください。
Set-ItemProperty -Path HKLM:\system\CurrentControlSet\services\Tcpip\Parameters -Name IpEnableRouter -Value 1
Restart-Computer
手順2:内部仮想スイッチの作成
続けて、2つの新しい内部仮想スイッチを作成します。Hyper-VマネージャーのGUIからでも、PowerShellからでも作成可能です。
New-VMSwitch -Name vSwitchIntMUN -SwitchType Internal
New-VMSwitch -Name vSwitchIntHH -SwitchType Internal
手順3:仮想アダプターへのゲートウェイIPアドレスの割り当て
Hyper-Vホストで「コントロールパネル」→「ネットワークとインターネット」→「ネットワーク接続」を開くと、ホストのネットワークアダプター一覧が表示されます。先ほど作成した仮想スイッチに対応する2つの仮想アダプター(Hyper-V Virtual Ethernet Adapter)が追加されているはずです。
これらの仮想アダプターに対して、PowerShellまたはネットワークアダプターのプロパティからIPアドレスを割り当てます。
New-NetIPAddress -InterfaceAlias 'vEthernet (vSwitchIntMUN)' -IPAddress 192.168.13.1 -PrefixLength 24
New-NetIPAddress -InterfaceAlias 'vEthernet (vSwitchIntHH)' -IPAddress 192.168.113.1 -PrefixLength 24
このように、各サブネットのデフォルトゲートウェイとなるIPアドレスをホスト側の仮想インターフェースに割り当てるのがポイントです。
手順4:仮想マシンを仮想スイッチに接続する
まだ接続していない場合は、各仮想マシンをそれぞれ対応する仮想スイッチに接続します。
Connect-VMNetworkAdapter -VMName mun-dc01 -SwitchName vSwitchIntMUN
Connect-VMNetworkAdapter -VMName hh-dc03 -SwitchName vSwitchIntHH
これにより、各VMは仮想スイッチ経由でトラフィックを送受信するようになります。
動作確認
異なる内部ネットワーク上の仮想マシン同士が通信できることを確認しましょう。ルーティングの経路はtracertで、ポートの到達性はPowerShellのTest-NetConnectionコマンドレットでチェックできます。
Test-NetConnection 192.168.13.11 -Port 445
tracert 192.168.13.11
実行結果から、ホスト間でICMP pingおよびTCP通信が正常に行われていることが分かります。
なお、VM側のWindows Defenderファイアウォールがトラフィックをブロックしている場合があります。WindowsファイアウォールでICMPトラフィックを許可し、必要に応じてその他の受信規則も追加しておいてください。
まとめ
以上の手順で、Hyper-Vホスト上の複数の仮想ネットワーク間のルーティング設定が完了しました。専用ルーターVMを追加することなく、ホスト単体でサブネット間の通信を実現できるため、検証環境や小規模ラボ環境で特に有用な手法です。なお、この方法はWindows 10およびWindows Server 2016/2019のHyper-Vで利用できます。
-
Hyper-Vブートエラー「イメージのハッシュと証明書は許可されていません」の対処法
発生した問題 Hyper-Vサーバー上の仮想マシン(UEFI対応の第2世代/Generation 2)にLinux CentOSをインストールしようとした際、興味深い問題に遭遇しました。CentOS 7のインストール用ISOイメージをダウンロードし、Hyper-Vで第2世代タイプの新規仮想マシンを作成してISOをマウントし、インストールメディアから起動を試みたところ、Hyper-Vコンソールに以下のエラーメッセージが表示されたのです。 SCSI DVD (0,0). The images hash and certificate are not allowed (DB). No UEFI-c
-
Oracle Cloudで異なる仮想クラウドネットワーク(VCN)間のホストにSFTPアクセスを設定する方法
Oracle® Cloudでは、アプリケーションやデータベースを環境ごとに別々の仮想クラウドネットワーク(VCN)へ配置できます。これにより、各環境に追加のセキュリティレイヤーが設けられ、異なる環境のユーザーからの不正アクセスを防ぐことができます。しかし一方で、必要な場面で環境間のファイルコピーが行えないという課題も生じます。 ここで多くの方が抱く疑問は、「なぜ他の環境のサーバーに接続する必要があるのか?」という点でしょう。その答えは、開発環境から本番環境へのデプロイや移行作業の際に、サーバー間でファイルをやり取りするケースが頻繁に発生するためです。 本記事では、異なるVCN内のホスト間でSF