DNS

초보개발·2022년 5월 2일
0

Network

목록 보기
8/10

DNS

기본적으로 사이트에 접속할 때, IP 주소가 아닌 도메인 주소를 입력하여 접속한다. DNS(Domain Name Server)는 문자열로 구성된 도메인 주소를 실제 통신에 필요한 IP 주소로 변환하는 역할을 담당한다.

사용자가 브라우저에 naver.com을 입력하면 DNS 서버에 naver.com의 IP 주소를 물어보고 DNS 서버는 naver.com의 IP 주소가 223.130.200.107이라고 알려준다. 사용자는 응답받은 해당 IP로 네이버에 접속하게 된다.

DNS 구조

도메인은 계층 구조로 되어있다. 최상위 root부터 하위까지 주소를 단계적으로 찾아 원하는 주소까지 효율적으로 찾아갈 수 있다.
예를 들어, www.naver.com의 경우 맨 뒤에서부터 루트는 생략된 ., 최상위가 com, 하위가 www가 된다.

루트 도메인

도메인을 구성하는 최상위 영역이다. DNS 서버는 사용자가 질의한 도메인에 대한 값을 직접 갖고 있거나 캐시에 저장된 정보들을 이용해 응답한다. 이때 DNS 서버에 해당 도메인의 정보를 갖고 있지 않다면 루트 도메인들을 관리하는 루트 DNS 서버로 넘겨지게 된다. 참고로 루트 DNS는 전 세계에 13개가 있다.

Top-Level Domain

최상위 도메인인 Top-Level 도메인은 6개로 나뉜다. -> 참고

  • Generic: .com, .edu, .gov, .org 등
  • country-code: .kr 등
  • sponsored: .asia 등
  • infrastructure: .arpa
  • generic-restricted: .biz, .pro
  • test: .test

DNS 동작 방식

도메인을 쿼리하면 DNS 서버에 날리기 전, 먼저 로컬의 DNS 캐시를 확인한다. 그 이유는 동일한 도메인을 매번 쿼리하지 않고 캐시에 저장해 성능을 향상시키기 위해서다. DNS 캐시 정보에는 기존의 DNS 쿼리 결과인 동적 DNS 캐시와 hosts 파일이 저장되어 있는 정적 DNS 캐시가 함께 저장되어 있다. DNS 캐시 정보에 필요한 도메인 정보가 없다면 DNS 서버로 쿼리를 날리고 그 응답을 받으면 먼저 캐시에 저장한다. 이후 쿼리를 수행했던 DNS 정보는 캐시부터 조회하여 DNS 서버에 질의를 하지않고 캐시 정보를 이용한다.

많은 양의 도메인 정보들을 하나의 DNS 서버에 저장할 수 없다. 따라서 DNS는 DNS끼리 서로 연대가 가능한 구조이다. 만약 자신이 가지고 있는 정보가 아니라면 다른 DNS로 쿼리를 날려 결의를 받을 수 있다. DNS 서버는 기본적으로 Root DNS 관련 정보를 갖고 있어 클라이언트의 쿼리가 나에게 없다면 루트 DNS에 물어보고 루트 DNS는 해당 도메인의 TLD 값을 확인하여 해당 TLD 값을 관리하는 DNS가 어디인지 응답해준다.

먼저 naver.com에 대한 정보가 DNS 캐시에 있는지 확인한다. 캐시에 없을 경우 클라이언트가 naver.com 도메인을 DNS 서버에 쿼리하고 DNS 서버는 루트 DNS에 쿼리를 날린다. 루트 DNS는 .com에 대한 정보를 관리하는 TLD 네임서버 정보를 응답한다.
.com을 관리하는 DNS 서버는 naver.com을 관리하는 네임 서버 정보를 DNS 처음 서버에 응답한다.
DNS 서버는 마지막으로 naver.com을 관리하는 DNS에 쿼리하고 naver.com의 결과를 받는다. 처음 쿼리를 받은 DNS은 마지막으로 클라이언트에게 이 정보를 응답으로 보내 그 응답으로 네이버에 접속할 수 있게 된다.

master/slave

DNS 서버는 마스터 서버와 슬레이브서버로 나눌 수 있다. 마스터와 슬레이브의 차이는 도메인에 대한 Zone 파일을 직접 관리하는지에 대한 것으로 나뉜다.

  • 마스터: Zone 파일을 직접 생성하여 도메인 정보를 직접 관리
  • 슬레이브: 마스터에서 생성된 Zone 파일을 주기적으로 복제

따라서 마스터 서버가 우선순위가 더 높지 않고 두 서버 모두 도메인 쿼리에 응답한다.

DNS 마스터, 슬레이브 서버는 서버 이중화에서 사용하는 Active-stanby, Active-Active 방식으로 운영되지 않아 마스터 서버가 문제가 발생하면 일정 시간(만료시간, Expiry time) 후 슬레이브 서버도 정상적인 응답이 불가능해진다.
이 만료 시간 값은 SOA 필드에서 설정된다.
만료시간 안에 슬레이브 서버가 마스터 서버에서 정보를 가져오지 못하면 슬레이브의 정보는 사용할 수 없게 된다. 그래서 만료 시간안에 마스터 서버를 복구하던지, 슬레이브 서버를 마스터로 전환해야 한다.

DNS 레코드 정보

  • A: IPv4
  • AAAA: IPv6
  • CNAME: 도메인 주소 별칭
  • SOA: 도메인 영역에 대한 권한
  • NS: 도메인에 대한 권한이 있는 네임 서버 정보를 설정

0개의 댓글