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.1
到 192.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.2
、192.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"
]
后续步骤
- 有关 Bicep 文件中各部分的说明,请参阅了解 Bicep 文件的结构和语法。