分享方式:


Bicep 的 CIDR 函式

無類別網域間路由選擇 (CIDR) 是配置 IP 位址和路由網際網路通訊協定 (IP) 封包的方法。 本文描述處理 CIDR 的 Bicep 函式。

parseCidr

parseCidr(network)

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

命名空間:sys (部分機器翻譯)。

參數

參數 必要 類型​ 描述
network Yes string 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 (部分機器翻譯)。

參數

參數 必要 類型​ 描述
network Yes string CIDR 表示法的字串,其中包含要轉換的 IP 位址範圍。
newCIDR Yes int 代表要用於子網路之 CIDR 的整數。 此值應該等於或大於 network 參數中的 CIDR 值。
subnetIndex Yes 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)

計算主機的可用 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

在 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 (部分機器翻譯)。

參數

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

下一步