中心辐射型网络是高可用性多位置网络基础结构的构建基块之一。 最常见的中心辐射型网络部署的意图是通过中心路由所有分支间流量和出站 Internet 流量。 目的是使用网络虚拟设备 (NVA) 检查穿越网络的所有流量,以进行安全扫描和数据包检查。
对于发往 Internet 的出站流量,网络虚拟设备通常有一个分配了公共 IP 地址的网络接口。 NVA 在检查出站流量后,会将流量从公共接口转发到 Internet。 Azure NAT 网关不再需要分配到 NVA 的公共 IP 地址。 将 NAT 网关与 NVA 的公共子网相关联会更改公共接口的路由,以通过 NAT 网关路由所有出站 Internet 流量。 消除公共 IP 地址可以提高安全性,并允许使用多个公共 IP 地址和/或公共 IP 前缀来扩展出站源网络地址转换 (SNAT)。
重要
本文中使用的 NVA 仅用于演示目的,并使用 Ubuntu 虚拟机进行模拟。 该解决方案不包括用于实现 NVA 部署高可用性的负载均衡器。 请将本文中的 Ubuntu 虚拟机替换为你选择的 NVA。 有关路由和配置说明,请咨询所选 NVA 的供应商。 对于高度可用的 NVA 基础结构,建议使用负载均衡器和可用性区域。
本教程介绍如何执行下列操作:
- 创建 NAT 网关。
- 创建中心辐射型虚拟网络。
- 创建模拟的网络虚拟设备 (NVA)。
- 强制来自分支的所有流量流经中心。
- 强制中心和分支中的所有 Internet 流量从 NAT 网关传出。
- 测试 NAT 网关和分支间路由。
先决条件
在本地安装和使用 PowerShell,本文需要 Azure PowerShell 模块 1.0.0 或更高版本。 运行 Get-Module -ListAvailable Az 查找已安装的版本。 如果需要升级,请参阅安装 Azure PowerShell 模块。 此外,还需要运行 Connect-AzAccount -Environment AzureChinaCloud 以创建与 Azure 的连接。
创建资源组
创建资源组以包含本快速入门的所有资源。
登录 Azure 门户。
在门户顶部的搜索框中,输入 资源组。 在搜索结果中选择“资源组”。
选择“+ 新建”。
在“创建资源组的”基本信息“选项卡中,输入或选择以下信息。
| 设置 |
值 |
| 订阅 |
选择订阅 |
| 资源组 |
test-rg |
| 区域 |
中国北部 3 |
选择“查看 + 创建”。
选择“创建”。
使用 New-AzResourceGroup 创建资源组。 Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。
以下示例在 chinanorth3 位置创建名为 test-rg 的资源组:
$rsg = @{
Name = 'test-rg'
Location = 'chinanorth3'
}
New-AzResourceGroup @rsg
创建 NAT 网关
所有出站 Internet 流量都穿越 NAT 网关传送到 Internet。 使用以下示例为中心辐射型网络创建 NAT 网关。
登录 Azure 门户。
在 Azure 门户顶部的搜索框中,输入“公共 IP 地址”。 在搜索结果中,选择“公共 IP 地址”。
选择“创建”。
在“创建公共 IP 地址”中,输入以下信息。
| 设置 |
值 |
| 订阅 |
选择订阅。 |
| 资源组 |
选择你的资源组。 此示例使用 test-rg。 |
| 区域 |
选择区域。 此示例使用 中国北部 3。 |
| 名称 |
输入 public-ip-nat。 |
| IP 版本 |
选择 IPv4。 |
| SKU |
选择“标准”。 |
| 可用性区域 |
选择“区域冗余”。 |
| 层 |
选择“区域”。 |
选择“查看 + 创建”,然后选择“创建”。
在 Azure 门户顶部的搜索框中,输入“NAT 网关”。 在搜索结果中选择“NAT 网关”。
选择“创建”。
在“创建网络地址转换(NAT)网关”的“基本信息”选项卡中,输入或选择以下信息。
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择 test-rg 或您的资源组。 |
|
实例详细信息 |
|
| NAT 网关名称 |
输入 nat-gateway。 |
| 区域 |
选择你的区域。 此示例使用 中国北部 3。 |
| 可用性区域 |
选择“区域”或“无区域”。 |
| TCP 空闲超时(分钟) |
保留默认值“4”。 |
选择“下一步”。
在 “出站 IP ”选项卡中,选择公共 IP 地址或前缀。
选择“下一步”。
在 “子网 ”选项卡中的 “虚拟网络”中,选择 vnet-1。
选择特定子网,选择 子网 1。
选择查看 + 创建,然后选择创建。
使用 New-AzPublicIpAddress 为 NAT 网关创建区域冗余 IPv4 公共 IP 地址。
## Create public IP address for NAT gateway ##
$ip = @{
Name = 'public-ip-nat'
ResourceGroupName = 'test-rg'
Location = 'chinanorth3'
Sku = 'Standard'
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'
Location = 'chinanorth3'
PublicIpAddress = $publicIPIPv4
Zone = 1
}
$natGateway = New-AzNatGateway @nat
创建中心虚拟网络
中心虚拟网络是解决方案的中心网络。 中心网络包含 NVA 设备以及公共和专用子网。 在创建虚拟网络期间,NAT 网关将分配到公共子网。 Azure Bastion 主机配置为以下示例的一部分。 该堡垒主机用于安全连接到 NVA 虚拟机以及本文稍后将在分支中部署的测试虚拟机。
登录 Azure 门户。
在 Azure 门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择“创建”。
在“创建虚拟网络”的“基本信息”选项卡中输入或选择以下信息。
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择 test-rg 或您的资源组。 |
|
实例详细信息 |
|
| 名称 |
输入“vnet-1”。 |
| 区域 |
选择你的区域。 此示例使用 中国北部 3。 |
选择“ IP 地址 ”选项卡,或依次选择“ 下一步:安全性”、“ 下一步:IP 地址”。
在 “子网 ”中,选择 默认 子网。
在“编辑子网”中,输入或选择以下信息。
| 设置 |
值 |
| 子网用途 |
保留默认值。 |
| 名称 |
输入subnet-1。 |
将其余设置保留为默认值,然后选择“ 保存”。
选择“+添加子网”。
在 “添加子网”中 输入或选择以下信息。
| 设置 |
值 |
| 子网用途 |
选择 Azure Bastion。 |
将其余设置保留为默认值,然后选择“ 添加”。
选择查看 + 创建,然后选择创建。
使用 New-AzVirtualNetworkSubnetConfig 创建子网。
$subnetPrivateParams = @{
Name = "subnet-private"
AddressPrefix = "10.0.0.0/24"
}
$privateSubnetConfig = New-AzVirtualNetworkSubnetConfig @subnetPrivateParams
$subnetBastionParams = @{
Name = "AzureBastionSubnet"
AddressPrefix = "10.0.1.0/26"
}
$bastionSubnetConfig = New-AzVirtualNetworkSubnetConfig @subnetBastionParams
$subnetPublicParams = @{
Name = "subnet-public"
AddressPrefix = "10.0.253.0/28"
NatGateway = (Get-AzNatGateway -ResourceGroupName "test-rg" -Name "nat-gateway")
}
$publicSubnetConfig = New-AzVirtualNetworkSubnetConfig @subnetPublicParams
使用 New-AzVirtualNetwork 创建虚拟网络。
$vNetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-hub"
AddressPrefix = "10.0.0.0/16"
Location = "chinanorth3"
Subnet = $privateSubnetConfig, $bastionSubnetConfig, $publicSubnetConfig
}
$vNet = New-AzVirtualNetwork @vNetParams
创建 Azure Bastion 主机
Azure Bastion 通过 TLS 提供与虚拟机的安全 RDP 和 SSH 连接,而无需 VM 上的公共 IP 地址。
在 Azure 门户顶部的搜索框中,输入 Bastion。 在搜索结果中选择 Bastions 。
选择“创建”。
在“创建 Bastion”的基本选项卡中输入或选择以下信息。
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择 test-rg 或您的资源组。 |
|
实例详细信息 |
|
| 名称 |
输入“堡垒”。 |
| 区域 |
选择你的区域。 此示例使用 中国北部 3。 |
| 层 |
选择基本。 |
| 虚拟网络 |
选择“vnet-1”。 |
| 子网 |
选择“AzureBastionSubnet”。 |
选择查看 + 创建,然后选择创建。
使用 New-AzPublicIpAddress 为 Azure Bastion 主机创建公共 IP 地址。
$publicIpParams = @{
ResourceGroupName = "test-rg"
Name = "public-ip-bastion"
Sku = "Standard"
AllocationMethod = "Static"
Location = "chinanorth3"
Zone = 1,2,3
}
New-AzPublicIpAddress @publicIpParams
使用 New-AzBastion 创建 Azure Bastion 主机。
$bastionParams = @{
ResourceGroupName = "test-rg"
Name = "bastion"
VirtualNetworkName = "vnet-hub"
PublicIpAddressName = "public-ip-bastion"
PublicIPAddressRgName = "test-rg"
VirtualNetworkRgName = "test-rg"
Sku = "Basic"
}
New-AzBastion @bastionParams
创建模拟的 NVA 虚拟机
模拟的 NVA 充当虚拟设备,用于路由分支和中心之间的所有流量以及发送到 Internet 的出站流量。 Ubuntu 虚拟机用于模拟的 NVA。 使用以下示例创建模拟的 NVA 并配置网络接口。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“+ 创建”,然后选择“Azure 虚拟机”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择“test-rg”。 |
|
实例详细信息 |
|
| 虚拟机名称 |
输入 vm-nva。 |
| 区域 |
选择“中国北部 3”。 |
| 可用性选项 |
选择“无需基础结构冗余”。 |
| 安全类型 |
选择“标准”。 |
| 图像 |
选择“Ubuntu Server 24.04 LTS - Gen2”。 |
| 大小 |
选择一个大小。 |
|
管理员帐户 |
|
| 身份验证类型 |
选择“SSH 公钥”。 |
| 用户名 |
输入用户名。 |
| SSH 公钥源 |
选择“生成新密钥对”。 |
| SSH 密钥类型 |
保留 RSA SSH 格式的默认值。 |
| 密钥对名称 |
输入 ssh-key。 |
|
入站端口规则 |
|
| 公共入站端口 |
选择“无”。 |
选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”中,输入或选择以下信息:
| 设置 |
值 |
|
网络接口 |
|
| 虚拟网络 |
选择 vnet-hub。 |
| 子网 |
选择 subnet-public (10.0.253.0/28)。 |
| 公共 IP |
选择“无”。 |
| NIC 网络安全组 |
选择“高级”。 |
| 配置网络安全组 |
选择“新建”。
在“名称”中,输入 nsg-nva。
选择“确定”。 |
将其余选项保留为默认值,然后选择“查看 + 创建”。
选择“创建”。
此时会显示“ 生成新密钥对 ”对话框。 选择“下载私钥并创建资源”。
私钥将下载到本地计算机。 在后续步骤中,使用 Azure Bastion 连接到虚拟机时将需要该私钥。 私钥文件的名称是在 “密钥对名称 ”字段中输入的名称。 在此示例中,私钥文件名为 ssh-key。
使用 New-AzNetworkSecurityGroup 创建网络安全组。
$nsgParams = @{
ResourceGroupName = "test-rg"
Name = "nsg-nva"
Location = "chinanorth3"
}
New-AzNetworkSecurityGroup @nsgParams
使用 New-AzNetworkInterface 创建网络接口。
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-public"
SubnetId = (Get-AzVirtualNetwork -ResourceGroupName "test-rg" -Name "vnet-hub").Subnets[1].Id
NetworkSecurityGroupId = (Get-AzNetworkSecurityGroup -ResourceGroupName "test-rg" -Name "nsg-nva").Id
Location = "chinanorth3"
}
New-AzNetworkInterface @nicParams
使用 Get-Credential 设置 VM 的用户名和密码,并将其存储在 $cred 变量中。
$cred = Get-Credential
注意
需要为 VM 提供一个用户名。 密码是可选的,即使设置了密码,也不会使用。 对于 Linux VM,建议使用 SSH 密钥配置。
使用 New-AzVMConfig 定义 VM。
$vmConfigParams = @{
VMName = "vm-nva"
VMSize = "Standard_DS4_v2"
}
$vmConfig = New-AzVMConfig @vmConfigParams
使用 Set-AzVMOperatingSystem 和 Set-AzVMSourceImage 创建 VM 配置的其余部分。 以下示例创建 Ubuntu Server 虚拟机:
$osParams = @{
VM = $vmConfig
ComputerName = "vm-nva"
Credential = $cred
}
$vmConfig = Set-AzVMOperatingSystem @osParams -Linux -DisablePasswordAuthentication
$imageParams = @{
VM = $vmConfig
PublisherName = "Canonical"
Offer = "ubuntu-24_04-lts"
Skus = "server"
Version = "latest"
}
$vmConfig = Set-AzVMSourceImage @imageParams
使用 Add-AzVMNetworkInterface 将之前创建的 NIC 附加到 VM。
# Get the network interface object
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-public"
}
$nic = Get-AzNetworkInterface @nicParams
$vmConfigParams = @{
VM = $vmConfig
Id = $nic.Id
}
$vmConfig = Add-AzVMNetworkInterface @vmConfigParams
使用 New-AzVM 创建 VM。 该命令将为虚拟机生成用于进行登录的 SSH 密钥。 记下该私钥的位置。 在后续步骤中,使用 Azure Bastion 连接到虚拟机时将需要该私钥。
$vmParams = @{
VM = $vmConfig
ResourceGroupName = "test-rg"
Location = "chinanorth3"
SshKeyName = "ssh-key"
}
New-AzVM @vmParams -GenerateSshKey
默认情况下,虚拟机主要网络接口的 IP 配置设置为动态。 使用以下示例将主要网络接口 IP 配置更改为静态,并为 NVA 的专用接口添加辅助网络接口。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择 vm-nva。
在“概述”中,如果虚拟机正在运行,请选择“停止”。
展开“网络”,然后选择“网络设置”。
在“网络设置”中,选择“网络接口:”旁的网络接口名称。 接口名称是虚拟机名称加上随机数字和字母。 在此示例中,接口名称为 vm-nva271。
在网络接口属性的“设置”中,选择“IP 配置” 。
选中 “启用 IP 转发”旁的框。
选择“应用”。
应用操作完成后,选择 ipconfig1。
在“ipconfig1”中的“专用 IP 地址设置”中,选择“静态”。
在“专用 IP 地址”中输入“10.0.253.10”。
选择“保存”。
保存操作完成后,返回 vm-nva 的网络配置。
在 vm-nva 的“网络设置”中,选择“附加网络接口”。
选择“创建并附加网络接口”。
在“创建网络接口”中,输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 资源组 |
选择“test-rg”。 |
|
网络接口 |
|
| 名称 |
输入 nic-private。 |
| 子网 |
选择 subnet-private (10.0.0.0/24)。 |
| NIC 网络安全组 |
选择“高级”。 |
| 配置网络安全组 |
选择 nsg-nva。 |
| 专用 IP 地址分配 |
选择“静态”。 |
| 专用 IP 地址 |
输入 10.0.0.10。 |
选择“创建”。
启动虚拟机。
使用 Set-AzNetworkInterface 在主网络接口上启用 IP 转发。
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-public"
}
$nic = Get-AzNetworkInterface @nicParams
$nic.EnableIPForwarding = $true
Set-AzNetworkInterface -NetworkInterface $nic
使用 Set-AzNetworkInterfaceIpConfig 静态设置公共接口虚拟机的专用 IP 地址。
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-public"
}
$nic = Get-AzNetworkInterface @nicParams
$nic.IpConfigurations[0].PrivateIpAllocationMethod = "Static"
$nic.IpConfigurations[0].PrivateIpAddress = "10.0.253.10"
Set-AzNetworkInterface -NetworkInterface $nic
使用 Update-AzVM 将 nic-public 接口指定为主接口。
$vmParams = @{
ResourceGroupName = "test-rg"
Name = "vm-nva"
}
$vm = Get-AzVM @vmParams
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-public"
}
$nic = Get-AzNetworkInterface @nicParams
$vm.NetworkProfile.NetworkInterfaces | ForEach-Object {
$_.Primary = $false
}
$vm.NetworkProfile.NetworkInterfaces | Where-Object { $_.Id -eq $nic.Id } | ForEach-Object {
$_.Primary = $true
}
$updateParams = @{
ResourceGroupName = "test-rg"
VM = $vm
}
Update-AzVM @updateParams
使用 New-AzNetworkInterface 创建辅助网络接口。
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-private"
SubnetId = (Get-AzVirtualNetwork -ResourceGroupName "test-rg" -Name "vnet-hub").Subnets[0].Id
PrivateIpAddress = "10.0.0.10"
Location = "chinanorth3"
}
New-AzNetworkInterface @nicParams
使用 Stop-AzVM 关闭并解除分配虚拟机。
$vmParams = @{
ResourceGroupName = "test-rg"
Name = "vm-nva"
Force = $true
}
Stop-AzVM @vmParams
使用 Add-AzVMNetworkInterface 将辅助网络接口附加到虚拟机。
$vmParams = @{
ResourceGroupName = "test-rg"
Name = "vm-nva"
}
$vm = Get-AzVM @vmParams
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-private"
}
$nic = Get-AzNetworkInterface @nicParams
$vm = Add-AzVMNetworkInterface -VM $vm -Id $nic.Id
$updateParams = @{
ResourceGroupName = "test-rg"
VM = $vm
}
Update-AzVM @updateParams
使用 Start-AzVM 启动虚拟机。
$startVmParams = @{
ResourceGroupName = "test-rg"
Name = "vm-nva"
}
Start-AzVM @startVmParams
模拟 NVA 的路由使用 Ubuntu 虚拟机中的 IP 表和内部 NAT。 使用 Azure Bastion 连接到 NVA 虚拟机,以配置 IP 表和路由配置。
在 Azure 门户中,搜索并选择“虚拟机”。
在 “虚拟机 ”页上,选择 vm-nva。
在该 VM 的“概述”页上,选择“连接”,然后选择“通过 Bastion 连接”。
在 Bastion 连接屏幕中,将“身份验证类型”更改为“本地文件中的 SSH 私钥”。
输入创建虚拟机时使用的用户名。 在此示例中,用户名为 azureuser,请将其替换为你创建的用户名。
在“本地文件”中,选择文件夹图标并浏览到创建 VM 时生成的私钥文件。 私钥文件通常命名 id_rsa 或 id_rsa.pemssh-key.pem。
选择“连接” 。
在虚拟机的提示符处输入以下信息以启用 IP 转发:
sudo nano /etc/sysctl.conf
在 Nano 编辑器中,从行#中删除 net.ipv4.ip_forward=1 :
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
按 Ctrl + O 保存文件。
按 Ctrl + X 退出编辑器。
输入以下信息,以在虚拟机中启用内部 NAT:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo apt-get update
sudo apt install iptables-persistent
选择“是”两次。
sudo su
iptables-save > /etc/iptables/rules.v4
exit
使用 Nano 根据以下信息编辑配置:
sudo nano /etc/rc.local
将以下行添加到配置文件:
/sbin/iptables-restore < /etc/iptables/rules.v4
按 Ctrl + O 保存文件。
按 Ctrl + X 退出编辑器。
重新启动虚拟机:
sudo reboot
创建中心网络路由表
路由表用于覆盖 Azure 的默认路由。 创建路由表以强制中心专用子网中的所有流量流经模拟的 NVA。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择“+ 新建”。
在“创建路由表”中,输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择“test-rg”。 |
|
实例详细信息 |
|
| 区域 |
选择“中国北部 3”。 |
| 名称 |
输入 route-table-nat-hub。 |
| 传播网关路由 |
保留默认值“是”。 |
选择“查看 + 创建”。
选择“创建”。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择 route-table-nat-hub。
展开“设置”,然后选择“路由”。
在“路由”中选择“+ 添加”。
在“添加路由”中,输入或选择以下信息:
| 设置 |
值 |
| 路由名称 |
输入 default-via-nat-hub。 |
| 目标类型 |
选择“IP 地址”。 |
| 目标 IP 地址/CIDR 范围 |
输入 0.0.0.0/0。 |
| 下一跃点类型 |
选择“虚拟设备”。 |
| 下一跃点地址 |
输入 10.0.0.10。
这是在前面的步骤中添加到 NVA 的专用接口的 IP 地址。。 |
选择添加。
在“设置”中选择“子网”。
选择“+ 关联”。
在“关联子网”中,输入或选择以下信息:
| 设置 |
值 |
| 虚拟网络 |
选择 vnet-hub (test-rg)。 |
| 子网 |
选择“subnet-private”。 |
选择“确定”。
使用 New-AzRouteTable 创建路由表。
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-nat-hub"
Location = "chinanorth3"
}
New-AzRouteTable @routeTableParams
使用 Add-AzRouteConfig 在路由表中创建路由。
$routeConfigParams = @{
Name = "default-via-nat-hub"
AddressPrefix = "0.0.0.0/0"
NextHopType = "VirtualAppliance"
NextHopIpAddress = "10.0.0.10"
}
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-nat-hub"
}
$routeTable = Get-AzRouteTable @routeTableParams
$routeTable | Add-AzRouteConfig @routeConfigParams | Set-AzRouteTable
使用 Set-AzVirtualNetworkSubnetConfig 将路由表与子网相关联。
$vnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-hub"
}
$vnet = Get-AzVirtualNetwork @vnetParams
$subnetParams = @{
VirtualNetwork = $vnet
Name = "subnet-private"
}
$subnet = Get-AzVirtualNetworkSubnetConfig @subnetParams
$subnet.RouteTable = $routeTable
Set-AzVirtualNetwork -VirtualNetwork $vnet
创建分支 1 虚拟网络
在其他区域中为中心辐射型网络的第一个分支创建另一个虚拟网络。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择“+ 新建”。
在“创建虚拟网络”的“基本信息”选项卡中输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择“test-rg”。 |
|
实例详细信息 |
|
| 名称 |
输入 vnet-spoke-1。 |
| 区域 |
选择“中国北部 2”。 |
选择下一步,转到安全性选项卡。
选择“下一步”,转到“IP 地址”选项卡。
在“IPv4 地址空间”中的“IP 地址”选项卡中,选择“删除地址空间”以删除自动填充的地址空间。
选择“添加 IPv4 地址空间”。
在“IPv4 地址空间”中,输入“10.1.0.0.”。 在掩码选择中保留默认值 /16(65536 个地址)。
选择“+添加子网”。
在“添加子网”中输入或选择以下信息:
| 设置 |
值 |
| 子网用途 |
保留默认值“默认”。 |
| 名称 |
输入 subnet-private。 |
|
IPv4 |
|
| IPv4 地址范围 |
保留默认值“10.1.0.0/16”。 |
| 开始地址 |
保留默认值 10.1.0.0。 |
| 大小 |
保留默认值“/24 (256 个地址)”。 |
选择添加。
选择“查看 + 创建”。
选择“创建”。
使用 New-AzVirtualNetwork 创建虚拟网络。
$vnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-spoke-1"
AddressPrefix = "10.1.0.0/16"
Location = "chinanorth2"
}
New-AzVirtualNetwork @vnetParams
使用 Add-AzVirtualNetworkSubnetConfig 创建子网。
$vnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-spoke-1"
}
$vnet = Get-AzVirtualNetwork @vnetParams
$subnetParams = @{
VirtualNetwork = $vnet
Name = "subnet-private"
AddressPrefix = "10.1.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Set-AzVirtualNetwork -VirtualNetwork $vnet
在中心与分支 1 之间创建对等互连
虚拟网络对等互连用于将中心连接到分支 1,并将分支 1 连接到中心。 使用以下示例在中心与分支 1 之间创建双向网络对等互连。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择 vnet-hub。
展开“设置”,然后选择“对等互连”。
选择“+ 添加”。
在“添加对等方”中,输入或选择以下信息:
| 设置 |
值 |
| 远程虚拟网络摘要 |
|
| 对等互连链接名称 |
输入 vnet-spoke-1-to-vnet-hub。 |
| 虚拟网络部署模型 |
保留默认值“资源管理器”。 |
| 订阅 |
选择订阅。 |
| 虚拟网络 |
选择 vnet-spoke-1 (test-rg)。 |
| 远程虚拟网络对等互连设置 |
|
| 允许“vnet-spoke-1”访问“vnet-hub” |
保留默认值“已选择”。 |
| 允许“vnet-spoke-1”接收来自“vnet-hub”的转发流量 |
选中复选框。 |
| 允许“vnet-spoke-1”中的网关或路由服务器将流量转发到“vnet-hub” |
保留默认值“未选中”。 |
| 启用“vnet-spoke-1”以使用“vnet-hub”的远程网关或路由服务器 |
保留默认值“未选中”。 |
| 本地虚拟网络摘要 |
|
| 对等互连链接名称 |
输入 vnet-hub-to-vnet-spoke-1。 |
| 本地虚拟网络对等互连设置 |
|
| 允许“vnet-hub”访问“vnet-spoke-1” |
保留默认值“已选择”。 |
| 允许“vnet-hub”接收来自“vnet-spoke-1”的转发流量 |
选中复选框。 |
| 允许“vnet-hub”中的网关或路由服务器将流量转发到“vnet-spoke-1” |
保留默认值“未选中”。 |
| 启用“vnet-hub”以使用“vnet-spoke-1”的远程网关或路由服务器 |
保留默认值“未选中”。 |
选择添加。
选择“刷新”并确认“对等互连状态”是否为“已连接”。
使用 Add-AzVirtualNetworkPeering 来创建从中心到分支 1 的对等互连。
# Create peering from hub to spoke one
$hubVnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-hub"
}
$hubVnet = Get-AzVirtualNetwork @hubVnetParams
$spokeVnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-spoke-1"
}
$spokeVnet = Get-AzVirtualNetwork @spokeVnetParams
$hubToSpokeParams = @{
Name = "vnet-hub-to-vnet-spoke-1"
VirtualNetwork = $hubVnet
RemoteVirtualNetworkId = $spokeVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @hubToSpokeParams
# Create peering from spoke one to hub
$spokeToHubParams = @{
Name = "vnet-spoke-1-to-vnet-hub"
VirtualNetwork = $spokeVnet
RemoteVirtualNetworkId = $hubVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @spokeToHubParams
创建分支 1 网络路由表
创建一个路由表,以强制所有分支间流量和 Internet 出口流量流经中心虚拟网络中的模拟 NVA。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择“+ 新建”。
在“创建路由表”中,输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择“test-rg”。 |
|
实例详细信息 |
|
| 区域 |
选择“中国北部 2”。 |
| 名称 |
输入 route-table-nat-spoke-1。 |
| 传播网关路由 |
保留默认值“是”。 |
选择“查看 + 创建”。
选择“创建”。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择 route-table-nat-spoke-1。
展开 “设置”,然后选择“ 路由”。
在“路由”中选择“+ 添加”。
在“添加路由”中,输入或选择以下信息:
| 设置 |
值 |
| 路由名称 |
输入 default-via-nat-spoke-1。 |
| 目标类型 |
选择“IP 地址”。 |
| 目标 IP 地址/CIDR 范围 |
输入 0.0.0.0/0。 |
| 下一跃点类型 |
选择“虚拟设备”。 |
| 下一跃点地址 |
输入 10.0.0.10。
这是在前面的步骤中添加到 NVA 的专用接口的 IP 地址。。 |
选择添加。
在“设置”中选择“子网”。
选择“+ 关联”。
在“关联子网”中,输入或选择以下信息:
| 设置 |
值 |
| 虚拟网络 |
选择 vnet-spoke-1 (test-rg)。 |
| 子网 |
选择“subnet-private”。 |
选择“确定”。
使用 New-AzRouteTable 创建路由表。
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-nat-spoke-1"
Location = "chinanorth2"
}
New-AzRouteTable @routeTableParams
使用 Add-AzRouteConfig 在路由表中创建路由。
$routeConfigParams = @{
Name = "default-via-nat-spoke-1"
AddressPrefix = "0.0.0.0/0"
NextHopType = "VirtualAppliance"
NextHopIpAddress = "10.0.0.10"
}
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-nat-spoke-1"
}
$routeTable = Get-AzRouteTable @routeTableParams
$routeTable | Add-AzRouteConfig @routeConfigParams | Set-AzRouteTable
使用 Set-AzVirtualNetworkSubnetConfig 将路由表与子网相关联。
$vnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-spoke-1"
}
$vnet = Get-AzVirtualNetwork @vnetParams
$subnetParams = @{
VirtualNetwork = $vnet
Name = "subnet-private"
}
$subnet = Get-AzVirtualNetworkSubnetConfig @subnetParams
$subnet.RouteTable = $routeTable
Set-AzVirtualNetwork -VirtualNetwork $vnet
创建分支 1 测试虚拟机
使用一个 Windows Server 2022 虚拟机来测试通过 NAT 网关传送的出站 Internet 流量,以及中心辐射型网络中的分支间流量。 使用以下示例创建 Windows Server 2022 虚拟机。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“+ 创建”,然后选择“Azure 虚拟机”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择“test-rg”。 |
|
实例详细信息 |
|
| 虚拟机名称 |
输入 vm-spoke-1。 |
| 区域 |
选择“中国北部 2”。 |
| 可用性选项 |
选择“无需基础结构冗余”。 |
| 安全类型 |
选择“标准”。 |
| 图像 |
选择“Windows Server 2022 Datacenter - Gen2”。 |
| 大小 |
选择一个大小。 |
|
管理员帐户 |
|
| 身份验证类型 |
选择密码。 |
| 用户名 |
输入用户名。 |
| Password |
输入密码。 |
| 确认密码 |
重新输入密码。 |
|
入站端口规则 |
|
| 公共入站端口 |
选择“无”。 |
选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”中,输入或选择以下信息:
| 设置 |
值 |
|
网络接口 |
|
| 虚拟网络 |
选择 vnet-spoke-1。 |
| 子网 |
选择“subnet-private (10.1.0.0/24)”。 |
| 公共 IP |
选择“无”。 |
| NIC 网络安全组 |
选择“高级”。 |
| 配置网络安全组 |
选择“新建”。
输入 nsg-spoke-1。 |
| 入站规则 |
选择“+ 添加入站规则”。
在“服务”中,选择“HTTP”。
选择“添加”。
选择“确定”。 |
选择“确定”。
将其余选项保留为默认值,然后选择“查看 + 创建”。
选择“创建”。
使用 New-AzNetworkSecurityGroup 创建网络安全组。
$nsgParams = @{
ResourceGroupName = "test-rg"
Name = "nsg-spoke-1"
Location = "chinanorth2"
}
New-AzNetworkSecurityGroup @nsgParams
使用 New-AzNetworkSecurityRuleConfig 为 HTTP 创建入站 NSG 规则。
$nsgParams = @{
ResourceGroupName = "test-rg"
Name = "nsg-spoke-1"
}
$nsg = Get-AzNetworkSecurityGroup @nsgParams
$ruleParams = @{
Name = "allow-http"
Priority = 1000
Direction = "Inbound"
Access = "Allow"
Protocol = "Tcp"
SourceAddressPrefix = "*"
SourcePortRange = "*"
DestinationAddressPrefix = "*"
DestinationPortRange = "80"
}
$nsg | Add-AzNetworkSecurityRuleConfig @ruleParams
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
使用 New-AzNetworkInterface 创建网络接口。
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-1"
SubnetId = (Get-AzVirtualNetwork -ResourceGroupName "test-rg" -Name "vnet-spoke-1").Subnets[0].Id
NetworkSecurityGroupId = (Get-AzNetworkSecurityGroup -ResourceGroupName "test-rg" -Name "nsg-spoke-1").Id
Location = "chinanorth2"
}
New-AzNetworkInterface @nicParams
使用 Get-Credential 设置 VM 的用户名和密码,并将其存储在 $cred 变量中。
$cred = Get-Credential
使用 New-AzVMConfig 定义 VM。
$vmConfigParams = @{
VMName = "vm-spoke-1"
VMSize = "Standard_DS4_v2"
}
$vmConfig = New-AzVMConfig @vmConfigParams
使用 Set-AzVMOperatingSystem 和 Set-AzVMSourceImage 创建 VM 配置的其余部分。 以下示例创建 Windows Server 虚拟机:
$osParams = @{
VM = $vmConfig
ComputerName = "vm-spoke-1"
Credential = $cred
}
$vmConfig = Set-AzVMOperatingSystem @osParams -Windows
$imageParams = @{
VM = $vmConfig
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$vmConfig = Set-AzVMSourceImage @imageParams
使用 Add-AzVMNetworkInterface 将之前创建的 NIC 附加到 VM。
# Get the network interface object
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-1"
}
$nic = Get-AzNetworkInterface @nicParams
$vmConfigParams = @{
VM = $vmConfig
Id = $nic.Id
}
$vmConfig = Add-AzVMNetworkInterface @vmConfigParams
使用 New-AzVM 创建 VM。
$vmParams = @{
VM = $vmConfig
ResourceGroupName = "test-rg"
Location = "chinanorth2"
}
New-AzVM @vmParams
等待虚拟机完成部署,然后再继续执行后续步骤。
在分支 1 测试虚拟机上安装 IIS
IIS 安装在 Windows Server 2022 虚拟机上,用于测试通过 NAT 网关传送的出站 Internet 流量,以及中心辐射型网络中的分支间流量。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择 vm-spoke-1。
展开“操作”,然后选择“运行命令”。
选择 RunPowerShellScript。
在“运行命令脚本”中输入以下脚本:
# Install IIS server role
Install-WindowsFeature -name Web-Server -IncludeManagementTools
# Remove default htm file
Remove-Item C:\inetpub\wwwroot\iisstart.htm
# Add a new htm file that displays server name
Add-Content -Path "C:\inetpub\wwwroot\iisstart.htm" -Value $("Hello World from " + $env:computername)
选择“运行”。
请等待脚本完成,然后继续执行下一步。 脚本可能需要几分钟才能完成。
脚本完成后,“输出”将显示以下内容:
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No Success {Common HTTP Features, Default Document, D...
使用 Set-AzVMExtension 在虚拟机上安装 IIS。
$vmExtensionParams = @{
ResourceGroupName = "test-rg"
VMName = "vm-spoke-1"
Name = "CustomScriptExtension"
Publisher = "Microsoft.Compute"
Type = "CustomScriptExtension"
TypeHandlerVersion = "1.10"
Settings = @{
"commandToExecute" = "powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path 'C:\inetpub\wwwroot\default.htm' -Value vm-spoke-1"
}
}
Set-AzVMExtension @vmExtensionParams
创建第二个分支虚拟网络
为中心辐射型网络的第二个分支创建第二个虚拟网络。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择“+ 新建”。
在“创建虚拟网络”的“基本信息”选项卡中输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择“test-rg”。 |
|
实例详细信息 |
|
| 名称 |
输入 vnet-spoke-2。 |
| 区域 |
选择“中国北部 2”。 |
选择下一步,转到安全性选项卡。
选择“下一步”,转到“IP 地址”选项卡。
在“IPv4 地址空间”中的“IP 地址”选项卡中,选择“删除地址空间”以删除自动填充的地址空间。
选择“添加 IPv4 地址空间”。
在“IPv4 地址空间”中,输入“10.2.0.0”。 在掩码选择中保留默认值 /16(65536 个地址)。
选择“+添加子网”。
在“添加子网”中输入或选择以下信息:
| 设置 |
值 |
| 子网用途 |
保留默认值“默认”。 |
| 名称 |
输入 subnet-private。 |
|
IPv4 |
|
| IPv4 地址范围 |
保留默认值“10.2.0.0/16”。 |
| 开始地址 |
保留默认值“10.2.0.0”。 |
| 大小 |
保留默认值“/24 (256 个地址)”。 |
选择添加。
选择“查看 + 创建”。
选择“创建”。
使用 New-AzVirtualNetwork 创建虚拟网络。
$vnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-spoke-2"
AddressPrefix = "10.2.0.0/16"
Location = "chinaeast2"
}
New-AzVirtualNetwork @vnetParams
使用 Add-AzVirtualNetworkSubnetConfig 创建子网。
$vnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-spoke-2"
}
$vnet = Get-AzVirtualNetwork @vnetParams
$subnetParams = @{
VirtualNetwork = $vnet
Name = "subnet-private"
AddressPrefix = "10.2.0.0/24"
}
Add-AzVirtualNetworkSubnetConfig @subnetParams
Set-AzVirtualNetwork -VirtualNetwork $vnet
在中心与分支 2 之间创建对等互连
在中心与分支 2 之间创建双向虚拟网络对等互连。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择 vnet-hub。
在“设置”中选择“对等互连”。
选择“+ 添加”。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。
选择 vnet-hub。
在“设置”中选择“对等互连”。
选择“+ 添加”。
在“添加对等方”中,输入或选择以下信息:
| 设置 |
值 |
| 远程虚拟网络摘要 |
|
| 对等互连链接名称 |
输入 vnet-spoke-2-to-vnet-hub。 |
| 虚拟网络部署模型 |
保留默认值“资源管理器”。 |
| 订阅 |
选择订阅。 |
| 虚拟网络 |
选择 vnet-spoke-2 (test-rg)。 |
| 远程虚拟网络对等互连设置 |
|
| 允许“vnet-spoke-2”访问“vnet-hub” |
保留默认值“已选择”。 |
| 允许“vnet-spoke-2”接收来自“vnet-hub”的转发流量 |
选中复选框。 |
| 允许“vnet-spoke-2”中的网关或路由服务器将流量转发到“vnet-hub” |
保留默认值“未选中”。 |
| 启用“vnet-spoke-2”以使用“vnet-hub”的远程网关或路由服务器 |
保留默认值“未选中”。 |
| 本地虚拟网络摘要 |
|
| 对等互连链接名称 |
输入 vnet-hub-to-vnet-spoke-2。 |
| 本地虚拟网络对等互连设置 |
|
| 允许“vnet-hub”访问“vnet-spoke-2” |
保留默认值“已选择”。 |
| 允许“vnet-hub”接收来自“vnet-spoke-2”的转发流量 |
选中复选框。 |
| 允许“vnet-hub”中的网关或路由服务器将流量转发到“vnet-spoke-2” |
保留默认值“未选中”。 |
| 启用“vnet-hub”以使用“vnet-spoke-2”的远程网关或路由服务器 |
保留默认值“未选中”。 |
选择添加。
选择“刷新”并确认“对等互连状态”是否为“已连接”。
使用 Add-AzVirtualNetworkPeering 来创建从中心到分支 2 的对等互连。
# Create peering from hub to spoke two
$hubVnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-hub"
}
$hubVnet = Get-AzVirtualNetwork @hubVnetParams
$spokeVnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-spoke-2"
}
$spokeVnet = Get-AzVirtualNetwork @spokeVnetParams
$hubToSpokeParams = @{
Name = "vnet-hub-to-vnet-spoke-2"
VirtualNetwork = $hubVnet
RemoteVirtualNetworkId = $spokeVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @hubToSpokeParams
# Create peering from spoke two to hub
$spokeToHubParams = @{
Name = "vnet-spoke-2-to-vnet-hub"
VirtualNetwork = $spokeVnet
RemoteVirtualNetworkId = $hubVnet.Id
AllowForwardedTraffic = $true
}
Add-AzVirtualNetworkPeering @spokeToHubParams
创建分支 2 网络路由表
创建一个路由表,以强制所有 Internet 出站流量和分支间流量流经中心虚拟网络中的模拟 NVA。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择“+ 新建”。
在“创建路由表”中,输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择“test-rg”。 |
|
实例详细信息 |
|
| 区域 |
选择“中国东部 2”。 |
| 名称 |
输入 route-table-nat-spoke-2。 |
| 传播网关路由 |
保留默认值“是”。 |
选择“查看 + 创建”。
选择“创建”。
在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。
选择 route-table-nat-spoke-2。
在“设置”中选择“路由”。
在“路由”中选择“+ 添加”。
在“添加路由”中,输入或选择以下信息:
| 设置 |
值 |
| 路由名称 |
输入 default-via-nat-spoke-2。 |
| 目标类型 |
选择“IP 地址”。 |
| 目标 IP 地址/CIDR 范围 |
输入 0.0.0.0/0。 |
| 下一跃点类型 |
选择“虚拟设备”。 |
| 下一跃点地址 |
输入 10.0.0.10。
这是在前面的步骤中添加到 NVA 的专用接口的 IP 地址。。 |
选择添加。
在“设置”中选择“子网”。
选择“+ 关联”。
在“关联子网”中,输入或选择以下信息:
| 设置 |
值 |
| 虚拟网络 |
选择 vnet-spoke-2 (test-rg)。 |
| 子网 |
选择“subnet-private”。 |
选择“确定”。
使用 New-AzRouteTable 创建路由表。
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-nat-spoke-2"
Location = "chinaeast2"
}
New-AzRouteTable @routeTableParams
使用 Add-AzRouteConfig 在路由表中创建路由。
$routeParams = @{
Name = "default-via-nat-spoke-2"
AddressPrefix = "0.0.0.0/0"
NextHopType = "VirtualAppliance"
NextHopIpAddress = "10.0.0.10"
}
$routeTableParams = @{
ResourceGroupName = "test-rg"
Name = "route-table-nat-spoke-2"
}
$routeTable = Get-AzRouteTable @routeTableParams
$routeTable | Add-AzRouteConfig @routeParams | Set-AzRouteTable
使用 Set-AzVirtualNetworkSubnetConfig 将路由表与子网相关联。
$vnetParams = @{
ResourceGroupName = "test-rg"
Name = "vnet-spoke-2"
}
$vnet = Get-AzVirtualNetwork @vnetParams
$subnetParams = @{
VirtualNetwork = $vnet
Name = "subnet-private"
}
$subnet = Get-AzVirtualNetworkSubnetConfig @subnetParams
$subnet.RouteTable = $routeTable
Set-AzVirtualNetwork -VirtualNetwork $vnet
创建分支 2 测试虚拟机
在分支 2 中创建 Windows Server 2022 虚拟机作为测试虚拟机。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择“+ 创建”,然后选择“Azure 虚拟机”。
在“创建虚拟机”的“基本信息”选项卡中,输入或选择以下信息:
| 设置 |
值 |
|
项目详细信息 |
|
| 订阅 |
选择订阅。 |
| 资源组 |
选择“test-rg”。 |
|
实例详细信息 |
|
| 虚拟机名称 |
输入 vm-spoke-2。 |
| 区域 |
选择“中国东部 2”。 |
| 可用性选项 |
选择“无需基础结构冗余”。 |
| 安全类型 |
选择“标准”。 |
| 图像 |
选择“Windows Server 2022 Datacenter - Gen2”。 |
| 大小 |
选择一个大小。 |
|
管理员帐户 |
|
| 身份验证类型 |
选择密码。 |
| 用户名 |
输入用户名。 |
| Password |
输入密码。 |
| 确认密码 |
重新输入密码。 |
|
入站端口规则 |
|
| 公共入站端口 |
选择“无”。 |
选择“下一步: 磁盘”,然后选择“下一步: 网络”。
在“网络”中,输入或选择以下信息:
| 设置 |
值 |
|
网络接口 |
|
| 虚拟网络 |
选择 vnet-spoke-2。 |
| 子网 |
选择“subnet-private (10.2.0.0/24)”。 |
| 公共 IP |
选择“无”。 |
| NIC 网络安全组 |
选择“高级”。 |
| 配置网络安全组 |
选择“新建”。
输入 nsg-spoke-2。 |
| 入站规则 |
选择“+ 添加入站规则”。
在“服务”中,选择“HTTP”。
选择“添加”。
选择“确定”。 |
将其余选项保留为默认值,然后选择“查看 + 创建”。
选择“创建”。
使用 New-AzNetworkSecurityGroup 创建网络安全组。
$nsgParams = @{
ResourceGroupName = "test-rg"
Name = "nsg-spoke-2"
Location = "chinaeast2"
}
New-AzNetworkSecurityGroup @nsgParams
使用 New-AzNetworkSecurityRuleConfig 为 HTTP 创建入站 NSG 规则。
$ruleParams = @{
Name = "allow-http"
Priority = 1000
Direction = "Inbound"
Access = "Allow"
Protocol = "Tcp"
SourceAddressPrefix = "*"
SourcePortRange = "*"
DestinationAddressPrefix = "*"
DestinationPortRange = "80"
}
$nsg = Get-AzNetworkSecurityGroup -ResourceGroupName "test-rg" -Name "nsg-spoke-2"
$nsg | Add-AzNetworkSecurityRuleConfig @ruleParams
Set-AzNetworkSecurityGroup -NetworkSecurityGroup $nsg
使用 New-AzNetworkInterface 创建网络接口。
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-2"
SubnetId = (Get-AzVirtualNetwork -ResourceGroupName "test-rg" -Name "vnet-spoke-2").Subnets[0].Id
NetworkSecurityGroupId = (Get-AzNetworkSecurityGroup -ResourceGroupName "test-rg" -Name "nsg-spoke-2").Id
Location = "chinaeast2"
}
New-AzNetworkInterface @nicParams
使用 Get-Credential 设置 VM 的用户名和密码,并将其存储在 $cred 变量中。
$cred = Get-Credential
使用 New-AzVMConfig 定义 VM。
$vmConfigParams = @{
VMName = "vm-spoke-2"
VMSize = "Standard_DS4_v2"
}
$vmConfig = New-AzVMConfig @vmConfigParams
使用 Set-AzVMOperatingSystem 和 Set-AzVMSourceImage 创建 VM 配置的其余部分。 以下示例创建 Windows Server 虚拟机:
$osParams = @{
VM = $vmConfig
ComputerName = "vm-spoke-2"
Credential = $cred
}
$vmConfig = Set-AzVMOperatingSystem @osParams -Windows
$imageParams = @{
VM = $vmConfig
PublisherName = "MicrosoftWindowsServer"
Offer = "WindowsServer"
Skus = "2022-Datacenter"
Version = "latest"
}
$vmConfig = Set-AzVMSourceImage @imageParams
使用 Add-AzVMNetworkInterface 将之前创建的 NIC 附加到 VM。
# Get the network interface object
$nicParams = @{
ResourceGroupName = "test-rg"
Name = "nic-2"
}
$nic = Get-AzNetworkInterface @nicParams
$vmConfigParams = @{
VM = $vmConfig
Id = $nic.Id
}
$vmConfig = Add-AzVMNetworkInterface @vmConfigParams
使用 New-AzVM 创建 VM。
$vmParams = @{
VM = $vmConfig
ResourceGroupName = "test-rg"
Location = "chinaeast2"
}
New-AzVM @vmParams
等待虚拟机完成部署,然后再继续执行后续步骤。
在分支 2 测试虚拟机上安装 IIS
IIS 安装在 Windows Server 2022 虚拟机上,用于测试通过 NAT 网关传送的出站 Internet 流量,以及中心辐射型网络中的分支间流量。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择 vm-spoke-2。
在“操作”中,选择“运行命令”。
选择 RunPowerShellScript。
在“运行命令脚本”中输入以下脚本:
# Install IIS server role
Install-WindowsFeature -name Web-Server -IncludeManagementTools
# Remove default htm file
Remove-Item C:\inetpub\wwwroot\iisstart.htm
# Add a new htm file that displays server name
Add-Content -Path "C:\inetpub\wwwroot\iisstart.htm" -Value $("Hello World from " + $env:computername)
选择“运行”。
请等待脚本完成,然后继续执行下一步。 脚本可能需要几分钟才能完成。
脚本完成后,“输出”* 将显示以下内容:
Success Restart Needed Exit Code Feature Result
------- -------------- --------- --------------
True No Success {Common HTTP Features, Default Document, D...
使用 Set-AzVMExtension 在虚拟机上安装 IIS。
$vmExtensionParams = @{
ResourceGroupName = "test-rg"
VMName = "vm-spoke-2"
Name = "CustomScriptExtension"
Publisher = "Microsoft.Compute"
Type = "CustomScriptExtension"
TypeHandlerVersion = "1.10"
Settings = @{
"commandToExecute" = "powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path 'C:\inetpub\wwwroot\default.htm' -Value vm-spoke-2"
}
}
Set-AzVMExtension @vmExtensionParams
测试 NAT 网关
若要验证出站 Internet 流量是否离开 NAT 网关,请连接到在前面的步骤中创建的 Windows Server 2022 虚拟机。
获取 NAT 网关公共 IP 地址
获取 NAT 网关公共 IP 地址,以验证本文稍后的步骤。
通过 https://portal.azure.cn 登录到 Azure 门户。
在门户顶部的搜索框中,输入“公共 IP”。 在搜索结果中,选择“公共 IP 地址”。
选择“public-ip-nat”。
记下“IP 地址”中的值。 本文中使用的示例为 203.0.113.25。
从分支 1 测试 NAT 网关
使用 Windows Server 2022 虚拟机上的 Microsoft Edge 连接到 https://whatsmyip.com 以验证 NAT 网关的功能。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择 vm-spoke-1。
在“概述”中,选择“连接”,然后选择“通过 Bastion 连接:。
输入创建虚拟机时输入的用户名和密码。
选择“连接” 。
在桌面完成加载后,打开 Microsoft Edge。
在地址栏中输入 https://whatsmyip.com。
验证显示的出站 IP 地址是否与之前获取的 NAT 网关 IP 相同。
保持打开堡垒主机与 vm-spoke-1 的连接。
从分支 2 测试 NAT 网关
使用 Windows Server 2022 虚拟机上的 Microsoft Edge 连接到 https://whatsmyip.com 以验证 NAT 网关的功能。
在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。
选择 vm-spoke-2。
在“概述”中,选择“连接”,然后选择“通过 Bastion 连接:。
输入创建虚拟机时输入的用户名和密码。
选择“连接” 。
在桌面完成加载后,打开 Microsoft Edge。
在地址栏中输入 https://whatsmyip.com。
验证显示的出站 IP 地址是否与之前获取的 NAT 网关 IP 相同。
保持打开堡垒主机与 vm-spoke-2 的连接。
测试分支之间的路由
从分支 1 到分支 2 以及从分支 2 到分支 1 的流量将通过中心虚拟网络中的模拟 NVA 进行路由。 使用以下示例验证中心辐射型网络的分支之间的路由。
测试从分支 1 到分支 2 的路由
使用 Microsoft Edge 连接到在前面步骤中安装在 vm-spoke-2 上的 Web 服务器。
返回到堡垒主机与 vm-spoke-1 的处于打开状态的连接。
如果 Microsoft Edge 未打开,请将其打开。
在地址栏中输入 10.2.0.4。
验证 vm-spoke-2 中是否显示了 IIS 页。
关闭堡垒主机与 vm-spoke-1 的连接。
测试从分支 2 到分支 1 的路由
使用 Microsoft Edge 连接到在前面步骤中安装在 vm-spoke-1 上的 Web 服务器。
返回到堡垒主机与 vm-spoke-2 的处于打开状态的连接。
如果 Microsoft Edge 未打开,请将其打开。
在地址栏中,输入 10.1.0.4。
验证 vm-spoke-1 中是否显示了 IIS 页。
关闭堡垒主机与 vm-spoke-1 的连接。
清理资源
使用创建的资源之后,可以删除资源组及其所有资源:
在 Azure 门户中,搜索并选择“资源组”。
在“资源组”页上,选择“test-rg”资源组。
在“test-rg”页上,选择“删除资源组”。
在“输入资源组名称以确认删除”中输入“test-rg”,然后选择“删除”。
使用 Remove-AzResourceGroup 删除资源组。
$rgParams = @{
Name = "test-rg"
Force = $true
}
Remove-AzResourceGroup @rgParams
后续步骤
继续学习下一篇文章,了解如何将 Azure 网关负载均衡器用于高可用性网络虚拟设备: