Bicep 的 CIDR 函数

无分类 Inter-Domain 路由(CIDR)是分配 IP 地址和路由 Internet 协议 (IP) 数据包的方法。 本文介绍用于处理 CIDR 的 Bicep 函数。

parseCidr

parseCidr(network)

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

命名空间: sys

参数

参数 必选 类型 DESCRIPTION
网络 是的 字符串 包含要转换的 IP 地址范围的 CIDR 表示法中的字符串。

返回值

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

例子

以下示例分析 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

参数

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

返回值

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

例子

以下示例计算指定的 /20 的前 5 个 /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 计算前 5 个 /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 充当广播地址。 只能将范围从 IP 192.168.1.1192.168.1.254 地址分配给主机,我们称之为“可用”IP 地址。 因此,在传递函数时返回 hostIndex of0192.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

参数

参数 必选 类型 DESCRIPTION
网络 是的 字符串 包含要转换的 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"
]

后续步骤