ARM 模板的 CIDR 函数

本文介绍在 Azure 资源管理器模板(ARM 模板)中使用 CIDR 的功能。

提示

我们建议使用 Bicep,因为它提供与 ARM 模板相同的功能,并且该语法更易于使用。 若要了解详细信息,请参阅 cidr 函数。

parseCidr

parseCidr(network)

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

在 Bicep 中,使用 parseCidr 函数。

参数

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

返回值

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

例子

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v4info": {
      "type": "object",
      "value": "[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 字符串:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v6info": {
      "type": "object",
      "value": "[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 地址范围。

在 Bicep 中,使用 cidrSubnet 函数。

参数

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

返回值

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

例子

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

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v4subnets": {
      "type": "array",
      "copy": {
        "count": "[length(range(0, 5))]",
        "input": "[cidrSubnet('10.144.0.0/20', 24, range(0, 5)[copyIndex()])]"
      }
    }
  }
}

前面的示例返回以下数组:

[
  "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 子网范围:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v6subnets": {
      "type": "array",
      "copy": {
        "count": "[length(range(0, 5))]",
        "input": "[cidrSubnet('fdad:3236:5555::/48', 52, range(0, 5)[copyIndex()])]"
      }
    }
  }
}

前面的示例返回以下数组:

[
  "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

在 Bicep 中,使用 cidrHost 函数。

参数

参数 必选 类型 DESCRIPTION
网络 是的 字符串 包含要转换的 IP 网络的字符串(必须是正确的网络格式)。
hostIndex 是的 整数 (int) 要返回的主机 IP 地址的索引。

返回值

IP 地址的字符串。

例子

以下示例从指定的 /24 计算前五个可用主机 IP 地址:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v4hosts": {
      "type": "array",
      "copy": {
        "count": "[length(range(0, 5))]",
        "input": "[cidrHost('10.144.3.0/24', range(0, 5)[copyIndex()])]"
      }
    }
  }
}

前面的示例返回以下数组:

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

以下示例从指定的 /52 计算前五个可用主机 IP 地址:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [],
  "outputs": {
    "v6hosts": {
      "type": "array",
      "copy": {
        "count": "[length(range(0, 5))]",
        "input": "[cidrHost('fdad:3236:5555:3000::/52', range(0, 5)[copyIndex()])]"
      }
    }
  }
}

前面的示例返回以下数组:

[
  "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"
]

后续步骤