cidrsubnets 함수

cidrsubnets 함수

cidrsubnets는 특정 CIDR 프리픽스 안에서 연속된 IP 주소 범위의 시퀀스를 계산해요.

cidrsubnets(prefix, newbits...)

prefix는 RFC 4632 섹션 3.1에 정의된 대로 CIDR 표기법으로 주어져야 해요.

위에서 newbits로 표시된 나머지 인자는 각각 반환되는 하나의 주소 범위에 대한 추가 네트워크 프리픽스 비트 수를 지정해요. 따라서 반환 값은 newbits 인자마다 하나씩의 요소를 가진 목록이며, 각각은 CIDR 표기법의 주소 범위를 담은 문자열이에요.

IP 주소 지정 개념에 대한 자세한 내용은 관련 함수 cidrsubnet의 문서를 참고하세요. cidrsubnet은 프리픽스 안에서 단일 서브넷 주소를 계산하면서 그 서브넷 번호를 지정할 수 있게 해주고, cidrsubnets는 잠재적으로 서로 다른 크기의 여러 주소를 한 번에 계산하며 서브넷 번호를 자동으로 할당해요.

네트워크 주소 계획의 일부로 이 함수로 주소 공간을 분할할 때는, 실제 인프라에 네트워크 주소가 할당된 후에는 기존 인자 중 어떤 것도 변경하면 안 돼요. 그렇지 않으면 이후의 주소 할당이 무효화돼요. 하지만 충분한 주소 공간이 있다면 기존 호출에 새 인자를 추가하는 것은 안전해요.

이 함수는 IPv6와 IPv4 프리픽스를 모두 받으며, 결과는 항상 주어진 프리픽스와 같은 주소 지정 체계를 사용해요.

출처: Packer 공식 문서

본문

예시 (Examples)

> 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은 네트워크 번호를 지정할 수 있게 하면서 단일 서브넷 주소를 계산해요.