# 2023. 11.

# 11. 19.

# 도메인 설정을 위한 DNS 이해하기

얼마 전, 개인블로그에 도메인을 연결하기 위해 가비아에서 rtolzo.dev 도메인을 구입하였다.

# 왜 dev 도메인을 가비아에서..??

이는 가비아는 최상위 도메인(TLD)인 dev NameServer(이하 NS)와 제휴관계를 맺고 있기에 가능하다.

# 관리는 어디서 하는가??

내가 가비아에서 rtolzo.dev 도메인을 구입하면 가비아는 dev NS에게 다음과 같은 요청을 보낸다.

가비아 : rtolzo.dev도메인은 내가 관리할게! 너의 (dev NS) 레코드에 추가해줘!

이 요청 이후 각 NS의 상태는 그림 1과 같다.

도메인 구입 후 각 NS의 상태 그림 1. 도메인 구입 후 각 NS의 상태.

우리는 가비아에서 rtolzo.dev 도메인을 구입하면 해당 도메인에 대한 레코드는 가비아에서 관리할 수 있다. 그림 1에서 gabia NS의 rtolzo.dev에 대한 Record Table에 A 레코드로 IP가 매핑된것을 확인할 수 있다. 이 의미는 dev NS가 rtolzo.dev 라는 질의를 받았을 때

dev NS : 나는 rtolzo.dev에 대한 IP주소를 모르니 ns.gabia.co.kr로 안내할게

라고 하는것과 같다. 실제로 gabia NS에 rtolzo.dev 에 대한 실제 IP 주소가 저장되어있으니 우리는 반복적 질의과정을 통해서
Root NS - dev NS - gabia NS 순으로 질의를 하여 rtolzo.dev의 최종 IP 주소를 얻게 되는 것이다.

# 가비아에서 구매한 도메인을 AWS에서 관리하고 싶다면??

AWS도 가비아 처럼 NS가 존재하기에 (Route53) 우리는 Route53에서 rtolzo.dev 이라는 Zone(관리 구역)을 생성하면 해당 Zone에 대한 AWS NS 주소를 발급해준다. 우리는 가비아에서 도메인을 관리 할 수 있기에, dev NS가 rtolzo.dev에 대해 가르키고 있는 NS 주소를 바꿔줄 수 있다 (처음에는 gabia NS로 설정되어있다). 관리하고자 하는 NS를 가비아에서 AWS로 바꾸고자하면 이 주소를 Route53에서 발급받은 AWS NS로 바꿔주면 된다. 이 과정 이후의 반복적 질의는 Root NS - dev NS - AWS NS 순으로 진행되며 dev NS가 rtolzo.dev 에 대한 질의를 받았을 때

dev NS : 나는 rtolzo.dev에 대한 IP주소를 모르니 ns-71.awsdns-08.com으로 안내할게

라고 하는것과 같다. (그림 2 참조)

가비아에서 AWS NS로 변경 후 상태 그림 2. 가비아에서 AWS NS로 변경 후 상태.

추가로 AWS NS에서 rtolzo.dev 레코드에 새로운 til에 대한 A 레코드를 추가하였을 때
til.rtolzo.dev 에 대한 질의 과정은 그림 3과 같다.

전체 DNS 동작 구조 그림 3. 전체 DNS 동작 구조.
  1. 단말기에서 ISP Resolver로 til.rtolzo.dev에 대한 질의를 한다. (ISP Resolver는 통신사에서 제공한다.)
  2. ISP Resolver는 Root NS에게 질의를 한다.
  3. Root NS는 til.rtolzo.dev에서 최상위 계층인 dev NS의 정보를 반환한다.
  4. ISP Resolver는 Root NS의 응답을 바탕으로 다시 dev TLD Name Server에게 질의를 한다.
  5. 우리가 가비아에서 NS를 AWS로 설정하였기 때문에 dev TLD NS는 AWS NS 정보를 반환한다.
  6. ISP Resolver는 dev NS의 응답을 바탕으로 다시 AWS NS에게 질의를 한다.
  7. AWS NS는 저장되어있는 rtolzo.dev Zone 에 저장되어있는 레코드에서 서브 도메인인 til에 매핑되어있는 주소를 반환한다.
  8. ISP는 위 과정을 통해 얻은 rtolzo.dev에 대한 IP 주소를 단말기에게 알려준다.

# 레퍼런스

DNS 란 무엇입니까? - https://aws.amazon.com/ko/route53/what-is-dns/ (opens new window)
DNS 동작 원리 - https://www.cloudflare.com/ko-kr/learning/dns/what-is-dns/ (opens new window)