LabHub
배우기 러닝패스 코스

주소·서브넷·게이트웨이 · 클래스와 CIDR · 실습

주소를 계산하는 도구를 만든다

LabHub 에서 이어서 보기

목표

주소와 마스크를 받아 네트워크 주소·브로드캐스트·쓸 수 있는 범위·호스트 수를
계산하는 도구를 파이썬으로 만들고, 그 도구로 같은 서브넷 판정과 대역 분류,
겹침 검사를 해 봅니다. 마지막에는 요구 호스트 수에 맞는 프리픽스를 골라
설계 메모를 남깁니다.

왜 중요한가

방화벽 규칙도 네트워크 정책도 VPC 설계도 전부 이 계산 위에 서 있습니다.
그런데 손으로 반복하면 언젠가 반드시 틀리고, 틀린 것은 대개 장애가 난 뒤에야
드러납니다. 그래서 한 번 만들어 두고 계속 쓰는 편이 낫습니다.

특히 /31/32 가 중요합니다. 호스트 수를 "전체에서 2를 뺀다" 로만 짜 두면
이 둘에서 0과 -1 이 나오는데, 도구는 아무 오류도 내지 않고 그 값을 그대로
돌려줍니다. 검사기가 잡아 주지 않는 종류의 거짓말이라, 예외를 아는 사람만
피할 수 있습니다.

단계

1. 세 대역을 손으로 계산해 /root/cidr/01-hand.txt 에 한 줄씩 적으세요. 대역은 192.168.40.130/26, 10.10.6.75/20, 172.20.200.9/23 이고, 각 줄에 CIDR·네트워크 주소·브로드캐스트·첫 호스트·마지막 호스트·호스트 개수가 모두 들어가야 합니다.
2. /root/cidr/subnet.py 를 만드세요. python3 subnet.py 203.0.113.77/28python3 subnet.py 203.0.113.77 255.255.255.240같은 답을 내야 하고, 출력은 prefix= network= broadcast= first= last= hosts= 여섯 줄입니다. 두 번 돌린 결과를 /root/cidr/02-tool.txt 에 저장하세요.
3. 도구가 /31/32 를 옳게 다루도록 고치세요. 이 둘은 broadcast=none 이고, /31 은 두 주소가 모두 호스트(hosts=2), /32 는 자기 자신 하나(hosts=1)입니다. 10.0.0.5/3110.0.0.5/32 를 돌린 결과와 왜 그런지를 /root/cidr/03-edge.txt 에 적으세요.
4. /root/cidr/same.py 를 만드세요. python3 same.py <주소/프리픽스> <상대주소>same 또는 different 한 낱말만 출력합니다. 다섯 쌍을 돌려 /root/cidr/04-same.txt주소/프리픽스 상대주소 판정 으로 저장하세요.
5. /root/cidr/classify.py 를 만드세요. python3 classify.py <주소>private link-local loopback cgnat multicast public 중 하나를 출력합니다. 아홉 주소를 돌려 /root/cidr/05-class.txt주소 분류 로 저장하세요.
6. 10.60.8.0/22/24 넷으로 쪼개 /root/cidr/06-split.txt 에 한 줄에 하나씩 네트워크/24 first= last= hosts= 로 적으세요.
7. 기존 대역 넷과 겹치는지 판정해 /root/cidr/07-overlap.txt 에 적으세요. 겹치면 후보 overlap=겹치는대역, 안 겹치면 후보 free 입니다.
8. /root/cidr/08-report.md 에 설계 메모를 쓰세요. 요구 호스트 수 셋(120대·600대·30대)에 맞는 최소 프리픽스, 대역을 연속으로 배치하면 무엇이 이득인지, /31/32 를 언제 쓰는지가 들어가야 합니다.

참고

단계 8개

  1. 세 대역을 손으로 계산한다
  2. 계산 도구를 만든다
  3. /31 과 /32 의 예외를 다룬다
  4. 같은 서브넷인지 판정한다
  5. 대역의 성격을 분류한다
  6. 대역을 잘게 나눈다
  7. 대역이 겹치는지 본다
  8. 설계 메모를 남긴다