서비스를 운영하며 클라우드 플레어를 사용하다보면 DNS라는 단어를 자주 접하게 된다.
DNS를 비롯한 네트워크에 대해서 학교에서 이론적으로 배웠지만 공부한 후로 시간도 좀 지났고, 실제로 서비스를 운영하다보니 헷갈리는 점이 많아서 한번 정리해보았다.
DNS란 무엇인가
인터넷에서 다른 서버에 요청을 보내기 위해서는 해당 서버의 IP 주소를 알아야 한다.
하지만 사용자는 일반적으로 IP 주소 대신 도메인 네임으로 서버에 접근한다. (sam-meows.com 등등).
따라서 도메인 네임을 실제 IP 주로소 변환하는 과정이 필요하며, 이 과정을 담당하는 시스템이 DNS이다.
또한 DNS 시스템을 위한 정보(어떤 도메인이 어떤 IP에 해당하는지 등)를 저장하고 제공하는 서버를 DNS 서버라고 한다.
DNS 조회 과정
DNS 조회는 다음과 같은 단계로 진행된다.
[1] 로컬 캐시 확인
먼저 클라이언트는 로컬에 저장된 DNS 캐시를 확인한다.
- 브라우저 DNS 캐시
- OS DNS 캐시
- 공유기 DNS 캐시
이 단계에서 IP를 찾으면 DNS 조회는 종료된다. 또한 많은 경우가 이 단계에서 조회가 종료된다. 덕분에 매우 빠른 시간 안에 IP를 찾을 수 있다.
[2] Recursive DNS Resolver에 질의
로컬 캐시에 정보가 없으면 클라이언트는 DNS Resolver에게 질의한다.
Recursive DNS Resolver는 클라이언트를 대신해 DNS 탐색을 수행하는 서버이다.
대표적인 Resolver는 다음과 같다
- ISP DNS(KT / SKT / LG)
- Public DNS
- 1.1.1.1 (Cloudflare)
- 8.8.8.8(Google)
일반적으로 가정집이나 wifi 등 무선 네트워크의 경우 ISP DNS Resolver가 IP 탐색을 수행한다. 또한 Cloudflare나 Google에서도 Public dns resolver를 지원한다.
[3] DNS 계층 탐색
DNS Resolver는 다음 순서로 DNS 서버에 질의한다.
- Root DNS Server → TLD DNS Server (.com 등) → Authoritative DNS Server
각 단계의 역할은 다음과 같다.
Root DNS Server (전 세계에 몇개 없음. 13개였나...?)
- 현재 도메인 정보를 관리하는 TLD DNS 서버 위치 안내
TLD DNS Server
- 현재 도메인 정보를 저장하는 Authoritative DNS 서버 위치 안내
Authoritative DNS Server
- 실제 도메인과 IP 매핑 정보 저장
[예시]
api.sam-meows.com 조회
Root DNS
→ ".com TLD 서버는 여기 있다"
TLD DNS (.com)
→ "sam-meows.com DNS는 여기 있다"
Authoritative DNS
→ "api.sam-meows.com = 5.6.7.8"
전 세계 수많은 authoritative DNS 서버에서 분산해서 실제 도메인과 IP 매핑 정보를 저장하고, 상위 DNS 서버(Top Level DNS 서버, Root DNS 서버) 는 해당 도메인을 저장하고 있는 authoritative 서버가 무엇인지 저장하는 역할이라고 정리할 수 있다.
이렇게 한번 질의한 이후 Resolver는 결과를 클라이언트에게 반환하고 TTL 동안 캐시한다. 한번 캐시되면 TTL 동안은 다시 dns resolver를 통해 질의할 필요 없다.
DNS Zone
도메인은 계층 구조로 이루어져 있다. 예를 들어 api.sam-meows.com이라는 도메인이 있다면 도메인만 봤을 땐 com 도메인 하위에 sam-meows라는 도메인이 있고, 그 하위에 api라는 도메인이 있다고 생각할 수 있다. 따라서 직관적으로 생각했을 때 Authoritative DNS 서버 중에 sam-meows라는 도메인을 관리하는 서버가 있고, 그 서버가 api.sam-meows 라는 도메인을 관리하는 Authoritative DNS 서버가 무엇인지 관리하는게 아닐까 하고 오해할 수 있다.
하지만 DNS는 단순히 도메인에서 보이는 트리 구조 그대로 관리되는 것이 아니라 DNS Zone이라는 단위로 관리된다. DNS Zone은 특정 Authoritative DNS 서버가 관리하는 도메인 범위를 의미한다. 즉 DNS Zone이 api.sam-meows.com과 sam-meows.com을 동시에 관리하도록 설정될 수 있고, 이 경우엔 한 Authoritative DNS 서버가 두 도메인을 모두 관리한다는 뜻이다.
그리고 실제로 위 api.sam-meows.com 이라는 도메인은 sam-meows.com에서 서브 도메인을 만든 것인데, 이렇게 서브 도메인을 만든 경우 일반적으론 한 Authoritative DNS 서버에서 관리하는 경우가 많다. 만일 sam-meows.com이라는 도메인을 관리하는 Authoritative DNS 서버와 api.sam-meows.com이라는 도메인을 관리하는 Authoritative DNS 서버를 분리하고 싶다면 DNS Delegation을 이용해 다른 DNS 서버로 해당 DNS를 위임할 수 있다.
Cloudflare
앞에서 클라우드 플레어는 1.1.1.1 주소에서 Public DNS Resolver 역할을 하는 서버를 운영하고 있다고 언급한 바 있다. 하지만 Cloudflare는 이런 역할만 하는 것이 아니다. 또 다른 역할 중 하나가 앞서 계속 설명한 Authoritative DNS 서버의 역할이다. 우리 회사 도메인을 예시로 들자면 우리는 sam-meows.com이라는 도메인을 가지고 있고, 그 하위에 배포서버용과 테스트 서버용 도메인을 나눠 api.sam-meows.com과 apitest.sam-meows.com이라는 서브 도메인을 사용하고 있다
- sam-meows.com
- api.sam-meows.com
- apitest.sam-meows.com
이 도메인은 GoDaddy에서 구입한 것으로 GoDaddy에서 도메인 네임을 구매하고 이를 클라우드 플레어에 등록하면 클라우드 플레어에선 새로운 NS를 발급한다. 이 새로운 NS를 GoDaddy는 TLD에 등록해 sam-meows.com 도메인이 Cloudflare에서 새로 생성한 NS로 가도록 설정한다. Cloudflare authoritative dns 서버에선 해당 도메인과 IP를 매핑하고 있다. 즉 Cloudflare는 두 가지 역할을 모두 수행한다
- Public Recursive DNS Resolver
- Authoritative DNS Server
'back-end > 🐾 삼냥이즈 기술노트' 카테고리의 다른 글
| [삼냥이즈 기술노트] Proxy (0) | 2026.03.26 |
|---|---|
| [삼냥이즈 기술노트] MVC 패턴 (0) | 2026.03.20 |