Home [Network] DNS는 어떻게 작동할까?
Post
Cancel

[Network] DNS는 어떻게 작동할까?

Domain

도메인 관련 작업을 하다가 도메인쪽 내부 시스템을 이해하고 있지 않아서 뭔가 막히는 느낌이 있었다.

이참에 도메인 관련 내용을 쭉 정리해보고자 한다.

우리가 URL을 입력하면 어떻게 해당 IP주소를 받아올까 부터 시작해서, DNS는 어떤식으로 작동하는지에 대해서 알아보자.

Domain 접속 과정

image

  1. 브라우저에서 URL을 입력
  2. /etc/host.conf 파일을 조회해 우선순위가 확인
  3. 우선순위가 /etc/hosts 파일이면 www.nate.com의 IP 주소가 적혀 있는지 확인
  4. hosts 파일에 www.nate.com의 IP 주소가 적혀 있다면 그대로 IP를 반환
  5. /etc/hosts 파일에 www.nate.com의 IP 주소가 없다면 /etc/resov.conf 파일을 확인해서 ‘nameserver 네임서버 IP’ 부분이 있는지 확인

이제 여기 나오는 것들을 하나 하나씩 알아보자!

/etc에 위치한 Domain 관련 파일

/etc/hosts

  • 도메인명의 IP로 변환을 위한 정적 조회.
  • ex. 10.0.0.1 www.foo.bar
    • 위와 같이 등록해두면 www.foo.bar를 접속 시 10.0.01을 찾아감

/etc/resolv.conf

  • 호스트가 DNS 를 확인하기 위한 DNS 네임서버를 나열
  • ex. nameserver 164.124.101.2
    • 해당 nameserver는 LG DNS IP인데, 위와 같이 적어두면 LG DNS IP를 통해서 리졸빙을 진행함

/etc/host.conf

  • Domain 검색 순서를 나타냄
  • 없다면 default 값으로 “/etc/hosts → /etc/resolv.conf 의 DNS 사용” 순서로 진행

Domain이란?

먼저 우리가 흔히 이야기하는 Domain은 무엇일까?

Domain을 이야기하려면 먼저 IP 를 알아야한다. (좀 딥해지긴 하지만… 간단하게만 정리하자!)

IP란?

Internet Protocol 로서 TCP/IP 계층에서 네트워크 층에 해당된다.

그전에 또 알아야하는 것이 있는데,,, MAC 주소이다. 간단하게 말해서 디바이스의 물리주소!!

통신을 하려면 이 물리주소로 접근해야하는데 그때 IP 주소를 통해서 접근한다.

어쨌든 간단하게 이야기하면 우리가 흔히 이야기하는 IP는 IP 주소에 해당되는데, ARP 라는 프로토콜을 사용해서

User → IP 주소 → ARP 프로토콜 사용 → MAC 주소

이렇게 User가 MAC주소에 접근해서 통신할 수 있다!

Domain이란?

사람이 일반적으로 196.82.33.22 이러한 숫자로 이루어진 IP 주소를 쉽게 외울 수 없기 때문에 문자로 이름을 부여한 것이다!

예를 들면 www.google.com.. 같은 것!

오케이 이제 그럼 DNS를 알아보자

DNS란?

Domain Name System 이다.

즉, 우리가 위에서 이야기한 Domain 이름을 어떤 IP 주소로 접근할지 해당 도메인 네임에 매칭된 IP 주소를 찾아주는 것이다!

근데 우리가 궁금한 것은.. 그래서 DNS가 IP 주소를 어떻게 찾는데? 즉, DNS의 작동원리이다.

맨 처음에 알아봤듯이, 우리가 Domain Name을 입력했을 때 /etc/ 파일에 해당 Domain이 등록되어 있지 않다면 Domain이 가리키는 IP를 찾기 위해서 DNS 서버에게 질의한다.

기본적으로 우리 컴퓨터가 LAN선을 통해 인터넷이 연결되면, 해당 인터넷의 통신사(STK, KT, LG 등)의 DNS서버가 등록된다.

image

1
2
3
# /etc/resolv.conf
nameserver 164.124.102.2
nameserver 168.126.63.1

우리가 Domain name으로 foo.bar.com 을 입력했을 때 우리에게 저장된 DNS 서버는 두 가지 응답을 줄 수 있다.

  • 찾는 도메인 서버가 있을 때
    • 해당 Domain이 가리키는 IP주소를 리턴해줌.
    • 이렇게 Domain Name에 대한 정보와 그에 매칭되는 IP 주소를 가지고 있는 서버를 **Authoritative DNS Server** 라고 함
  • 찾는 도메인 서버가 없을 때
    • Root DNS 서버에 질의를 넘겨줌
    • 이렇게 Domain Name에 대한 정보와 그에 매칭되는 IP 주소 중 하나만 알고 있는 서버를 **Non-Authoritative DNS Server** 라고 함

중요한 점 중 하나는 DNS가 트리 구조로 되어있다는 것이다.

Root DNS Server

image

  • Root DNS는 최상위 DNS 서버이다.
  • 아래에 딸린 Node DNS 서버에게로 차례대로 물어보면서 내려옴

Recursive DNS Query

image

  • 예를 들어서 download.beta.example.com 을 질의했다고 가정하자.
    1. Local DNS에 물어봄
    2. Root Server로 물어봄
    3. .com Top-Level Domain 에게 물어봄
    4. .example.com Authoritative DNS Server에 물어봄
    5. beta.example.com Authoritative DNS Server에 물어봄

A record와 CNAME의 차이점

  • DNS의 각 레코드는 A, AAAA, CNAME, NS, MX 등으로 이루어져 있다.
  • A record type
    • 간단하게 Domain Name에 IP 주소를 매핑하는 방법을 의미한다.
  • CNAME
    • Canonical Name의 줄임말로 하나의 도메인에 도메인 별칭 (Aliaas) 를 부여하는 방식이다.
  • A record는 직접적으로 IP가 할당되어 있어서 IP가 변경되면 직접적으로 도메인에 영향을 받지만, CNAME은 그렇지 않음!
  • nslookup 예시

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
      $ nslookup www.naver.com
      Server:		10.20.30.60
      Address:	10.20.30.60#53
        
      Non-authoritative answer:
      www.naver.com	canonical name = www.naver.com.nheos.com.
      Name:	www.naver.com.nheos.com
      Address: 223.130.200.104
      Name:	www.naver.com.nheos.com
      Address: 223.130.195.95
    
    • Naver의 경우를 보자! CNAME (canonical name) 이 등록되어있다. (이게 naver.com 을 들어가도 접속이 된다는 것을 의미하는 걸까..?)

ref . https://hinos.tistory.com/175

https://hwan-shell.tistory.com/320 (여기서 DNS 구조에 대해서 엄청 잘 설명해주셨다)

https://coding-start.tistory.com/348

This post is licensed under CC BY 4.0 by the author.