Bicep の CIDR 関数

クラスレス ドメイン間ルーティング (CIDR) は、IP アドレスの割り当てと、インターネット プロトコル (IP) パケットのルーティングの方法です。 この記事では、CIDR を操作するための Bicep 関数について説明します。

parseCidr

parseCidr(network)

CIDR 表記の IP アドレス範囲を解析して、アドレス範囲のさまざまなプロパティを取得します。

名前空間: sys

パラメーター

パラメーター 必須 種類 説明
ネットワーク はい string 変換する 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

パラメーター

パラメーター 必須 種類 説明
ネットワーク はい string 変換する 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 はブロードキャスト アドレスとして機能します。 ホストに割り当てることができるのは 192.168.1.1 から 192.168.1.254 までの範囲の IP アドレスのみであり、これを "使用可能な" IP アドレスと呼びます。 そのため、関数に hostIndex として 0 を渡すと、192.168.1.1 が返されます。

Azure 内では、各サブネットで追加の IP アドレスが予約されています。これには、最初の 4 つの IP アドレスと最後の IP アドレスという合計で 5 つの予約済み IP アドレスが含まれます。 たとえば、IP アドレス範囲 192.168.1.0/24 の場合、次のアドレスが予約されています。

  • 192.168.1.0: ネットワーク アドレス
  • 192.168.1.1: 既定のゲートウェイ用に Azure によって予約されています
  • 192.168.1.2192.168.1.3: Azure DNS IP を VNet 空間にマッピングするために Azure によって予約されています
  • 192.168.1.255: ネットワーク ブロードキャスト アドレス

名前空間: sys

パラメーター

パラメーター 必須 種類 説明
ネットワーク はい string 変換する IP ネットワークを含む文字列。 指定された文字列は、正しいネットワーク形式である必要があります。
hostIndex はい INT インデックスによって、返されるホスト IP アドレスが決まりきます。 値 0 を使用した場合、Azure 以外のネットワークで使用できる最初の IP アドレスが提供されます。 ただし、3 を使用した場合、Azure サブネットで使用できる最初の IP アドレスが提供されます。

戻り値

IP アドレスの文字列。

次の例では、Azure 以外のネットワーク上で指定した /24 から最初の 5 つの使用可能なホスト 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 から最初の 5 つの使用可能なホスト 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"
]

次のステップ