Profile picture

[Python] ipaddress 모듈로 IP 주소 필터링하기

JaehyoJJAng2024년 02월 15일

개요

로그 파일에서 네트워크와 관련된 데이터를 다룰 때 ipaddress 모듈을 사용하는 몇 가지 상황을 실습으로 이해해보자.


IP 주소 필터링 및 분석

로그 파일에서 특정 IP 주소만 추출하거나, 특정 서브넷에 속하는 IP 주소를 필터링해야 할 때 ipaddress 모듈을 사용할 수 있다.

import ipaddress


import ipaddress


log_data :list[str] = [
    "192.168.1.10 - GET /index.html",
    "10.0.0.5 - GET /about.html",
    "172.16.0.8 - POST /login"
]

network = ipaddress.ip_network("192.168.1.0/24")

for entry in log_data:
    ip_str = entry.split()[0]
    ip = ipaddress.ip_address(ip_str)
    if ip in network:
        print(f"{ip} is within the network {network}: {entry}")

이 스크립트는 로그 파일에서 특정 서브넷(192.168.1.0/24)에 속하는 IP 주소만 필터링하여 출력한다.


로그 데이터에서 IP 주소 변환

로그 파일에서 IP 주소를 정수형으로 변환하거나, 정수형으로 저장된 IP 주소를 사람이 읽을 수 있는 형식으로 변환하는 데 사용할 수 있다.

이는 로그 데이터를 처리할 때 특히 도움이 될 수 있다.

log_data = [
    "3232235778 - GET /index.html",  # 192.168.1.2 in integer form
    "167772160 - GET /about.html",  # 10.0.0.0 in integer form
]

for entry in log_data:
    int_ip = int(entry.split()[0])
    ip = ipaddress.ip_address(int_ip)
    print(f"Integer {int_ip} corresponds to IP address {ip}.")

Loading script...