본문 바로가기
Development/Etc

[Etc] 웹사이트 주소로 IP 주소 알아내는 방법 총정리

by 은스타 2020. 4. 8.
반응형

웹사이트 주소로 IP 주소 알아내는 방법 총정리

 

안녕하세요.. 이번 포스팅은 인터넷에서 웹사이트 주소(도메인)는 우리가 쉽게 기억할 수 있는 이름이지만, 실제로 컴퓨터는 IP 주소를 통해 웹사이트에 접속합니다. 웹사이트 주소를 통해 IP 주소를 알아내는 방법은 웹 개발, 네트워크 문제 해결, 보안 분석 등 다양한 상황에서 유용하게 활용됩니다. 이 글에서는 초보자도 쉽게 따라할 수 있는 다양한 방법을 소개하겠습니다.

출처 : http://npa.tistory.com


목차

 

#1. IP 주소란 무엇인가?

IP 주소(Internet Protocol address)는 인터넷에 연결된 모든 기기를 식별하는 고유한 주소입니다. 마치 우리 집의 실제 주소처럼, 인터넷 상의 각 기기는 고유한 IP 주소를 가지고 있어 데이터가 정확한 목적지로 전송될 수 있습니다.

현재 주로 사용되는 IP 주소는 두 가지 형식이 있습니다:

  • IPv4: 192.168.1.1과 같은 형태의 4개 숫자 그룹으로 구성 (각 숫자는 0~255 범위)
  • IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334와 같은 더 긴 형식 (IPv4 주소의 고갈 문제를 해결하기 위해 도입)

 

#2. 도메인 이름과 IP 주소의 관계

우리가 웹브라우저에 www.example.com과 같은 도메인 이름을 입력하면, 이는 DNS(Domain Name System)를 통해 해당하는 IP 주소로 변환됩니다. DNS는 일종의 '전화번호부' 역할을 하여 사람이 기억하기 쉬운 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로 변환해 줍니다.

 

#3. 명령 프롬프트를 이용한 IP 주소 확인 방법

Windows에서 nslookup 사용하기

가장 간단하고 강력한 방법 중 하나는 'nslookup' 명령어를 사용하는 것입니다:

  1. Windows 검색창에 "cmd" 입력 후 명령 프롬프트 실행
  2. 다음 명령어 입력: 
  3. nslookup example.com
  4. 결과에서 "Address:" 다음에 나오는 숫자가 해당 웹사이트의 IP 주소입니다.

결과 예시:

Server:  router.home
Address:  192.168.1.1

Non-authoritative answer:
Name:    example.com
Address:  93.184.216.34

nslookup 명령어는 기본 DNS 서버 정보와 요청한 도메인의 IP 주소를 보여줍니다. "Non-authoritative answer"는 이 응답이 캐시된 정보일 수 있음을 의미합니다.

nslookup에 추가 옵션을 사용하면 더 자세한 정보를 얻을 수 있습니다:

nslookup -type=any example.com

Windows에서 ping 사용하기

또 다른 간단한 방법은 'ping' 명령어를 사용하는 것입니다:

  1. 명령 프롬프트 실행
  2. 다음 명령어 입력:
    ping example.com
  3. 결과에서 "Pinging example.com [IP 주소]"와 같은 형태로 IP 주소를 확인할 수 있습니다.

결과 예시:

Pinging example.com [93.184.216.34] with 32 bytes of data:
Reply from 93.184.216.34: bytes=32 time=87ms TTL=56
Reply from 93.184.216.34: bytes=32 time=87ms TTL=56
Reply from 93.184.216.34: bytes=32 time=87ms TTL=56
Reply from 93.184.216.34: bytes=32 time=88ms TTL=56

Ping statistics for 93.184.216.34:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 87ms, Maximum = 88ms, Average = 87ms

ping 명령어는 ICMP 패킷을 보내 대상 서버의 응답 시간도 확인할 수 있어 네트워크 연결 상태 진단에도 유용합니다.

Mac/Linux에서 dig 사용하기

Mac이나 Linux 시스템에서는 'dig' 명령어가 더 많은 정보를 제공합니다:

  1. 터미널 열기
  2. 다음 명령어 입력:
    dig example.com
  3. 결과의 "ANSWER SECTION"에서 IP 주소를 확인할 수 있습니다.

