本快速入门介绍如何使用 Azure 门户和 PowerShell 创建标准 V2 Azure NAT 网关。 NAT 网关服务为 Azure 中的虚拟机提供可缩放的出站连接。
注释
Terraform 当前不可用。 使用 Azure 预览门户、CLI 或 Azure PowerShell 创建标准 V2 NAT 网关。
先决条件
拥有有效订阅的 Azure 帐户。
免费创建帐户。
Azure Cloud Shell 或 Azure PowerShell。
本快速入门中的步骤在 Azure Cloud Shell 中以交互方式运行 Azure PowerShell cmdlet。 要在 Cloud Shell 中运行命令,请选择代码块右上角的“打开 Cloud Shell”。 选择“复制”以复制代码,并将其粘贴到 Cloud Shell 以运行。 也可以从 Azure 门户中运行 Cloud Shell。
也可以在本地安装 Azure PowerShell 以运行 cmdlet。 本文中的步骤需要 Azure PowerShell 模块 5.4.1 或更高版本。 运行 Get-Module -ListAvailable Az 来查找已安装的版本。 如果需要升级,请参阅 更新 Azure PowerShell 模块。
如果没有 Azure 帐户,请在开始前创建一个免费帐户。
创建资源组
创建资源组以包含本快速入门的所有资源。
登录到 Azure 门户。
在门户顶部的搜索框中,输入 资源组。 在搜索结果中选择“资源组”。
选择+ 新建。
在“创建资源组”的“基本信息”选项卡中,输入或选择以下信息。
| 设置 |
价值 |
| Subscription |
选择订阅 |
| 资源组 |
test-rg |
| 区域 |
美国东部 |
选择“查看 + 创建”。
选择 创建。
使用 New-AzResourceGroup 创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。
以下示例在 eastus 位置创建名为 test-rg 的资源组:
$rsg = @{
Name = 'test-rg'
Location = 'eastus'
}
New-AzResourceGroup @rsg
使用 az group create 创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。
以下示例在 eastus 位置创建名为 test-rg 的资源组:
az group create \
--name test-rg \
--location eastus
创建 NAT 网关
本部分介绍了如何创建 NAT 网关和支持资源。
Azure NAT 网关支持多个用于 IP 地址和冗余配置的部署选项,以满足连接和可用性要求。
区域冗余 IPv4 地址
登录到 Azure 预览门户。
在 Azure 门户顶部的搜索框中,输入“公共 IP 地址”。 在搜索结果中,选择“公共 IP 地址”。
选择 创建。
在“创建公共 IP 地址”中,输入以下信息。
| 设置 |
价值 |
|
项目详细信息 |
|
| Subscription |
选择订阅。 |
| 资源组 |
选择你的资源组。 此示例使用 test-rg。 |
|
实例详细信息 |
|
| 区域 |
选择区域。 此示例使用美国东部。 |
|
配置详细信息 |
|
| Name |
输入 public-ip-nat。 |
| IP 版本 |
选择 IPv4。 |
| SKU |
选择标准 V2(用于标准 V2 NAT 网关)。 |
| 层 |
选择“区域”。 |
选择“查看 + 创建”,然后选择“创建”。
在 Azure 门户顶部的搜索框中,输入“NAT 网关”。 在搜索结果中选择“NAT 网关”。
选择 创建。
在“创建网络地址转换(NAT)网关”的“基本信息”选项卡中,输入或选择以下信息。
| 设置 |
价值 |
|
项目详细信息 |
|
| Subscription |
选择订阅。 |
| 资源组 |
选择 test-rg 或你的资源组。 |
|
实例详细信息 |
|
| NAT 网关名称 |
输入“nat-gateway”。 |
| 区域 |
选择你的区域。 此示例使用美国东部。 |
| SKU |
选择 标准 V2。 |
| TCP 空闲超时(分钟) |
保留默认值“4”。 |
选择“下一步”。
在 “出站 IP ”选项卡中,选择“ + 添加公共 IP 地址或前缀”。
在 “添加公共 IP 地址或前缀”中,选择 “公共 IP 地址”。 选择之前创建的公共 IP 地址 public-ip-nat。
选择“保存”。
选择查看 + 创建,然后选择创建。
使用 New-AzPublicIpAddress 为 NAT 网关创建区域冗余 IPv4 公共 IP 地址。
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'public-ip-nat'
ResourceGroupName = 'test-rg'
Location = 'eastus'
Sku = 'StandardV2'
AllocationMethod = 'Static'
IpAddressVersion = 'IPv4'
Zone = 1,2,3
}
$publicIPIPv4 = New-AzPublicIpAddress @ip
使用 New-AzNatGateway 创建 NAT 网关资源。
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = 'test-rg'
Name = 'nat-gateway'
IdleTimeoutInMinutes = '4'
Sku = 'StandardV2'
Location = 'eastus'
PublicIpAddress = $publicIPIPv4
Zone = 1,2,3
}
$natGateway = New-AzNatGateway @nat
使用 az network public-ip create 为 NAT 网关创建区域冗余 IPv4 公共 IP 地址。
az network public-ip create \
--resource-group test-rg \
--name public-ip-nat \
--location eastus \
--sku StandardV2 \
--allocation-method Static \
--version IPv4 \
--zone 1 2 3
使用 az network nat gateway create 创建 NAT 网关资源。
az network nat gateway create \
--resource-group test-rg \
--name nat-gateway \
--location eastus \
--public-ip-addresses public-ip-nat \
--idle-timeout 4 \
--sku StandardV2 \
--zone 1 2 3
区域冗余型 IPv4 前缀
登录到 Azure 预览门户。
在 Azure 门户顶部的搜索框中,输入“公共 IP 前缀”。 在搜索结果中选择“公共 IP 前缀”。
选择 创建。
在“创建公共 IP 前缀”的“基本信息”选项卡中,输入以下信息。
| 设置 |
价值 |
|
项目详细信息 |
|
| Subscription |
选择订阅。 |
| 资源组 |
选择你的资源组。 此示例使用 test-rg。 |
|
实例详细信息 |
|
| Name |
输入“public-ip-prefix-nat”。 |
| 区域 |
选择你的区域。 此示例使用美国东部。 |
| Sku |
选择 标准 V2。 |
| IP 版本 |
选择 IPv4。 |
| 前缀所有权 |
选择“Microsoft 拥有”。 |
| 前缀大小 |
选择前缀大小。 此示例使用 /28 (16 个地址)。 |
选择查看 + 创建,然后选择创建。
在 Azure 门户顶部的搜索框中,输入“NAT 网关”。 在搜索结果中选择“NAT 网关”。
选择 创建。
在“创建网络地址转换(NAT)网关”的“基本信息”选项卡中,输入或选择以下信息。
| 设置 |
价值 |
|
项目详细信息 |
|
| Subscription |
选择订阅。 |
| 资源组 |
选择 test-rg 或你的资源组。 |
|
实例详细信息 |
|
| NAT 网关名称 |
输入“nat-gateway”。 |
| 区域 |
选择你的区域。 此示例使用美国东部。 |
| SKU |
选择 标准 V2。 |
| TCP 空闲超时(分钟) |
保留默认值“4”。 |
选择“下一步”。
在 “出站 IP ”选项卡中,选择“ + 添加公共 IP 地址或前缀”。
在 “添加公共 IP 地址或前缀”中,选择 “公共 IP 前缀”。 选择之前创建的公共 IP 前缀 public-ip-prefix-nat。
选择查看 + 创建,然后选择创建。
使用 New-AzPublicIpPrefix 为 NAT 网关创建区域冗余 IPv4 公共 IP 前缀。
## Create public IP prefix for NAT gateway ##
$ip = @{
Name = 'public-ip-prefix-nat'
ResourceGroupName = 'test-rg'
Location = 'eastus'
Sku = 'StandardV2'
PrefixLength = '31'
IpAddressVersion = 'IPv4'
Zone = 1,2,3
}
$publicIPIPv4prefix = New-AzPublicIpPrefix @ip
使用 New-AzNatGateway 创建 NAT 网关资源。
## Create NAT gateway resource ##
$nat = @{
ResourceGroupName = 'test-rg'
Name = 'nat-gateway'
IdleTimeoutInMinutes = '4'
Sku = 'StandardV2'
Location = 'eastus'
PublicIpPrefix = $publicIPIPv4prefix
Zone = 1,2,3
}
$natGateway = New-AzNatGateway @nat
使用 az network public-ip prefix create 为 NAT 网关创建区域冗余 IPv4 公共 IP 前缀。
az network public-ip prefix create \
--resource-group test-rg \
--name public-ip-prefix-nat \
--location eastus \
--length 31 \
--sku StandardV2 \
--version IPv4 \
--zone 1 2 3
使用 az network nat gateway create 创建 NAT 网关资源。
az network nat gateway create \
--resource-group test-rg \
--name nat-gateway \
--location eastus \
--public-ip-prefixes public-ip-prefix-nat \
--idle-timeout 4 \
--sku StandardV2 \
--zone 1 2 3
创建虚拟网络和子网配置
创建本快速入门所需的虚拟网络和子网。
在 Azure 门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择 创建。
在“创建虚拟网络”的“基本信息”选项卡中输入或选择以下信息。
| 设置 |
价值 |
|
项目详细信息 |
|
| Subscription |
选择订阅。 |
| 资源组 |
选择 test-rg 或你的资源组。 |
|
实例详细信息 |
|
| Name |
输入“vnet-1”。 |
| 区域 |
选择你的区域。 此示例使用美国东部。 |
选择“ IP 地址 ”选项卡,或依次选择“ 下一步”、“ 下一步”。
在 “子网 ”中,选择 默认 子网。
在“编辑子网”中,输入或选择以下信息。
| 设置 |
价值 |
| 子网用途 |
保留默认值。 |
| Name |
输入subnet-1。 |
|
专用子网 |
|
| 启用专用子网(无默认出站访问) |
选中此框。 |
|
Security |
|
| NAT 网关 |
选择“nat-gateway”。 |
选择“保存”。
选择“+ 添加子网”。
在 “添加子网”中 输入或选择以下信息。
| 设置 |
价值 |
| 子网用途 |
选择 Azure Bastion。 |
将其余设置保留为默认值,然后选择“ 添加”。
选择查看 + 创建,然后选择创建。
使用 New-AzVirtualNetworkSubnetConfig 创建子网配置。 使用 New-AzVirtualNetwork 创建虚拟网络。
## Create subnet config and associate NAT gateway to subnet ##
$subnet = @{
Name = 'subnet-1'
AddressPrefix = '10.0.0.0/24'
NatGateway = $natGateway
DefaultOutboundAccess = $false
}
$subnetConfig = New-AzVirtualNetworkSubnetConfig @subnet
## Create Azure Bastion subnet ##
$bastsubnet = @{
Name = 'AzureBastionSubnet'
AddressPrefix = '10.0.1.0/26'
}
$bastsubnetConfig = New-AzVirtualNetworkSubnetConfig @bastsubnet
## Create the virtual network ##
$net = @{
Name = 'vnet-1'
ResourceGroupName = 'test-rg'
Location = 'eastus'
AddressPrefix = '10.0.0.0/16'
Subnet = $subnetConfig,$bastsubnetConfig
}
$vnet = New-AzVirtualNetwork @net
使用 az network vnet create 创建虚拟网络。 使用 az network vnet subnet create 和 az network vnet subnet update 创建和配置子网。
## Create the virtual network ##
az network vnet create \
--resource-group test-rg \
--name vnet-1 \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name subnet-1 \
--subnet-prefix 10.0.0.0/24
## Associate NAT gateway to subnet and disable default outbound access ##
az network vnet subnet update \
--resource-group test-rg \
--vnet-name vnet-1 \
--name subnet-1 \
--nat-gateway nat-gateway \
--default-outbound false
## Create Azure Bastion subnet ##
az network vnet subnet create \
--resource-group test-rg \
--vnet-name vnet-1 \
--name AzureBastionSubnet \
--address-prefix 10.0.1.0/26
创建 Azure Bastion 主机
创建 Azure Bastion 主机以安全地连接到虚拟机。
在 Azure 门户顶部的搜索框中,输入 Bastion。 在搜索结果中选择 Bastions 。
选择 创建。
在“创建 Bastion”的基本选项卡中输入或选择以下信息。
| 设置 |
价值 |
|
项目详细信息 |
|
| Subscription |
选择订阅。 |
| 资源组 |
选择 test-rg 或你的资源组。 |
|
实例详细信息 |
|
| Name |
输入 堡垒。 |
| 区域 |
选择你的区域。 此示例使用美国东部。 |
| 层 |
选择 “开发人员”。 |
| 虚拟网络 |
选择“vnet-1”。 |
| 子网 |
选择“AzureBastionSubnet”。 |
选择查看 + 创建,然后选择创建。
使用 New-AzBastion 创建 Azure Bastion 主机。
## Create public IP address for bastion host ##
$ip = @{
Name = 'public-ip-bastion'
ResourceGroupName = 'test-rg'
Location = 'eastus'
Sku = 'Standard'
AllocationMethod = 'Static'
Zone = 1,2,3
}
$publicipbastion = New-AzPublicIpAddress @ip
## Create bastion host ##
$bastion = @{
Name = 'bastion'
ResourceGroupName = 'test-rg'
PublicIpAddressRgName = 'test-rg'
PublicIpAddressName = 'public-ip-bastion'
VirtualNetworkRgName = 'test-rg'
VirtualNetworkName = 'vnet-1'
Sku = 'Basic'
}
New-AzBastion @bastion
使用 az network public-ip create 为堡垒主机创建公共 IP。 使用 az network bastion create 创建 Azure Bastion 主机。
## Create public IP address for bastion host ##
az network public-ip create \
--resource-group test-rg \
--name public-ip-bastion \
--location eastus \
--sku Standard \
--allocation-method Static \
--zone 1 2 3
## Create bastion host ##
az network bastion create \
--resource-group test-rg \
--name bastion \
--location eastus \
--vnet-name vnet-1 \
--public-ip-address public-ip-bastion \
--sku Basic
堡垒主机可能需要几分钟时间才能完成部署。 在进入下一部分之前,请等待堡垒主机部署完毕。
创建虚拟机
在本部分中,将创建一个虚拟机来测试 NAT 网关并验证出站连接的公共 IP 地址。 以下命令创建用于身份验证的 SSH 密钥。 稍后需要私钥才能通过 Azure Bastion 登录到虚拟机。 命令需要用户名和密码凭据。 密码不用于登录到虚拟机。
在门户顶部的搜索框中,输入 虚拟机。 在搜索结果中,选择“虚拟机”。
选择“ 创建>虚拟机”。
在 “创建虚拟机 ”中,在 “基本信息 ”选项卡中输入或选择以下信息。
| 设置 |
价值 |
|
项目详细信息 |
|
| Subscription |
选择订阅。 |
| 资源组 |
选择 test-rg 或你的资源组。 |
|
实例详细信息 |
|
| 虚拟机名称 |
输入“vm-1”。 |
| 区域 |
选择你的区域。 此示例使用美国东部。 |
| 可用性选项 |
保留默认值“不需要基础结构冗余”。 |
| 安全类型 |
选择“标准” 。 |
| 图像 |
选择 Ubuntu Server 24.04 LTS - Gen2。 |
| 尺寸 |
选择大小 |
| 身份验证类型 |
选择“SSH 公钥”。 |
| 用户名 |
输入所选用户名。 稍后需要此用户名才能登录到虚拟机。 |
| SSH 公钥源 |
选择“生成新密钥对”。 |
| 密钥对名称 |
输入 ssh-key。 |
| 公共入站端口 |
选择 “无”。 |
选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”中,输入或选择以下信息。
| 设置 |
价值 |
|
网络接口 |
|
| 虚拟网络 |
选择“vnet-1”。 |
| 子网 |
选择 subnet-1。 |
| 公网 IP |
选择 “无”。 |
| NIC 网络安全组 |
选择基本。 |
| 公共入站端口 |
保留默认值 “无”。 |
选择查看 + 创建,然后选择创建。
使用 Get-Credential 为虚拟机创建用户名和密码。 使用 New-AzNetworkInterface 为虚拟机创建网络接口。 使用 New-AzVMConfig 创建虚拟机配置。 使用 New-AzVM 创建虚拟机。
## Get credentials for virtual machine ##
$cred = Get-Credential
## Create network interface for virtual machine ##
$nic = @{
Name = "nic-1"
ResourceGroupName = 'test-rg'
Location = 'eastus'
Subnet = $vnet.Subnets[0]
}
$nicVM = New-AzNetworkInterface @nic
## Create a virtual machine configuration ##
$vmsz = @{
VMName = 'vm-1'
VMSize = 'Standard_DS1_v2'
}
$vmos = @{
ComputerName = 'vm-1'
Credential = $cred
DisablePasswordAuthentication = $true
}
$vmimage = @{
PublisherName = 'Canonical'
Offer = '0001-com-ubuntu-server-jammy'
Skus = '22_04-lts-gen2'
Version = 'latest'
}
$vmConfig = New-AzVMConfig @vmsz `
| Set-AzVMOperatingSystem @vmos -Linux `
| Set-AzVMSourceImage @vmimage `
| Add-AzVMNetworkInterface -Id $nicVM.Id
## Create the virtual machine ##
$vm = @{
ResourceGroupName = 'test-rg'
Location = 'eastus'
VM = $vmConfig
SshKeyName = 'ssh-key'
}
New-AzVM @vm -GenerateSshKey
使用 az network nic create 为虚拟机创建网络接口。 使用 az vm create 创建虚拟机。
## Create network interface for virtual machine ##
az network nic create \
--resource-group test-rg \
--name nic-1 \
--vnet-name vnet-1 \
--subnet subnet-1
## Create the virtual machine ##
az vm create \
--resource-group test-rg \
--name vm-1 \
--location eastus \
--nics nic-1 \
--image Canonical:0001-com-ubuntu-server-jammy:22_04-lts-gen2:latest \
--size Standard_DS1_v2 \
--admin-username azureuser \
--generate-ssh-keys \
--public-ip-address ""
请先等待虚拟机创建完成,然后再转到下一部分。
重要
确保将 SSH 私钥下载到虚拟机。 需要私钥才能通过 Azure Bastion 登录到虚拟机。
测试 NAT 网关
在本部分中,你将测试 NAT 网关。 首先,你会发现 NAT 网关的公共 IP。 然后连接到测试虚拟机,并通过 NAT 网关公共 IP 验证出站连接。
在门户顶部的搜索框中,输入“NAT 网关”。 在搜索结果中选择“NAT 网关”。
选择“nat-gateway”。
展开 设置,然后选择外部 IP。
请记下用于生成出站 IP 地址的 IP 地址。 此处列出了为 NAT 网关配置的单个公共 IP 和公共 IP 前缀。
在门户顶部的搜索框中,输入 虚拟机。 在搜索结果中,选择“虚拟机”。
选择 vm-1。
在“ 概述 ”页上,选择“ 连接”,然后选择“ 通过 Bastion 连接”。
在 “身份验证 ”下拉列表中, 从本地文件选择 SSH 私钥。
在 “用户名”中,输入在虚拟机创建过程中输入的用户名。
在 “本地文件”中,选择之前下载的 SSH 私钥文件。
选择 连接。
在 bash 提示符下,输入以下命令:
curl ifconfig.me
验证命令返回的 IP 地址是否与前面记录的 NAT 网关的公共 IP 地址匹配。
azureuser@vm-1:~$ curl ifconfig.me
203.0.113.0.25
清理资源
使用完创建的资源之后,可以删除资源组及其所有资源。
在 Azure 门户中,搜索并选择“资源组”。
在“资源组”页上,选择“test-rg”资源组。
在“test-rg”页上,选择“删除资源组”。
在“输入资源组名称以确认删除”中输入“test-rg”,然后选择“删除”。
如果不打算继续使用此应用程序,请使用以下命令删除虚拟网络、虚拟机和 NAT 网关:
Remove-AzResourceGroup -Name 'test-rg' -Force
如果不打算继续使用此应用程序,请使用以下命令删除虚拟网络、虚拟机和 NAT 网关:
az group delete \
--name test-rg \
--yes \
--no-wait
后续步骤
有关 Azure NAT 网关的详细信息,请参阅: