본문 바로가기
Python/ETC

[Python] 파이썬 외부 IP와 내부 IP 확인하기

by 에파 2024. 8. 6.
728x90

네트워크 프로그래밍이나 시스템 관리 작업을 하다 보면 컴퓨터의 IP 주소를 확인해야 할 때가 있습니다. 이번 글에서는 파이썬을 이용하여 외부 IP와 내부 IP를 확인하는 방법에 대해 알아보겠습니다.

 

1. 내부 IP 주소 확인

일반적인 내부 IP 확인 코드

import socket

def get_internal_ip():
    hostname = socket.gethostname()
    internal_ip = socket.gethostbyname(hostname)
    return internal_ip

if __name__ == "__main__":
    internal_ip = get_internal_ip()
    print(f"내부 IP 주소: {internal_ip}")

 

위 코드에서는 'socket.gethostname()'을 사용하여 컴퓨터의 호스트 이름을 얻고, 'socket.gethostbyname()'을 사용하여 내부 IP 주소를 확인합니다. 이 방법은 로컬 네트워크에 연결되어 있는 경우에 유용합니다.

 

가상 환경 등을 사용하여 여러 개의 환경이 있을 경우 다른 환경의 IP가 출력되는 문제가 있을 수 있습니다. 그 경우 아래의 코드를 사용할 수 있습니다.

더 정확한 내부 IP 확인 코드

import socket

def get_internal_ip():
    try:
        # 소켓을 생성하고 외부 사이트(예: Google DNS 서버)에 연결 시도
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.connect(("8.8.8.8", 80))  # Google DNS 서버 사용
        internal_ip = s.getsockname()[0]  # 소켓에 바인딩된 IP 주소 가져오기
        s.close()
        return internal_ip
    except OSError as e:
        print(f"내부 IP를 가져오는 중 오류가 발생했습니다: {e}")
        return None

if __name__ == "__main__":
    internal_ip = get_internal_ip()
    if internal_ip:
        print(f"내부 IP 주소: {internal_ip}")

 

위 코드에서는 'socket.socket(sockeet.AF_INET, socket.SOCK_DGRAM)' 은 IPv4와 UDP 프로토콜을 사용하여 소켓을 생성합니다. UDP는 연결이 필요 없으므로 실제로 데이터가 전송되지 않더라도 IP를 확인할 수 있습니다.

 

's.connect(("8.8.8.8", 80))'를 사용하여 외부 사이트에 연결을 시도합니다. 여기서 '8.8.8.8'은 Google의 공개 DNS 서버입니다.

 

's.getsockname()[0]'은 소켓의 바인딩된 로컷 IP 주소를 가져옵니다.

 

사용이 끝나면 's.close()'를 호출하여 소켓을 닫습니다.

 

2. 외부 IP 주소 확인

import requests

def get_external_ip():
    try:
        response = requests.get('https://api.ipify.org')
        external_ip = response.text
        return external_ip
    except requests.RequestException as e:
        print(f"외부 IP 주소를 가져오는 중 오류가 발생했습니다: {e}")
        return None

if __name__ == "__main__":
    external_ip = get_external_ip()
    if external_ip:
        print(f"외부 IP 주소: {external_ip}")

 

위 코드에서는 'requests' 모듈을 사용하여 'https://api.ipify.org' API에 요청을 보내고, 응답으로 받은 텍스트가 외부 IP 주소입니다. 이 방법은 인터넷에 연결된 상태에서 사용할 수 있습니다.

 

 

파이썬을 사용하여 컴퓨터의 내부 IP와 외부 IP를 확인하는 방법에 대해 알아보았습니다. 이상입니다.

댓글