New-NetNat 是 Windows PowerShell 中 NetNat 模块下的核心命令,用于在 Windows 系统上创建 网络地址转换(NAT) 规则,让内网(私有网段)设备通过本机公网(或外部网络)IP 共享上网。
一、核心作用
内网共享上网:让内部私有 IP(如
192.168.x.x)通过本机外网 IP 访问互联网。虚拟化场景:Hyper-V 虚拟机、Docker 容器等内部网络访问外网的常用方式。
软路由 / 网关:把 Windows 变成简易 NAT 网关。
二、完整语法
powershell
New-NetNat
[-Name] <String>
[-InternalIPInterfaceAddressPrefix <String>]
[-ExternalIPInterfaceAddressPrefix <String>]
[-InternalRoutingDomainId <String>]
[-CimSession <CimSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
三、关键参数详解
-Name <String>(必填)NAT 实例名称(自定义标识,如
MyHyperVNAT)。-InternalIPInterfaceAddressPrefix <String>(常用必填)内网网段(CIDR 格式),如
192.168.100.0/24。只有该网段的流量会被 NAT 转发。
-ExternalIPInterfaceAddressPrefix <String>(可选)外部接口 / 公网网段(一般不指定,自动使用本机默认外网接口)。
四、典型用法示例
1. 基础 NAT(Hyper-V / 容器最常用)
powershell
# 为内网 192.168.200.0/24 创建 NAT
New-NetNat -Name "ContainerNAT" -InternalIPInterfaceAddressPrefix "192.168.200.0/24"
2. 多网卡 / 指定外网接口
powershell
# 先查看网卡别名
Get-NetAdapter | Select Name,InterfaceAlias,Status
# 创建 NAT(内网 10.0.0.0/8 走外网接口)
New-NetNat -Name "MyGateway" -InternalIPInterfaceAddressPrefix "10.0.0.0/8"
五、配套常用命令
powershell
# 查看已存在的 NAT
Get-NetNat
# 删除 NAT(按名称)
Remove-NetNat -Name "ContainerNAT"
# 启用系统 IP 转发(部分环境需要)
reg add HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v IPEnableRouter /t REG_DWORD /d 1 /f
六、适用系统
Windows 10 周年更新 +
Windows 11
Windows Server 2016+
七、注意事项
一台 Windows 主机通常只能有一个活跃 NAT。
内网设备网关要指向 Windows 本机内网 IP(如
192.168.200.1)。相当于 Linux
iptables -t nat -A POSTROUTING -s 内网 -j MASQUERADE。
八、完整场景(Hyper-V 虚拟机)
新建内部虚拟交换机
为虚拟网卡设静态 IP:
powershell
New-NetIPAddress -IPAddress 192.168.200.1 -PrefixLength 24 -InterfaceAlias "vEthernet (InternalSwitch)"创建 NAT:
powershell
New-NetNat -Name HyperVNAT -InternalIPInterfaceAddressPrefix 192.168.200.0/24虚拟机设 IP:
192.168.200.x,网关192.168.200.1