본문 바로가기
네트워크

[네트워크] Python으로 서브넷팅 자동화 계산기 만들기

by 시스코킹 2025. 5. 15.
반응형

서브넷팅(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)


 

 

반응형

댓글