物理机端口映射到Hyper-V里某台虚拟机

相关命令的解释不一定准确, 可以参考微软的文档

// 创建名为NatSwitch的虚拟交换机(内部)
New-VMSwitch -SwitchName "NatSwitch" -SwitchType Internal

// 获取网络适配器列表, 记录刚才添加的适配器索引(ifIndex)
Get-NetAdapter

// 设置刚才虚拟交换机的IP信息, IP为10.0.0.1, 子网为255.255.255.0, 此处虚拟交换机索引为37
New-NetIPAddress -IPAddress 10.0.0.1 -PrefixLength 24 -InterfaceIndex 37

// 添加名为HVNat的NAT对象, 指定内部IP范围10.0.0.0/24
New-NetNat -Name HVNat -InternalIPInterfaceAddressPrefix 10.0.0.0/24

// 向名为HVNat的NAT对象中添加端口映射, 外部任意IP的8888映射到内部10.0.0.88的3389端口
// 假如外部IP为1.2.3.4那么通过1.2.3.4:8888就可以访问到内部的10.0.0.88:3389
Add-NetNatStaticMapping -NatName HVNat -Protocol TCP -ExternalIPAddress "0.0.0.0/0" -ExternalPort 8888 -InternalIPAddress "10.0.0.88" -InternalPort 3389

// 获取设置好的端口映射列表(省略NatName参数则获取所有NAT对象里的内容)
Get-NetNatStaticMapping -NatName HVNat

// 弄错了的话可以移除指定ID的端口映射
Remove-NetNatStaticMapping -StaticMappingID 0

最后记得Hyper-V里的虚拟机设置交换机为一开始创建的那个

标签: none