DNS란?

강민철·2021년 12월 2일
0

IT 지식

목록 보기
1/2

DNS란?

Domain Name System 의 약자로

인터넷 주소창에 Host Domain Name을 입력했을 때(ex, daily-funding.com, naver.com 등..)

해당 문자를 IP주소로 변환해 주는 시스템을 말합니다.

DNS의 탄생배경

  • 인터넷에 연결 된 컴퓨터 한대 한대를 호스트(host)라고 한다
  • 호스트와 호스트가 서로 통신을 하기 위해서는 서로에대한 주소가 필요한대 이때 이주소를 IP주소라 한다
  • IP 주소로 호스트와 호스트가 서로 통신이 가능해졌다
  • 다른 여러개의 호스트와 통신을 하는 경우가 발생하다 보니 숫자로 된 주소를 외우기가 힘들어졌다
  • 다른 호스트에 편하게 접속하기 위해 호스트마다 hosts 라는 파일을 만들고 그 파일내에
    해당 IP에 대응하는 도메인명을 입력해주었다
    ex) 123.123.123.123 daily-funding.com

  • (위 이미지에서 DNS server 라는 부분을 hosts 라는 파일이라고 가정)
    ex)hosts 파일 127.0.0.1 localhost 라고 있는 부분처럼
  • 123.123.123.123 daily-funding.com 이라고 입력을 해둔뒤 웹브라우저에서 daily-funding.com 이라고 입력을 하면 개인의 hosts 파일을 읽어들여 그에 해당하는 IP로 접속을 할수 있게 되었다
  • 위처럼 개인이 hosts 파일을 관리하다 보니 상당히 번거로움

SRI(Standard Research Institute)
그래서 SRI 라는 곳에서 전세계의 IP와 그에 해당하는 도메인을 수집을 합니다
그리고 유저는 SRI를 통해서 hosts 파일을 다운로드를 받습니다
SRI를 통해서 개인이 hosts파일을 관리하지 않게 되었습니다
초반에는 Hosts 파일 내 데이터도 별로 많지 않았고 사용자도 적어
준수한 스펙의 Hosts 파일 운용방식이였으나
사용자가 증가하고 호스트도 증가함에 따라 트래픽 문제가 발생했습니다

DNS 통신 구조

보통 알고 있는 Client ↔ Server 통신

Client 에서 daily-funding.com 이동 요청시 이때

1. 기지국 DNS 서버

인터넷을 설치시 각각 통신사가 있습니다. 각각의 통신사마다 DNS 서버가 존재합니다
예를 들어 웹브라우저 주소창에 daily-funding.com → 입력시 먼저 기지국 DNS 서버에 해당 도메인의 IP주소를 물어봅니다
그 이후 Root DNS 서버에 물어봅니다

이때 도메인 네임에 대한 정보를 갖고 있으면서, 해당 도메인 네임에 해당하는 IP주소를 갖고있는 서버를 Authoritative DNS Server라고 합니다.
반면에 두개중에 하나만 알고있는 서버를 Non-Authoritative DNS Server라고 합니다.

2.Root DNS 서버(최상위 DNS 서버)

Root DNS 서버는 최상위 DNS 서버로 해당 서버에 도메인의 IP를 요청했을경우 IP 정보가 없을수 있습니다
이 경우에는 Root DNS 서버에서 기지국 DNS 서버에 해당 도메인의 IP가 없다고 return 해줍니다
추가로 daily-funding.com ← .com 의 최상위 도메인 서버를 return 해줍니다

3.Top-Level Domaion 서버 TLD 서버(최상위 도메인 서버)

Root DNS 서버에서 return해준 TLD 서버주소를 기지국 DNS 서버에서 받아서
다시 TLD 서버에 요청을 합니다 TLD 서버에서는 Second-level DNS 서버를 return 해줍니다

4.Second-level DNS 서버

TLD 서버에서 return 받은 Second DNS 서버에 또 물어봅니다

5.sub DNS 서버 (최하위 서버)

ex) www. dev. mail. 등등 을 구분하는 최하위 서버

