メインコンテンツへスキップ

cidrsubnets 関数

cidrsubnets は、特定のCIDRプレフィックス内の連続したIPアドレス範囲のシーケンスを計算します。

コードブロック
cidrsubnets(prefix, newbits...)

prefix は、RFC 4632セクション3.1で定義されているように、CIDR表記で指定する必要があります。

上記でnewbitsとして示されている残りの引数は、それぞれ返されるアドレス範囲ごとに追加されるネットワークプレフィックスビット数を指定します。したがって、戻り値は、各newbits引数ごとに1つの要素を持つリストになり、各要素はCIDR表記のアドレス範囲を含む文字列となります。

IPアドレスに関する概念の詳細については、関連関数cidrsubnetのドキュメントを参照してください。cidrsubnetはプレフィックス内の単一のサブネットアドレスを計算し、サブネット番号を指定できますが、cidrsubnetsは一度に多くのサブネットを、異なるサイズで計算し、サブネット番号を自動的に割り当てます。

ネットワークアドレス計画の一部としてアドレス空間を分割するためにこの関数を使用する場合、ネットワークアドレスが実際のインフラストラクチャに割り当てられた後は、既存の引数を変更しないでください。それ以外の場合は、後のアドレス割り当てが無効になります。ただし、十分なアドレス空間があれば、既存の呼び出しに新しい引数を安全に追加することはできます

この関数はIPv6とIPv4の両方のプレフィックスを受け入れ、結果は常に指定されたプレフィックスと同じアドレススキームを使用します。

コードブロック
> cidrsubnets("10.1.0.0/16", 4, 4, 8, 4)
[
"10.1.0.0/20",
"10.1.16.0/20",
"10.1.32.0/24",
"10.1.48.0/20",
]

> cidrsubnets("fd00:fd12:3456:7890::/56", 16, 16, 16, 32)
[
"fd00:fd12:3456:7800::/72",
"fd00:fd12:3456:7800:100::/72",
"fd00:fd12:3456:7800:200::/72",
"fd00:fd12:3456:7800:300::/88",
]

forを使用してネストされたcidrsubnets呼び出しを行うことで、ネットワークアドレスブロックのグループを簡潔に割り当てることができます。

コードブロック
> [for cidr_block in cidrsubnets("10.0.0.0/8", 8, 8, 8, 8) : cidrsubnets(cidr_block, 4, 4)]
[
[
"10.0.0.0/20",
"10.0.16.0/20",
],
[
"10.1.0.0/20",
"10.1.16.0/20",
],
[
"10.2.0.0/20",
"10.2.16.0/20",
],
[
"10.3.0.0/20",
"10.3.16.0/20",
],
]
  • cidrhostは、指定されたネットワークアドレスプレフィックス内の単一ホストのIPアドレスを計算します。
  • cidrnetmaskは、CIDR表記のIPv4ネットワークプレフィックスをネットマスク表記に変換します。
  • cidrsubnetは、単一のサブネットアドレスを計算し、ネットワーク番号を指定できます。