Azure 虚拟网络管理器提供集中式 IP 地址管理(IPAM),可帮助你避免在虚拟网络中重叠的地址空间。 使用 IPAM 池,可以定义大型地址范围,并自动将不重叠的子网分配给虚拟网络。
本文介绍如何使用 Bicep 模板:
- 创建具有 IPAM 功能的 Azure 虚拟网络管理器实例
- 使用静态 CIDR 分配来设置 IPAM 池
- 将现有虚拟网络与 IPAM 池相关联
- 创建从 IPAM 池自动接收 IP 地址的新虚拟网络
完成后,你将拥有一个工作 IPAM 配置,可用于管理跨多个虚拟网络的 IP 地址分配。
重要
目前,Azure Virtual Network Manager中的 IP 地址管理(IPAM)功能已在Azure Virtual Network Manager可用的所有区域中正式发布。
先决条件
- 拥有有效订阅的 Azure 帐户。 创建账户。
- 本地安装的 Azure CLI 或 Azure PowerShell。
查阅 Bicep 文件
以下 Bicep 模板创建具有 IPAM 池和静态 CIDR 分配的 Azure 虚拟网络管理器实例。 该模板定义以下 Azure 资源:
- Microsoft.Network/networkManagers:创建 Azure 虚拟网络管理器实例
- Microsoft.Network/networkManagers/ipamPools:在网络管理器下创建 IPAM 池
- Microsoft.Network/networkManagers/ipamPools/staticCidrs:在 IPAM 池中创建静态 CIDR 分配
该模板采用以下参数:
| 参数 | Purpose | 默认值 |
|---|---|---|
locationName |
用于网络管理器及其子资源的 Azure 区域。 | 目标资源组的位置 |
networkManagerName |
Azure Virtual Network Manager 实例的名称。 | vnm-learn-prod-${locationName}-001 |
ipamPoolName |
在网络管理器下创建的IPAM池名称。 | ipam-pool-learn-prod-001 |
ipamPoolAddressPrefix |
IPAM池分配的地址空间。 | 10.0.0.0/16 |
staticCidrName |
池中静态CIDR预留的名称。 | static-cidr-reserved-001 |
staticCidrAddressPrefix |
地址范围由静态CIDR保留。 它必须属于 ipamPoolAddressPrefix。 |
10.0.1.0/24 |
@description('Location for resources.')
param locationName string = resourceGroup().location
@description('Name of the Virtual Network Manager')
param networkManagerName string = 'vnm-learn-prod-${locationName}-001'
@description('Name of the IPAM pool')
param ipamPoolName string = 'ipam-pool-learn-prod-001'
@description('Address prefix of the IPAM pool')
param ipamPoolAddressPrefix string = '10.0.0.0/16'
@description('Name of the static CIDR')
param staticCidrName string = 'static-cidr-reserved-001'
@description('Address prefix of the static CIDR')
param staticCidrAddressPrefix string = '10.0.1.0/24'
// Virtual Network Manager
resource networkManager 'Microsoft.Network/networkManagers@2024-05-01' = {
name: networkManagerName
location: locationName
properties: {
networkManagerScopes: {
managementGroups: []
subscriptions: [
subscription().id
]
}
networkManagerScopeAccesses: [
'Connectivity'
]
}
}
// IPAM Pool
resource ipamPool 'Microsoft.Network/networkManagers/ipamPools@2024-05-01' = {
parent: networkManager
name: ipamPoolName
location: locationName
properties: {
addressPrefixes: [
ipamPoolAddressPrefix
]
}
}
// Static CIDR
resource staticCidr 'Microsoft.Network/networkManagers/ipamPools/staticCidrs@2024-05-01' = {
parent: ipamPool
name: staticCidrName
properties: {
addressPrefixes: [
staticCidrAddressPrefix
]
}
}
部署 Bicep 模板
将 Bicep 模板保存到本地计算机作为 main.bicep,然后使用 Azure CLI 或 Azure PowerShell 部署它。
az group create \
--name rg-network-manager \
--location chinanorth3
az deployment group create \
--resource-group rg-network-manager \
--template-file main.bicep
部署需要数分钟才能完成。 部署完成后,会看到一条消息,指示部署成功。
将现有虚拟网络关联到 IPAM 池
以下 Bicep 模板将现有虚拟网络与 IPAM 池相关联。 如果您有要管理的现有虚拟网络,并希望通过 Azure 虚拟网络管理器的 IPAM 功能进行管理,则此方案非常有用。
该模板定义此 Azure 资源:
- Microsoft.Network/virtualNetworks:修改现有虚拟网络以将其与 IPAM 池相关联
@description('Name of an existing virtual network')
param existingVnetName string = 'vnet-existing-001'
@description('Location of an existing virtual network')
param existingVnetLocation string = 'chinanorth3'
@description('Resource ID of an existing IPAM pool')
param existingIpamPoolId string = '/subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/rg-network-manager/providers/Microsoft.Network/networkManagers/vnm-learn-prod-chinanorth3-001/ipamPools/ipam-pool-learn-prod-001'
// Virtual Network
resource existingVnet 'Microsoft.Network/virtualNetworks@2024-05-01' = {
name: existingVnetName
location: existingVnetLocation
properties: {
addressSpace: {
ipamPoolPrefixAllocations: [
{
pool: {
id: existingIpamPoolId
}
}
]
}
}
}
部署关联模板
将 Bicep 模板作为 associate-existing-vnet.bicep 保存到本地计算机。
使用文本或代码编辑器更新文件中的以下参数:
- 更改为
existingVnetName现有虚拟网络的名称 - 将
existingVnetLocation更改为现有虚拟网络的位置 - 更改为
existingIpamPoolId现有 IPAM 池的资源 ID
- 更改为
保存 associate-existing-vnet.bicep 文件。
使用 Azure CLI 或 Azure PowerShell 部署 Bicep 模板。 替换
rg-existing-vnet为现有虚拟网络的资源组名称:
az deployment group create \
--resource-group rg-existing-vnet \
--template-file associate-existing-vnet.bicep
部署完成后,会看到一条消息,指示部署成功。
使用 IPAM 池分配创建新的虚拟网络
以下 Bicep 模板创建一个新的虚拟网络,该虚拟网络会自动从 IPAM 池接收 IP 地址分配。 此方法通过确保不重叠的地址空间来简化虚拟网络创建。
该模板定义此 Azure 资源:
- Microsoft.Network/virtualNetworks:创建 IPAM 管理的虚拟网络
@description('Name of new virtual network')
param newVnetName string = 'vnet-learn-prod-001'
@description('Name of default subnet')
param subnetName string = 'snet-default-001'
@description('Location for virtual network')
param locationName string = resourceGroup().location
@description('Resource ID of an existing IPAM pool')
param existingIpamPoolId string = '/subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourceGroups/rg-network-manager/providers/Microsoft.Network/networkManagers/vnm-learn-prod-chinanorth3-001/ipamPools/ipam-pool-learn-prod-001'
@description('Number of IP addresses for virtual network')
param vnetNumberOfIpAddresses string = '256'
@description('Number of IP addresses for subnet')
param subnetNumberOfIpAddresses string = '128'
// Virtual Network
resource newVnet 'Microsoft.Network/virtualNetworks@2024-05-01' = {
name: newVnetName
location: locationName
properties: {
addressSpace: {
ipamPoolPrefixAllocations: [
{
numberOfIpAddresses: vnetNumberOfIpAddresses
pool: {
id: existingIpamPoolId
}
}
]
}
subnets: [
{
name: subnetName
properties: {
ipamPoolPrefixAllocations: [
{
numberOfIpAddresses: subnetNumberOfIpAddresses
pool: {
id: existingIpamPoolId
}
}
]
}
}
]
}
}
部署新的虚拟网络模板
将 Bicep 模板另存为 create-ipam-managed-vnet.bicep,将 Bicep 模板保存到本地计算机。
使用文本或代码编辑器更新文件中的以下参数:
- 更改为
existingIpamPoolId现有 IPAM 池的资源 ID
- 更改为
保存 create-ipam-managed-vnet.bicep 文件。
使用 Azure CLI 或 Azure PowerShell 部署 Bicep 模板:
az deployment group create \
--resource-group rg-network-manager \
--template-file create-ipam-managed-vnet.bicep
部署完成后,会看到一条消息,指示部署成功。
验证部署
部署模板后,验证 IPAM 池和虚拟网络配置是否正常工作:
在 Azure 门户中,导航到虚拟网络管理器实例。
在 IP 地址管理下,选择 IP 地址池。
选择 IPAM 池以查看其分配和使用情况统计信息。
在 “设置”下,选择 “分配 ”以查看与池关联的所有资源,包括静态 CIDR 块和虚拟网络。
清理资源
如果不再需要在本快速入门中创建的资源,请删除资源组及其包含的所有资源:
az group delete --name rg-network-manager --yes --no-wait
后续步骤
在本快速入门中,你已使用 IPAM 池部署了 Azure 虚拟网络管理器,并了解了如何将虚拟网络与 IP 地址池相关联。 若要详细了解 Azure 虚拟网络管理器中的 IP 地址管理,请执行以下作: