Bicep 的 CIDR 函数

无类别域际路由 (CIDR) 是一种分配 IP 地址和路由 Internet 协议 (IP) 包的方法。 本文介绍用于处理 CIDR 的 Bicep 函数。

parseCidr

parseCidr(network)

分析以 CIDR 表示法表示的 IP 地址范围,以获取地址范围的各种属性。

命名空间:sys

参数

参数 必选 Type 说明
network 字符串 以 CIDR 表示法表示的字符串,包含要转换的 IP 地址范围。

返回值

一个包含地址范围的各种属性的对象。

示例

以下示例分析 IPv4 CIDR 字符串:

output v4info object = parseCidr('10.144.0.0/20')

前面的示例返回以下对象:

{
  "network":"10.144.0.0",
  "netmask":"255.255.240.0",
  "broadcast":"10.144.15.255",
  "firstUsable":"10.144.0.1",
  "lastUsable":"10.144.15.254",
  "cidr":20
}

以下示例分析 IPv6 CIDR 字符串:

output v6info object = parseCidr('fdad:3236:5555::/48')

前面的示例返回以下对象:

{
  "network":"fdad:3236:5555::",
  "netmask":"ffff:ffff:ffff::",
  "firstUsable":"fdad:3236:5555::",
  "lastUsable":"fdad:3236:5555:ffff:ffff:ffff:ffff:ffff",
  "cidr":48
}

cidrSubnet

cidrSubnet(network, newCIDR, subnetIndex)

将以 CIDR 表示法表示的指定 IP 地址范围拆分为具有新 CIDR 值的子网,并返回具有指定索引的子网的 IP 地址范围。

命名空间:sys

参数

参数 必选 Type 说明
network 字符串 包含要转换的 IP 地址范围的字符串,其中 IP 地址范围以 CIDR 表示法表示。
newCIDR int 一个整数,表示要用于子网的 CIDR。 此值应等于或大于 network 参数中的 CIDR 值。
subnetIndex int 要返回的所需子网 IP 地址范围的索引。

返回值

具有指定索引的子网 IP 地址范围的字符串。

示例

以下示例根据指定的 /20 计算前五个 /24 子网范围:

output v4subnets array = [for i in range(0, 5): cidrSubnet('10.144.0.0/20', 24, i)]

上面的示例返回下列数组:

[
  "10.144.0.0/24",
  "10.144.1.0/24",
  "10.144.2.0/24",
  "10.144.3.0/24",
  "10.144.4.0/24"
]

以下示例根据指定的 /48 计算前五个 /52 子网范围:

output v6subnets array = [for i in range(0, 5): cidrSubnet('fdad:3236:5555::/48', 52, i)]

上面的示例返回下列数组:

[
  "fdad:3236:5555::/52"
  "fdad:3236:5555:1000::/52"
  "fdad:3236:5555:2000::/52"
  "fdad:3236:5555:3000::/52"
  "fdad:3236:5555:4000::/52"
]

cidrHost

cidrHost(network, hostIndex)

计算以 CIDR 表示法表示的指定 IP 地址范围内具有指定索引的主机的可用 IP 地址。 例如,对于 192.168.1.0/24,有预留的 IP 地址:192.168.1.0 用作网络标识符地址,而 192.168.1.255 用作广播地址。 只能将范围从 192.168.1.1192.168.1.254 的 IP 地址分配给主机,我们称之为“可用”IP 地址。 因此,当函数传递 0 的 hostIndex 时,将返回 192.168.1.1

在 Azure 中,每个子网都会额外保留 IP 地址,其中包括前四个和最后一个 IP 地址,总共保留五个 IP 地址。 例如,对于 IP 地址范围 192.168.1.0/24,将保留以下地址:

  • 192.168.1.0:网络地址。
  • 192.168.1.1:由 Azure 为默认网关保留
  • 192.168.1.2192.168.1.3:由 Azure 保留,用于将 Azure DNS IP 映射到 VNet 空间。
  • 192.168.1.255:网络广播地址。

命名空间:sys

参数

参数 必选 Type 说明
network 字符串 包含要转换的 IP 网络的字符串。 提供的字符串必须采用正确的网络格式。
hostIndex int 索引决定要返回的主机 IP 地址。 如果使用值“0”,它将提供非 Azure 网络的第一个可用 IP 地址。 但是,如果使用“3”,它将提供 Azure 子网的第一个可用 IP 地址。

返回值

IP 地址的字符串。

示例

以下示例根据非 Azure 网络上指定的 /24 计算前五个可用的主机 IP 地址:

output v4hosts array = [for i in range(0, 5): cidrHost('10.144.3.0/24', i)]

上面的示例返回下列数组:

[
  "10.144.3.1"
  "10.144.3.2"
  "10.144.3.3"
  "10.144.3.4"
  "10.144.3.5"
]

以下示例根据非 Azure 网络上指定的 /52 计算前五个可用的主机 IP 地址:

output v6hosts array = [for i in range(0, 5): cidrHost('fdad:3236:5555:3000::/52', i)]

上面的示例返回下列数组:

[
  "fdad:3236:5555:3000::1"
  "fdad:3236:5555:3000::2"
  "fdad:3236:5555:3000::3"
  "fdad:3236:5555:3000::4"
  "fdad:3236:5555:3000::5"
]

后续步骤