결과 예시:

; <<>> DiG 9.10.6 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30586
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.            IN    A

;; ANSWER SECTION:
example.com.        86400    IN    A    93.184.216.34

;; Query time: 25 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Mon Feb 01 12:00:00 KST 2023
;; MSG SIZE  rcvd: 56

dig 명령어는 DNS 관련 자세한 정보를 제공하며, 특히 DNS 문제를 진단할 때 유용합니다.

 

#4. 온라인 도구를 이용한 IP 주소 확인 방법

명령어 사용이 불편하다면 온라인 도구를 이용할 수도 있습니다:

  1. whatismyip.com: 'Domain to IP' 기능 제공
  2. dnschecker.org: 전 세계 여러 DNS 서버에서의 결과 비교 가능
  3. mxtoolbox.com: DNS 조회 외에도 다양한 네트워크 진단 도구 제공
  4. ipinfo.io: 도메인의 IP 주소뿐만 아니라 위치 정보도 제공

이러한 온라인 도구들은 사용하기 쉽고, 추가 소프트웨어 설치 없이 웹브라우저만으로 결과를 확인할 수 있습니다.

 

#5. 브라우저 개발자 도구를 이용한 방법

웹 브라우저의 개발자 도구를 사용하여 현재 접속 중인 웹사이트의 IP 주소를 확인할 수 있습니다:

Chrome 브라우저에서:

  1. F12 키를 눌러 개발자 도구 열기
  2. 'Network' 탭 선택
  3. 페이지 새로고침 (F5)
  4. 목록에서 첫 번째 요청(일반적으로 HTML 문서) 선택
  5. 'Headers' 섹션에서 'Remote Address'를 확인

Firefox 브라우저에서:

  1. F12 키를 눌러 개발자 도구 열기
  2. 'Network' 탭 선택
  3. 페이지 새로고침 (F5)
  4. 목록에서 첫 번째 요청 선택
  5. 'Headers' 패널에서 'Remote IP' 확인

이 방법은 현재 접속 중인 서버의 실제 IP 주소를 확인할 수 있어, CDN이나 로드 밸런서를 사용하는 웹사이트의 경우 명령어로 조회한 결과와 다를 수 있습니다.

 

#6. 프로그래밍 언어를 이용한 IP 주소 확인 방법

프로그래밍을 통해 더 자동화된 방식으로 IP 주소를 확인할 수 있습니다.

Python으로 IP 주소 확인하기

Python의 socket 라이브러리를 사용하면 간단하게 도메인의 IP 주소를 확인할 수 있습니다:

import socket

def get_ip_address(domain):
    try:
        ip_address = socket.gethostbyname(domain)
        return ip_address
    except socket.gaierror:
        return "도메인 주소를 확인할 수 없습니다."

# 사용 예시
domain = "example.com"
ip = get_ip_address(domain)
print(f"{domain}의 IP 주소는 {ip}입니다.")

여러 IP 주소를 모두 확인하려면 socket.getaddrinfo() 함수를 사용할 수 있습니다:

import socket

def get_all_ip_addresses(domain):
    try:
        addresses = socket.getaddrinfo(domain, None)
        ip_list = []
        for address in addresses:
            ip = address[4][0]
            if ip not in ip_list:
                ip_list.append(ip)
        return ip_list
    except socket.gaierror:
        return ["도메인 주소를 확인할 수 없습니다."]

# 사용 예시
domain = "google.com"
ips = get_all_ip_addresses(domain)
print(f"{domain}의 IP 주소 목록:")
for ip in ips:
    print(f"- {ip}")

JavaScript로 IP 주소 확인하기

브라우저에서 실행되는 JavaScript에서는 보안상의 이유로 직접 DNS 조회가 제한됩니다. 하지만 Node.js 환경에서는 dns 모듈을 사용할 수 있습니다:

const dns = require('dns');

function getIpAddress(domain) {
    dns.lookup(domain, (err, address, family) => {
        if (err) {
            console.error('도메인 주소를 확인할 수 없습니다:', err);
            return;
        }
        console.log(`${domain}의 IP 주소는 ${address} (IPv${family})입니다.`);
    });
}

