一、NAT 概述
NAT 使用主计算机的 IP 地址和端口通过内部 Hyper-V 虚拟开关向虚拟机授予对网络资源的访问权限。网络地址转换 (NAT) 是一种网络模式,旨在通过将一个外部 IP 地址和端口映射到更大的内部 IP 地址集来转换 IP 地址。 基本上,NAT 使用流量表将流量从一个外部(主机)IP 地址和端口号路由到与网络上的终结点(虚拟机、计算机和容器等)关联的正确内部 IP 地址。
此外,NAT 允许多个虚拟机托管需要相同(内部)通信端口的应用程序,方法是将它们映射到唯一的外部端口。
二、NAT 网络的设置
- 以管理员身份打开 PowerShell 控制台。
- 虚拟交换机中创建nat交换机,生成nat网络虚拟网卡
也可以使用PowerShell命令创建
New-VMSwitch -SwitchName "nat" -SwitchType Internal
- 获取nat虚拟网卡序号,即ifIndex字段:17
- 配置 NAT 网关
或使用PowerShell配置网关
New-NetIPAddress -IPAddress 192.168.1.1 -PrefixLength 24 -InterfaceIndex 24
- 配置 NAT 网络
使用PowerShell配置NAT 网络,这一步好像只能在PowerShell中配置,无法在Hyper-V管理器中配置
New-NetNat -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 192.168.1.0/24
- 查看NAT 网络
使用PowerShell查看NAT 网络
Get-NetNat
- 删除NAT网络
Hyper-V仅支持一个NAT网络,不支持多个 NAT 网络,如果已存在一个 NAT,请将其删除
Get-NetNat | Remove-NetNat
三、将nat网络应用到虚拟机中
- 在虚拟机网卡设置中,将网卡交换机配置为刚创建的nat交换机
- 在虚拟机内部,为虚拟机配置一个nat网段的IP,并将网关指向nat网络的网关
四、NAT网络端口映射
查询端口映射情况
netsh interface portproxy show all
查看IPv4toIPv4映射
netsh interface portproxy show v4tov4
增加一个端口映射
netsh interface portproxy add v4tov4 listenport=宿主机端口 listenaddress=宿主机IP connectaddress=虛拟机IP connectport=虛拟机端口
#删除一个端口映射
netsh interface portproxy delete v4tov4 listenaddress=宿主机端口 listenport=宿主机IP
#查看映射支持的列表
netsh interface portproxy show
下列指令有效:
此上下文中的命令:
show all - 显示所有端口代理参数。
show v4tov4 - 显示 IPv4 代理连接到另一个 IPv4 端口的参数。
show v4tov6 - 显示 IPv4 代理连接到 IPv6 的参数。
show v6tov4 - 显示 IPv6 代理连接到 IPv4 的参数。
show v6tov6 - 显示 IPv6 代理连接到另一个 IPv6 端口的参数。
如: