서브넷팅(Subnetting) 은 하나의 IP 네트워크를 여러 개의 작은 네트워크(서브넷) 로 나누는 기술입니다.
이 작업을 통해 IP 자원을 더 효율적으로 사용할 수 있고, 보안, 속도, 네트워크 분리 등의 측면에서도 장점을 가질 수 있습니다.
예를 들어,
회사에 192.168.1.0/24 (총 256개의 IP)가 할당되었을 때,
각 부서마다 30개씩 필요한 경우 192.168.1.0/27, 192.168.1.32/27, ... 등으로 나눠서 사용할 수 있습니다.
그런데 서브넷을 나눴을 때 실제로 할당 가능한 IP는 몇 개일까?
- 어떤 IP가 네트워크 주소이고
- 어떤 IP가 브로드캐스트인지
- 내가 실제로 사용할 수 있는 IP는 몇 개인지
헷갈릴 땐, 아래 코드를 직접 출력해보면 이해가 확 됩니다.
그래서 만든 코드
아래 파이썬 코드는 사용자가 입력한 서브넷(CIDR 형식)에서
네트워크 주소 / 브로드캐스트 주소 / 실제 사용 가능한 IP 목록까지 자동으로 보여줍니다.
- 실행 예시
기능설명:
이 스크립트는 사용자가 192.168.1.0/24 같은 CIDR 형식의 네트워크 주소를 입력하면, 아래 내용을 출력 해줍니다.
- 네트워크 주소
- 브로드캐스트 주소
- 사용 가능한 호스트 수
- 할당 가능한 IP 목록
- 실행 코드
# ipaddress 모듈은 파이썬 내장 모듈로, IP 주소 및 네트워크 관련 처리를 도와준다
import ipaddress
# 사용자에게 네트워크 대역을 입력받기 위한 루프를 시작한다
while True:
try:
# 예: 192.168.1.0/24 형식의 네트워크 주소를 입력 받는다
user_input = input("Enter a network (e.g., 192.168.1.0/24): ")
# 입력값을 IPv4 네트워크 객체로 변환 (strict=False는 호스트 주소 입력도 허용)
network = ipaddress.IPv4Network(user_input, strict=False)
# 입력이 올바르면 루프를 종료
break
except ValueError:
# 잘못된 형식이면 오류 메시지를 출력하고 다시 입력받는다
print("Invalid network format. Please try again.")
# 입력된 네트워크의 네트워크 주소 출력
print(f"\nNetwork: {network.network_address}")
# 브로드캐스트 주소 출력
print(f"Broadcast: {network.broadcast_address}")
# 전체 호스트 수에서 네트워크 주소와 브로드캐스트 주소 2개를 제외한 수 출력
print(f"Number of hosts: {network.num_addresses - 2}") # 사용 가능한 실제 호스트 수
# 사용 가능한 모든 호스트 IP를 출력
print("\nHost IPs:")
for ip in network.hosts():
print(ip)
'네트워크' 카테고리의 다른 글
[네트워크] Cisco EEM을 활용한 LLCF 설정방법(예제, 설정 컨피그 포함) (0) | 2025.04.03 |
---|---|
[네트워크] 포티게이트(Fortigate) 방화벽 설정 방법 기본 명령어 (0) | 2025.02.12 |
[네트워크] 시스코(Cisco) VS HP스위치 컨피그 비교, HP스위치 점검 명령어 정리 (0) | 2023.06.08 |
[네트워크] 시스코(Cisco) 계정관리 기본 패스워드 보안 취약점 설정 컨피그 (0) | 2023.06.08 |
[네트워크] 알테온(Alteon) L4 컨피그 기본 설정 정리, 접속 방법, 재부팅, 초기화, 패스워드 변경 방법 (0) | 2023.04.06 |
댓글