ARM 範本的 CIDR 函式

本文說明用來在 Azure Resource Manager 範本 (ARM 範本) 中處理 CIDR 的函式。

提示

我們建議使用 Bicep,因為其提供的功能與 ARM 範本相同,而且語法更易於使用。 若要深入了解,請參閱cidr函式。

parseCidr

parseCidr(network)

剖析 CIDR 表示法中的 IP 位址範圍,以取得位址範圍的各種屬性。

在 Bicep 中,使用 parseCidr 函式。

參數

參數 必要 類型​ 描述
network Yes string CIDR 表示法中的字串,其中包含要轉換的 IP 位址範圍。

傳回值

包含位址範圍各種屬性的物件。

範例

下列範例會剖析 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 函式。

參數

參數 必要 類型​ 描述
network Yes string CIDR 表示法中的字串,其中包含要轉換的 IP 位址範圍。
newCIDR Yes int 表示要用於子網路的 CIDR 的整數。 此值應該等於或大於 network 參數中的 CIDR 值。
subnetIndex Yes int 要傳回之所需子網路 IP 位址範圍的索引。

傳回值

具有指定索引之子網路 IP 位址範圍的字串。

範例

下列範例會從指定的 /20 計算前五個 /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 計算前五個 /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)

計算主機的可用 IP 位址,並在 CIDR 表示法中指定的 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

在 Bicep 中,使用 cidrHost 函式。

參數

參數 必要 類型​ 描述
network Yes string 包含要轉換的 IP 網路(必須是正確的網路格式)的字串。
hostIndex Yes 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"
]

下一步