Hyper-VでNATによるインターネットアクセス可能な内部スイッチを作る方法
株式会社テイクーワンのT.Tです。
今回はWindows11のHyper-Vで「内部スイッチ」を作成しNAT(NAPT、IPマスカレード)によりゲストOSをインターネット(外部ネットワーク)に接続する方法を解説します。
Hyper-Vのインストールについてはこちらの記事を参照ください。
Default Switchの問題点
まず、デフォルトで作成されている「Default Switch」ではなぜダメなのかを解説します。
「Default Switch」にはDHCP、DNSキャッシュサーバー機能があり、クライアント用のゲストOSをインストールする際にはネットワークの設定を考えることなく接続できるため便利です。
ただ、ゲストOSのIPアドレスを固定したい場合(SSHやリモートデスクトップで接続するため等)は問題が発生します。使用しているサブネットが変更されることがあるためです。なので、ある時突然、ゲストOSがネットワークに接続できなくなったりします。また、サブネットを固定する方法も無いようです。
内部スイッチの作成
では内部スイッチを作成していきます。
スタートメニューから[Hyper-Vマネージャー]を起動し、[仮想スイッチマネージャー]を選択します。
仮想スイッチマネージャーが起動したら[新しい仮想ネットワークスイッチ]を選択、[内部]を選択、[仮想スイッチの作成]ボタンをクリックします。
[名前]を入力し(ここでは「内部スイッチ」とします)、[OK]ボタンをクリックします。
内部スイッチに接続されている管理OSの仮想NICにIPアドレスを設定する
スタートメニューから[設定]を起動し、[ネットワークとインターネット]-[ネットワークの詳細設定]をクリックします。
さきほど作成した「内部スイッチ」を選択し[編集]ボタンをクリックします。
[インターネットプロトコル バージョン 4(TCP/IPv4)]を選択し、[プロパティ]ボタンをクリックします。
[次のIPアドレスを使う]を選択、[IPアドレス]と[サブネット マスク]を入力し、[OK]ボタンをクリックします。
今回は既存のネットワークと衝突しなさそうな下記の値を使用します
IPアドレス:10.9.8.1
サブネットマスク:255.255.255.0
この状態でゲストOSのネットワークの設定を下記のようにすれば管理OSとネットワーク接続できます。
ゲストOSのネットワークの設定
IPアドレス:10.9.8.2~10.9.8.254のどれか
サブネットマスク:255.255.255.0
NATを設定してゲストOSがインターネット(外部ネットワーク)に接続できるようにする。
NATの設定はGUIではできないのでPowerShellを使います。
スタートメニューから"PowerShell"で検索し、[Windows PowerShell]を[管理者として実行する]をクリックします。
下記のコマンドを実行します。
New-NetNat -Name "内部スイッチNAT" -InternalIPInterfaceAddressPrefix "10.9.8.0/24"
"内部スイッチNAT":NATにつける名前です。
"10.9.8.0/24":内部スイッチに接続されている管理OSのNICにIPアドレスに合わせてNAT(NAPT、IPマスカレード)で変換する範囲を設定します。
これでNATによりゲストOSがインターネット(外部ネットワーク)に接続できます。
ネットワークの構成図
ネットワークの構成としては下記のようになります。NATの処理は管理OSの中で動きます。
ゲストOSのDNSサーバーの設定について
ここまでの設定でIPアドレスを指定すればインターネットに接続することができますが、通常DNSを使ってFQDNでアクセスすると思いますので、その辺の設定をします。Default SwitchにはDNSキャッシュサーバー機能がありますが、内部スイッチにはありません。なので、下記いずれかの手段で対応します。(他にも方法があるかもしれません。)
- ゲストOSのDNSの設定にGoogle Public DNS(8.8.8.8、8.8.4.4)等の無料のパブリックDNSサーバーを設定する。
- 内部スイッチに接続しているゲストOSでDNSキャッシュサーバーを構築しゲストOSのDNSの設定をそのサーバーに向ける。
- NAT経由で管理OSが使用しているLAN内のDNSサーバーをゲストOSのDNSサーバーとして設定する。この場合、PCを別のLANに接続した場合、LAN内のDNSサーバーに接続できなくなります。
DHCPサーバーについて
Default SwitchにはDHCPサーバー機能がありますが、内部スイッチにはありません。なので、下記の手段のいずれかで対応します。(他にも方法があるかもしれません。)
- ゲストOSに固定IPアドレスを設定する
- 内部スイッチに接続しているゲストOSでDHCPサーバーを構築する。
参考情報
Hyper-V を使用して仮想スイッチを作成して構成する
https://learn.microsoft.com/ja-jp/windows-server/virtualization/hyper-v/get-started/create-a-virtual-switch-for-hyper-v-virtual-machines?tabs=hyper-v-manager&pivots=windows