在 Hyper-V 中安装 PVE,涉及到嵌套虚拟化的问题。特别需要注意 Hyper-V 虚拟机的 NAT 设置,若配置不正确会出现以下问题:
在 Hyper-V 虚拟机中安装好 PVE,然后在 PVE 中启动虚拟机,却发现 PVE 中的虚拟机死活无法连接到互联网。
原因分析:
MAC Address Sproofing: 由于 Hyper-V 默认有 MAC 地址的验证,所以嵌套虚拟化出的 VM(PVE 中的虚拟机),无法正常连接网络。所以需要启用 MAC Address Sproofing。
本文通过设置 Hyper-V 虚拟交换机解决以上问题。
全过程命令
新建虚拟交换机:
New-VMSwitch -SwitchName "SwitchName" -SwitchType Internal
配置 NAT 网关:
Get-NetAdapter New-NetIPAddress -IPAddress <NAT Gateway IP> -PrefixLength <NAT Subnet Prefix Length> -InterfaceIndex <ifIndex>
配置 NAT 网络:
New-NetNat -Name <NATOutsideName> -InternalIPInterfaceAddressPrefix <NAT subnet prefix>
- 创建虚拟机,略(注意选择刚刚创建好的 Switch)。
为嵌套虚拟化出的 VM 启用 MAC Sproofing。
Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On
参考资料
- 设置 NAT: Set up a NAT network | Microsoft Learn
- 启用嵌套虚拟化:Run Hyper-V in a Virtual Machine with Nested Virtualization | Microsoft Learn(该教程主要讲的是在 Hyper-V 中再运行一层 Hyper-V,和我们用 PVE 的需求不一样)