dev.daily-funding.com
ex)
우선 기지국 DNS 서버에서 Root DNS 서버에 물어봅니다
Root DNS 서버에서 나는 모른다 하지만 .com 의 Top-level DNS 서버 주소를 알려줌
전달 받은 Top-level DNS 서버에 물어보면 daily-funding.com 의 Second-level DNS 서버를 알려줌

DNS 서버의 종류

권한 없는 네임 서버 (non-Authoritative Name Server) (DNS 정보를 가지고 있지 않은서버)

  • 기지국 DNS 서버
    (웹사이트에 접속할때마다 Root DNS를 거쳐 계층구조를 거치면 비효율적이므로 기지국 DNS 서버에서 캐싱된 데이터를 통해 바로 return 해주도록 설계되어 있습니다)

권한 있는 네임 서버 (Authoritative Name Server) (DNS 정보를 가지고 있는서버)

  • Root DNS 서버
  • Top-level DNS 서버
  • Second-level DNS 서버
  • sub DNS 서버

DNS 동작 과정

DNS의 레코드 개념

  • A(주소레코드 IPV4) → IPV4 주소 (111.222.333.444)
  • AAAA(주소레코드 IPV6) → IPV6주소 (2dfc:0:0:0:0217:cbff:fe8c:0)
  • CNAME(Canonical NAME) →
  • MX(Mail Exchange) → daily-funding.com 으로 메일 발송시 받을 이메일 서버
    MX 레코드는 여러개 등록하는 경우가 많아 등록시 우선순위 라는게 존재함
  • TXT
  • SRV(SeRVice)
  • PTR(PoinTeR)
  • SOA(Start Of Authority)
  • NS(Name Server)

DNS 캐시

DNS는 각 PC 내에 최근에 방문한 사이트의 도메인 정보와 IP주소를 캐싱해둡니다
DNS는 캐싱이 되고 있어 호스트가 웹브라우저에 도메인을 입력했을 경우에 바로 지역 DNS 서버에 요청하는게 아닙니다.
지역 DNS 서버에 요청하기 전에 PC 내에 캐싱되어 있는 DNS 정보를 확인을 하고 DNS 정보가 없을 경우에 지역 DNS 서버에 요청을 해서 일반적인 DNS 동작과정을 거치게 됩니다.

PC내에 캐싱되어 있는 DNS정보 확인

레코드 설정시 TTL(Time To Live)라는 옵션값이 있습니다
이값은 DNS서버나 사용자 PC의 캐쉬(메모리)에 3600초를 시작으로 매초마다 시간이 감소 되다 0이 되면 메모리에서 사라집니다.

DNS 사용 시 주의할 점

DNS 캐시를 통해서 좀더 빠른 응답속도를 얻을수 있지만 문제점도 존재합니다
바이러스나 네트워크 오류, 혹은 여러가지 이유로 DNS 캐시정보가 변조될수 있습니다
특정 도메인을 입력했을 때 원래의 IP 주소가 아닌 해킹사이트 IP 주소로 변경이
될 수 있습니다
그래서 주기적으로 캐싱된 DNS 를 정리해 줄 필요가 있습니다

command → ipconfig /flushdns

위 이미지는 2020년 초 테라서버에서 서버이전 시 발생한 상황입니다
서버 이전을 하면 해당 도메인의 DNS 정보를 이전한 서버 IP로 변경을 합니다
DNS 를 수정했을 경우에 전체적인 DNS에 해당 정보가 전달되는데 1일에서 최대 3일정도
소요가 된다고 합니다

기존 서버에는 공사중 alert을 띄우고 DNS 정보는 이전할 서버 IP 로 변경을 합니다
그러면 1일정도 후에 DNS 서버들에 변경된 정보가 반영이 되고 기존 서버로 DNS 정보가 캐싱되어 있는 유저는 TTL 시간이 만료되서 캐시가 만료되면 다시 DNS 서버에 DNS 정보를 요청하게
될것이고 그 시점에 변경된 DNS 정보를 전달받아 이전한 서버로 접속을 하게 됩니다.

관련 자료

https://www.youtube.com/watch?v=5rBzHoR4F2A

https://hwan-shell.tistory.com/320

https://ithub.tistory.com/337

https://peemangit.tistory.com/52

https://p2pforum.kr/bbs/board.php?bo_table=freetalk&wr_id=19774

profile
Front-end developer

0개의 댓글