NAT 使用主计算机的 IP 地址和端口通过内部 Hyper-V 虚拟网关向虚拟机授予对网络资源的访问权限。
网络地址转换 (NAT) 是一种网络模式,旨在通过将一个外部 IP 地址和端口映射到更大的内部 IP 地址集来转换 IP 地址。 基本上,NAT 使用流量表将流量从一个外部(主机)IP 地址和端口号路由到与网络上的终结点(虚拟机、计算机和容器等)关联的正确内部 IP 地址
此外,NAT 允许多个虚拟机托管需要相同(内部)通信端口的应用程序,方法是将它们映射到唯一的外部端口。
出于所有这些原因,NAT 网络对于容器技术是很常见的
New-VMSwitch -SwitchName "natsw" -SwitchType Internal
natsw是自己定义的名称
可以通过运行 Get-NetAdapter
来查找接口索引
你的输出应类似下面的形式:
PS C:\Windows\system32> Get-NetAdapter
Name InterfaceDescription ifIndex Status MacAddress LinkSpeed
---- -------------------- ------- ------ ---------- ---------
vEthernet (natsw) Hyper-V Virtual Ethernet Adapter #3 56 Up 00-15-5D-00-02-01 10 Gbps
以太网 Intel(R) 82579LM Gigabit Network Con... 18 Up 3C-97-0E-86-6E-29 1 Gbps
WLAN Intel(R) Centrino(R) Advanced-N 6205 9 Disconnected 6C-88-14-01-B7-B4 240 Mbps
vEthernet (pub) Hyper-V Virtual Ethernet Adapter #2 38 Up 3C-97-0E-86-6E-29 1 Gbps
以太网 2 Sangfor SSL VPN CS Support System VNIC 5 Disconnected 00-FF-36-2B-A1-5A 10 Mbps
内部交换机的名称将类似于 vEthernet (SwitchName),接口描述将为 Hyper-V Virtual Ethernet Adapter。 请记下其 ifIndex 以便在下一步中使用。
下面是常规命令:
New-NetIPAddress -IPAddress <NAT Gateway IP> -PrefixLength <NAT Subnet Prefix Length> -InterfaceIndex <ifIndex>
若要配置网关,你将需要一些有关你的网络的信息:
IPAddress - NAT 网关 IP 指定要用作 NAT 网关 IP 的 IPv4 或 IPv6 地址。 常规形式将为 a.b.c.1(例如 172.16.0.1)。 尽管最后一个位置不一定是 .1,但通常是 1(基于前缀长度)。 此 IP 地址位于来宾虚拟机使用的地址范围。 例如,如果来宾 VM 使用 IP 范围 172.16.0.0,则可以使用 IP 地址 172.16.0.100 作为 NAT 网关。
通用网关 IP 为 192.168.0.1
PrefixLength – NAT 子网前缀长度定义的 NAT 本地子网大小(子网掩码)。 子网前缀长度将介于 0 到 32 之间的一个整数值。
0 将映射整个 Internet,32 则只允许一个映射的 IP。 常用值范围从 24 到 12,具体要取决于多少 IP 需要附加到 NAT。
常用 PrefixLength 为 24 – 这是子网掩码 255.255.255.0
InterfaceIndex – ifIndex 是你在上一步中确定的虚拟交换机的接口索引。
本例运行以下内容来创建 NAT 网关:
56是刚才创建的交换机的接口索引
New-NetIPAddress -IPAddress 192.168.0.1 -PrefixLength 24 -InterfaceIndex 56
IPAddress : 192.168.0.1
InterfaceIndex : 56
InterfaceAlias : vEthernet (natsw)
AddressFamily : IPv4
Type : Unicast
PrefixLength : 24
PrefixOrigin : Manual
SuffixOrigin : Manual
AddressState : Tentative
ValidLifetime :
PreferredLifetime :
SkipAsSource : False
PolicyStore : ActiveStore
下面是常规命令:
New-NetNat -Name <NATOutsideName> -InternalIPInterfaceAddressPrefix <NAT subnet prefix>
若要配置网关,你将需要提供一些有关网络和 NAT 网关的信息:
Name - NATOutsideName 描述 NAT 网络的名称。 将使用此参数删除 NAT 网络。
InternalIPInterfaceAddressPrefix - NAT 子网前缀同时描述上述 NAT 网关 IP 前缀和上述 NAT 子网前缀长度。
常规形式将为 a.b.c.0/NAT 子网前缀长度
综上所述,对于本示例,我们将使用 192.168.0.0/24
对于我们的示例,运行以下命令以设置 NAT 网络:
New-NetNat -Name MyNATnetwork -InternalIPInterfaceAddressPrefix 192.168.0.0/24
Name : MyNATnetwork
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : 192.168.0.0/24
IcmpQueryTimeout : 30
TcpEstablishedConnectionTimeout : 1800
TcpTransientConnectionTimeout : 120
TcpFilteringBehavior : AddressDependentFiltering
UdpFilteringBehavior : AddressDependentFiltering
UdpIdleSessionTimeout : 120
UdpInboundRefresh : False
Store : Local
Active : True
由于这个没有配置dhcp,因此,vm需要手工分配一个IP地址,取值范围在刚才创建的nat网络中去一个地址,网关是nat的网关。
譬如 :
ipaddress:192.168.0.2/24
gateway:192.168.0.1