Split the address space by hand
한국어 원문으로 표시합니다.
목표
대역을 나누는 일은 되돌리기가 가장 어려운 결정 중 하나입니다. VPC 의 대역은 만든 뒤에 줄일 수 없고, 서브넷은 안에 자원이 있으면 지울 수 없습니다. 처음 30분에 정한 것이 몇 년 갑니다.
여기서는 계산기를 쓰지 않고 경계와 길이로 답을 냅니다.
재료
/opt/lab/netplan/allocations.txt 사내 대역 배정표
/opt/lab/netplan/routes.txt 어느 라우터의 표
먼저 작업 디렉터리로 가져옵니다.
mkdir -p /root/netplan && cp /opt/lab/netplan/* /root/netplan/ && cd /root/netplan
남길 것
01-here.txt 내 주소·프리픽스·기본 경로
02-split.txt /16 을 나눈 계획
03-overlap.txt 겹치는 짝
04-longest.txt 세 목적지가 가는 길
05-usable.txt 크기별로 실제 쓸 수 있는 수
나는 지금 어디에 있나
이 파드의 IPv4 주소와 프리픽스, 그리고 기본 경로를 01-here.txt 에 남기고 그 프리픽스가 무슨 뜻인지 한 줄 적으세요.
ip -4 -o addr show 와 ip route.
프리픽스가 /32 라면 같은 대역에 이웃이 하나도 없다는 뜻입니다. 그런데도 밖으로 나갈 수 있는 것은 scope link 경로가 따로 있기 때문입니다.
경계에 맞게 나눈다
10.20.0.0/16 을 네 개의 /18 로 나누고, 앞의 셋을 AZ 세 곳에 배정하세요. 각 AZ 의 첫 /24 를 퍼블릭 서브넷으로 잡습니다. 넷째 /18 은 남기고, 왜 남기는지 적으세요. 결과는 02-split.txt 에.
python3 -c "import ipaddress as ip; print([str(n) for n in ip.ip_network('10.20.0.0/16').subnets(new_prefix=18)])"
각 /18 의 첫 /24 는 그 /18 의 시작 주소에 /24 를 붙인 것입니다.
넷째를 남기는 이유를 적으세요. VPC 대역은 나중에 늘리기가 번거롭고, AZ 가 하나 늘거나 용도가 하나 늘 때 붙일 자리가 없으면 다른 대역을 끌어와야 합니다.
겹치는 짝을 찾는다
allocations.txt 에서 서로 겹치는 대역 짝을 전부 찾아 03-overlap.txt 에 적고, 겹치면 무엇이 막히는지 한 줄 덧붙이세요.
ipaddress.ip_network(a).overlaps(ip_network(b)) 로 모든 짝을 봅니다.
겹치는 짝은 둘입니다. 겹치지 않는 것을 넣으면 안 됩니다 — 안 겹치는데 겹친다고 보고하면 멀쩡한 대역을 다시 잡게 됩니다.
순서가 아니라 길이가 정한다
routes.txt 를 보고 10.20.4.200 · 10.20.9.5 · 172.20.1.1 이 각각 어느 경로로 나가는지 04-longest.txt 에 적으세요. 다음 홉 주소까지 적습니다.
커널은 표의 순서를 보지 않습니다. 맞는 경로가 여럿이면 프리픽스가 가장 긴 것을 고릅니다.
10.20.4.200 은 /24 와 /25 에 모두 맞습니다. 10.20.9.5 는 scope link 경로에 맞는데, 그것은 게이트웨이를 거치지 않는다는 뜻입니다.
실제로 쓸 수 있는 수
/24 · /25 · /26 · /28 각각에 대해 전체 주소 수와 클라우드가 다섯을 예약한 뒤 실제로 쓸 수 있는 수를 05-usable.txt 에 표로 적고, 그 다섯이 어디로 가는지 한 줄 덧붙이세요.
전체는 2^(32-프리픽스) 입니다. 대부분의 클라우드가 서브넷마다 다섯 개를 가져갑니다 — 네트워크 주소, 게이트웨이, DNS, 예비, 브로드캐스트.
작은 서브넷일수록 이 손실의 비율이 큽니다. /28 은 16개 중 다섯이 사라집니다.
쓸 수 있는 자리는 어디까지인가
사설로 쓸 수 있는 대역 전부를 06-private.txt 에 적고, allocations.txt 의 각 대역이 어느 사설 대역에 드는지 표시하세요. 그리고 어느 자리를 피해야 하는지 한 줄 덧붙이세요.
RFC 1918 이 셋이고, 여기에 RFC 6598 이 정한 대역이 하나 더 있습니다. 사설은 아니지만 인터넷으로 라우팅되지 않아 사내에서 쓸 수 있습니다.
피할 자리도 함께 적으세요. 10.0.0.0/16 과 192.168.0.0/24 는 누구나 먼저 고르는 대역이라, 언젠가 이어야 할 상대와 겹칠 확률이 가장 높습니다.
표가 아니라 규칙을 남긴다
다음 사람이 문서를 안 보고도 스스로 대역을 고를 수 있는 규칙을 07-decide.md 에 적으세요. 리전·AZ·용도 세 단위 각각에 어떤 크기를 쓸지와, 왜 넉넉하게 잡는지를 함께 씁니다.
"어느 팀이 어느 대역을 쓴다" 는 표는 곧 낡습니다. 대신 "리전마다 /16, AZ 마다 /20, 용도마다 /24" 처럼 규칙을 적어 두면 표를 안 봐도 충돌하지 않습니다.
왜 크게 잡는지도 적으세요. IP 는 공짜이고 부족은 비쌉니다 — 파드마다 IP 를 쓰는 컨테이너 네트워크를 붙이는 순간 /24 는 바닥납니다.