#연구/#Python

파이썬으로 DNS Lookup 기능을 구현해보자! #파이썬으로 google.com의 IP를 알아낼 수 있을까? #DNS Lookup with Python

every7hing 2021. 1. 5. 16:40
반응형

 

파이썬으로 DNS Lookup 기능을 구현해보자!

 

google.com

yahoo.co.kr

등의 사이트에 IP를 알고 싶을 때, 파이썬으로 어떻게 할 수 있을까요?

 

Python의 sockets 모듈을 이용하면 아주 간단하게 해결 할 수 있습니다. sockets 모듈은 호스트 이름에 대한 IP 정보를 쉽게 가져오는 방법을 제공하고 있거든요.

 


socket.gethostbyname(hostname)

Translate a host name to IPv4 address format. The IPv4 address is returned as a string, such as '100.50.200.5'. If the host name is an IPv4 address itself it is returned unchanged. See gethostbyname_ex() for a more complete interface. gethostbyname() does not support IPv6 name resolution, and getaddrinfo() should be used instead for IPv4/v6 dual stack support.

 

참고: docs.python.org/3/library/socket.html

 

socket — Low-level networking interface — Python 3.9.1 documentation

This module provides access to the BSD socket interface. It is available on all modern Unix systems, Windows, MacOS, and probably additional platforms. The Python interface is a straightforward transliteration of the Unix system call and library interface

docs.python.org

 

sockets.gethostbyname을 이용해서 다음과 같이 코드를 완성해보죠!

 

 

import socket

ip1 = socket.gethostbyname('google.com')
ip2 = socket.gethostbyname('yahoo.com')

print(f"google.com's IP: {ip1}")
print(f"yahoo.com's IP: {ip2}")

 

자 결과가 어떻게 나올지 궁금하시죠?

결과는 다음과 같습니다.

google.com's IP: 172.217.27.78
yahoo.com's IP: 98.137.11.164

 

간혹 아래와 같은 오류를 만날 수도 있는데요.

socket.gaierror: [Errno -3] Temporary failure in name resolution

 

위 오류는 대부분 nameserver를 찾지 못해서 발생하는 경우가 많아요.

각 OS별  nameserver 적용 가이드를 참조해서 nameserver를 설정하면 잘 해결될 수 있을꺼라 믿습니다.

 

 

반응형