// 사용 예시
getIpAddress('example.com');

여러 IP 주소를 모두 확인하려면 dns.resolve4() 또는 dns.resolve6() 함수를 사용할 수 있습니다:

const dns = require('dns');

function getAllIpAddresses(domain) {
    dns.resolve4(domain, (err, addresses) => {
        if (err) {
            console.error('IPv4 주소를 확인할 수 없습니다:', err);
            return;
        }
        console.log(`${domain}의 IPv4 주소 목록:`);
        addresses.forEach((ip) => {
            console.log(`- ${ip}`);
        });
    });
}

// 사용 예시
getAllIpAddresses('google.com');

 

#7. 여러 IP 주소가 나오는 이유

하나의 도메인에 여러 IP 주소가 연결되어 있는 경우가 많습니다. 이는 다음과 같은 이유가 있습니다:

  1. 로드 밸런싱: 많은 사용자의 요청을 여러 서버에 분산시켜 부하를 줄이기 위함
  2. 지리적 분산: 사용자의 위치에 따라 가까운 서버에 연결하여 속도 향상
  3. 고가용성: 일부 서버에 문제가 생겨도 서비스가 중단되지 않도록 하기 위함
  4. CDN 사용: 컨텐츠 전송 네트워크를 통해 전 세계 여러 지역에 컨텐츠 복제

대형 웹사이트(Google, Facebook, YouTube 등)는 수백 개의 IP 주소를 가질 수 있으며, 접속하는 위치와 시간에 따라 다른 IP 주소로 연결될 수 있습니다.

 

#8. IP 주소 확인 시 주의사항

IP 주소를 확인할 때 알아두어야 할 몇 가지 중요한 점이 있습니다:

  1. DNS 캐싱: 로컬 컴퓨터나 ISP에서 DNS 정보를 캐시하므로, 최근에 변경된 IP 주소는 바로 반영되지 않을 수 있습니다.
  2. CDN과 로드 밸런서: 많은 웹사이트가 CDN이나 로드 밸런서를 사용하기 때문에, 조회한 IP 주소가 실제 원본 서버의 IP 주소가 아닐 수 있습니다.
  3. 지역에 따른 차이: 전 세계에 분산된 서버를 가진 웹사이트의 경우, 지역에 따라 다른 IP 주소가 반환될 수 있습니다.
  4. IPv4와 IPv6: 일부 웹사이트는 IPv4와 IPv6 주소를 모두 가지고 있으므로, 확인하려는 IP 버전을 명시적으로 지정해야 할 수 있습니다.
  5. 프라이버시와 보안: 다른 사람의 웹사이트 IP 주소를 무단으로 스캐닝하거나 공격하는 행위는 법적 문제가 될 수 있습니다.

 

#9. IP 주소 확인이 필요한 상황들

IP 주소를 확인해야 하는 실제 상황들을 살펴보겠습니다:

  1. 웹 서버 설정: 웹사이트를 호스팅할 때 도메인과 IP 주소의 올바른 연결 확인
  2. 네트워크 문제 해결: 웹사이트 연결 문제가 DNS에서 비롯된 것인지 확인
  3. 보안 분석: 의심스러운 웹사이트의 실제 호스팅 위치 파악
  4. 서버 모니터링: 여러 서버 간의 로드 밸런싱이 올바르게 작동하는지 확인
  5. 지리적 위치 확인: IP 주소를 기반으로 서버의 지리적 위치 파악
  6. 방화벽 설정: 특정 웹사이트에 대한 접근 제어를 위한 IP 주소 확인
  7. 화이트리스트/블랙리스트 설정: 특정 서비스나 API에 접근 가능한 IP 주소 관리

 

#10. 참고 자료

  1. Mozilla Developer Network - DNS 개요
  2. Python 공식 문서 - socket 모듈
  3. Node.js 공식 문서 - DNS 모듈
  4. IETF - IP 주소 표기법
  5. Google 공개 DNS 서비스
  6. Cloudflare - DNS 작동 방식
  7. ICANN - IP 주소 할당 정책
반응형