CS 지식

[CS 지식2.] DNS의 동작원리(Domain Name System)

Somaz 2023. 3. 1. 13:05
728x90
반응형

Overview

DNS(Domain Name System)는 사용자가 브라우저에 입력한 도메인 이름을 실제 서버의 IP 주소로 변환해주는 핵심 인프라 시스템이다. 사용자는 www.a.com 처럼 사람이 이해하기 쉬운 주소를 입력하지만, 실제 통신은 숫자로 된 IP 주소를 통해 이루어진다. 

 

DNS는 이러한 주소 변환을 위해 계층적이고 분산된 서버 구조를 사용한다.

 

사용자의 컴퓨터는 먼저 로컬 캐시를 확인한 뒤,

필요한 경우 루트 DNS 서버 → TLD DNS 서버 → Authoritative DNS 서버의 순서로 질의하며 최종 IP 주소를 획득한다.

이 IP 주소는 다시 로컬에 캐싱되어 이후 빠른 접근이 가능하게 된다.

 

DNS는 단순히 이름을 IP로 변환하는 기능을 넘어서, 이메일, 보안, 서비스 탐색 등 다양한 기능을 제공하는 여러 레코드(A, MX, CNAME, TXT 등)를 통해 인터넷 인프라의 기반을 형성한다.

 

출처 : https://aws.amazon.com/ko/route53/what-is-dns/

 

 

 

 

📅 관련 글

2023.01.13 - [CS 지식] - [CS 지식1.] 웹 브라우저의 동작원리

2023.02.23 - [CS 지식] - [CS 지식2.] DNS의 동작원리(Domain Name System)

2023.03.06 - [CS 지식] - [CS 지식3.] HTTP / HTTPS 란?

2023.03.07 - [CS 지식] - [CS 지식4.] OSI 7계층 & TCP/IP 4계층이란?

2023.03.17 - [CS 지식] - [CS 지식5.] 가상화란?

2023.05.24 - [CS 지식] - [CS 지식6.] HTTP 메서드(Method)란? / HTTP Status Code

2023.12.05 - [CS 지식] - [CS 지식7.] Kubernetes 구성요소와 Pod 생성 방식이란?

2023.12.19 - [CS 지식] - [CS 지식8.] 프로세스(Process)와 스레드(Thread)란?

2023.12.30 - [CS 지식] - [CS 지식9.] 클라우드 컴퓨팅이란?(Public & Private Cloud / IaaS SaaS PaaS / Multitenancy)

2024.01.05 - [CS 지식] - [CS 지식10.] 웹1.0(Web1.0) vs 웹2.0(Web2.0) vs 웹3.0(Web3.0)

2024.02.02 - [CS 지식] - [CS 지식11.] NAT(Network Address Translation)란?

2024.05.22 - [CS 지식] - [CS 지식13.] 동기 및 비동기 처리란?

2024.05.23 - [CS 지식] - [CS 지식14.] 3tier 아키텍처란?

2024.08.28 - [CS 지식] - [CS 지식15.] SSR vs CSR vs ISR vs SSG

2024.11.09 - [CS 지식] - [CS 지식16.] stdin(표준입력) vs stdout(표준출력) vs stderr(표준에러)

2024.11.11 - [CS 지식] - [CS 지식17.] IPsec vs SSL/TLS

2024.11.22 - [CS 지식] - [CS 지식18.] Quantum Computing(양자 컴퓨팅)

 

 

 

 

 

 


 

 

 

동작 원리

 

  1. 사용자가 브라우저로 웹 사이트에 접속(www.a.com)
  2. 사용자의 컴퓨터는 도메인 이름을 가지고 로컬 DNS 캐시를 확인 로컬 DNS 캐시에 해당 도메인 이름에 대한 IP 주소가 캐시되어 있다면바로 IP주소를 반환
  3. 로컬 DNS 캐시에 해당 도메인 이름에 대한 IP주소가 없다면 DNS 질의 시작
  4. 사용자는 먼저 루트 DNS 서버의 IP 주소를 알아내기 위해, 사용자의 컴퓨터에 미리 설정되어 있는 최상위 DNS 서버의 IP 주소를 참조하여 루트 DNS 서버의 IP 주소를 획득
  5. 사용자는 루트 DNS 서버에 질의를 보내어, 해당 도메인 이름을 관리하는 TLD(Top Level Domain) DNS 서버의 IP 주소를 얻습니다. (예: .com .org .net 등)
  6. 사용자는 TLD DNS 서버에 질의를 보내어, 해당 도메인 이름을 관리하는 Authoritative DNS 서버의 IP 주소를 획득
  7. 사용자는 Authoritative DNS 서버에 질의를 보내어, 해당 도메인 이름에 대한 IP 주소를 획득
  8. 획득한 IP 주소를 캐시에 저장하고, 이를 브라우저에 반환하여 해당 도메인 이름에 대한 웹 페이지를 표시

 


 

 

 

DNS란?

인터넷에서 사용되는 호스트 이름(도메인 이름)을 실제 IP 주소로 변환하는 시스템이다.

 

 

 

DNS 서버의 종류

 

Root DNS 서버

Root DNS 서버는 인터넷에서 가장 중요한 DNS 서버 중 하나이다. 이 서버는 전 세계적으로 분산되어 있으며, 인터넷 상의 모든 도메인 이름에 대한 최상위 DNS 서버로 인터넷 전체 DNS 시스템의 기초를 담당한다.

 

그리고 루트 도메인 이름을 관리한다. 루트 도메인 이름은 인터넷에서 사용되는 도메인 이름 중 최상위 도메인 이름이다. 루트 도메인 이름은 .(점)으로 표시되며, 예를 들어 보자면 www.aaa.com이라는 도메인 이름의 의 루트 도메인 이름은 .com이다.  

 

Root DNS 서버는 TLD DNS 서버의 IP 주소를 알고 있다. 따라서 사용자가 www.aaa.com이라는 도메인 이름으로 쿼리를 수행할 때, 먼저 Root DNS 서버에 해당 도메인 이름의 TLD DNS 서버가 어디에 있는지 물어본다. 그리고 Root DNS 서버는 TLD DNS 서버의 IP 주소를 반환하고, 이후 사용자의 DNS 쿼리는 해당 TLD DNS 서버로 전달된다.

 

즉, Root DNS 서버는 인터넷 상의 모든 DNS 서버에 대한 출발점이며, 인터넷 전체 DNS 시스템의 핵심 역할을 담당한다.

Root DNS 서버는 전 세계적으로 분산되어 있으며, ICANN(Internet Corporation for Assigned Names and Numbers)에서 관리된다.

 

 

 

 

TLD DNS 서버(Top-Level Domain)

TLD DNS 서버는 인터넷에서 사용되는 최상위 도메인 이름(Top-Level Domain)을 관리하는 DNS 서버이다.

.com, .org, .edu 등과 같이 최상위 도메인 이름에 대한 DNS 서버로, 각 도메인 이름의 DNS 쿼리를 처리한다.

 

TLD DNS 서버는 각 TLD 도메인 이름에 대한 IP 주소와 기타 DNS 레코드 정보를 관리한다.

예를 들어, .com 도메인 이름에 대한 TLD DNS 서버는 .com 도메인 이름에 대한 모든 DNS 쿼리를 처리한다. 이러한 DNS 쿼리는 해당 도메인 이름에 대한 IP 주소를 찾는 것이 주된 목적이다.

 

TLD DNS 서버는 또한 ICANN(Internet Corporation for Assigned Names and Numbers)에 등록되어 있으며, 해당 TLD 도메인 이름을 사용하는 도메인 이름 등록 업체(Domain Name Registrar)와 협력하여 해당 도메인 이름에 대한 정보를 업데이트한다.

 

TLD DNS 서버는 Root DNS 서버로부터 요청된 DNS 쿼리를 받는다. Root DNS 서버는 TLD DNS 서버의 IP 주소를 알고 있으며, 이를 통해 사용자가 요청한 도메인 이름의 TLD DNS 서버를 찾아서 DNS 쿼리를 전달한다. TLD DNS 서버는 이후 해당 도메인 이름의 Second-Level DNS 서버를 찾아서 DNS 쿼리를 전달한다.

 

따라서, TLD DNS 서버는 인터넷 상의 모든 도메인 이름에 대한 DNS 쿼리 처리에서 중요한 역할을 담당한다. TLD DNS 서버는 전 세계적으로 분산되어 있으며, 도메인 이름 등록 업체와 ICANN에 의해 관리된다.

 

 

 

 

Second-Level DNS 서버(Authoritative DNS 서버)

Second-Level DNS는 DNS의 핵심 요소 중 하나로, 특정 도메인 이름에 대한 IP 주소 정보를 제공하는 DNS 서버이다.

 

일반적으로 도메인/호스팅 업체의 네임서버를 말한다.

 

또한 해당 도메인 이름에 대한 정보를 가지고 있는 최종적인 답변자 역할을 한다. 예를 들어 aaa.com 도메인 이름에 대한 IP 주소를 알고 있는 DNS 서버가 있다면 , 해당 DNS 서버는 Second-Level DNS 서버가 된다.

 

 

 

 

Recursive DNS 서버

DNS 쿼리를 수행하고, 필요한 경우 다른 DNS 서버에 쿼리를 보내서 최종적으로 요청된 도메인 이름에 대한 IP 주소를 찾아서 제공한다.

 

 

 

 

Caching DNS 서버

이전에 수행한 DNS 쿼리 결과를 캐시하고, 이후 동일한 쿼리에 대해서는 캐시된 결과를 반환합니다.

이를 통해 DNS 쿼리 성능을 향상시킬 수 있다.

# win10 DNS 캐쉬 초기화 방법 #
# cmd 창을 켠 뒤

ipconfig/flushdns

 

 

 

 

Forwarding DNS 서버

DNS 쿼리를 수행하고, 필요한 경우 다른 DNS 서버에 쿼리를 보내서 최종적으로 요청된 도메인 이름에 대한 IP 주소를 찾아서 반환한다. 이때, 다른 DNS 서버에서 반환된 결과를 캐시할 수 있다.

 

 

 

 

Secondary DNS 서버

Primary DNS 서버의 데이터를 복제하는 역할을 담당하여, Primary DNS 서버에 장애가 발생하더라도 서비스를 유지할 수 잇도록 한다.

 

 

 

 


 

 

DNS 레코드 종류

 

DNS record는 Domain Name System(DNS)에서 도메인 이름과 해당 도메인과 연결된 IP 주소를 매핑하는 데 사용되는 데이터 항목이다. DNS 레코드는 도메인 이름과 관련된 정보를 담고 있으며, DNS 쿼리를 수행하는 서버에 의해 사용된다.

DNS 레코드의 유형은 다양하다. 다음은 일반적인 DNS 레코드 유형의 몇 가지 예이다.

 

  1. A 레코드: 도메인 이름을 IP 주소로 매핑한다. 이 레코드는 도메인 이름을 IP 주소로 해석하는 데 사용된다.
  2. CNAME 레코드: 도메인 이름을 다른 도메인 이름으로 매핑한다.. 이 레코드는 도메인 이름을 다른 도메인 이름으로 변경하는 데 사용된다.
  3. MX 레코드: 도메인 이름과 연결된 메일 서버의 우선 순위를 지정한다. 이 레코드는 이메일을 전송할 때 도메인 이름과 연결된 메일 서버를 찾는 데 사용된다.
  4. NS 레코드: 도메인 이름에 대한 권한 DNS 서버를 식별한다. 이 레코드는 DNS 쿼리가 수행될 때 도메인 이름에 대한 권한 DNS 서버를 찾는 데 사용된다.
  5. TXT 레코드: 도메인 이름과 연결된 텍스트 정보를 포함된다. 이 레코드는 보안, 인증 등 다양한 목적으로 사용된다.
  6. SPF (Sender Policy Framework) 레코드: 이메일 스팸을 방지하기 위해 도메인 이름의 이메일 발송 권한을 확인하는 데 사용된다. SPF 레코드는 도메인 이름을 검색하여 이메일 발송 권한을 확인하고, 이를 통해 도메인 이름의 이메일 스팸을 방지한다.
  7. SRV (Service) 레코드: DNS 서버가 제공하는 특정 서비스의 위치를 식별하는 데 사용된다. 이 레코드는 웹 서비스, VoIP, FTP 등과 같은 특정 서비스의 위치를 찾는 데 사용된다.
  8. AAAA 레코드: IPv6 주소를 도메인 이름에 매핑하는 데 사용된다. IPv6는 IPv4의 주소 고갈 문제를 해결하기 위해 개발된 새로운 IP 주소 체계이다.
  9. SOA (Start of Authority) 레코드: 도메인 이름에 대한 기본 설정을 제공한다. 이 레코드는 도메인 이름의 소유자, DNS 서버, 캐시 된 정보의 유효 기간 등의 정보를 제공한다.
  10. PTR (Pointer) 레코드: 이 레코드는 IP 주소를 도메인 이름으로 매핑하는 데 사용된다. A 레코드가 도메인 이름을 IP 주소로 매핑하는 반면, PTR 레코드는 IP 주소를 도메인 이름으로 매핑한다. PTR 레코드는 역 DNS (reverse DNS)라고도 하며, 주로 이메일 서버에서 사용된다.. 이메일 서버에서는 전송된 이메일의 IP 주소를 역 DNS 쿼리로 검색하여 해당 IP 주소가 신뢰할 수 있는 소스에서 전송되었는지 확인할 수 있다.
  11. NSID (Name Server Identifier) 레코드: 이 레코드는 DNS 서버의 고유 식별자를 제공한다. NSID 레코드는 주로 DNS 서버 간의 통신에서 사용된다. DNS 서버는 서로 자신의 식별자를 제공하고, 이를 통해 서로 간의 통신을 안전하게 유지할 수 있다.
  12. DNSKEY (DNS Public Key) 레코드: 이 레코드는 DNSSEC (DNS Security Extensions)에 사용되는 공개 키를 제공한다. DNSSEC는 DNS 시스템을 보호하기 위한 보안 프로토콜로, DNS 데이터의 무결성과 인증을 제공한다. DNSKEY 레코드는 DNSSEC에서 사용되는 공개 키를 포함하며, 이를 통해 DNS 데이터의 무결성과 인증을 보호한다.

 

 

 

 

DNSSEC (DNS Security Extensions)

DNS는 기본적으로 응답의 진위 여부를 검증하지 못합니다. 이를 보완하기 위해 등장한 기술이 DNSSEC이다.
DNSSEC는 응답에 디지털 서명을 추가하여 데이터 무결성과 인증을 보장하며, MITM 공격이나 DNS Spoofing 같은 위협으로부터 보호할 수 있게 한다.

 

 

 

TTL(Time To Live) 설정 이해

DNS 응답에는 TTL 값이 함께 설정되며, 이 값은 캐시된 레코드가 얼마 동안 유효한지를 나타낸다. TTL이 짧을수록 변경 사항 반영이 빠르지만, 쿼리 수가 늘어날 수 있고, TTL이 길면 쿼리는 줄지만 변경 반영이 늦어질 수 있다.

 

 

 

Public DNS 서비스

Google DNS (8.8.8.8), Cloudflare DNS (1.1.1.1) 같은 공개 DNS는 성능과 보안을 고려한 대체 DNS로 많이 활용된다.

 

 

 

리졸버 동작 흐름

리졸버는 Recursive DNS의 핵심 구성 요소로, 클라이언트를 대신해 전체 DNS 질의 과정을 수행합니다. 리졸버가 잘못 설정되거나 느릴 경우 DNS 응답 속도가 전체 웹 성능에 영향을 줄 수 있

 

 

 

Anycast 기반 DNS

Anycast는 하나의 IP 주소에 여러 서버가 연결돼, 네트워크 상에서 가장 가까운 서버로 라우팅되도록 하는 기술이다.
전 세계적으로 분산된 Public DNS 서버(Google DNS, Cloudflare 등)는 이 방식을 사용하여, 전송 지연을 최소화한다.

예: 1.1.1.1, 8.8.8.8는 실제로 수십~수백 개의 DNS 서버로 연결될 수 있으며, 사용자 가까운 곳으로 자동 연결됨

 

 

 

 

DNS(0) – 확장 DNS

기존 DNS의 UDP 패킷은 512바이트 제한이 있어 큰 레코드(RRSIG, DNSSEC 등)를 처리할 수 없었다. 이를 해결하기 위해 EDNS(Extension Mechanisms for DNS)가 도입됐다.

  • 클라이언트가 EDNS를 지원하면 DNS 서버는 UDP 패킷 크기를 늘려 응답을 더 많이 포함할 수 있음
  • DNSSEC이나 기타 메타데이터 처리를 가능하게 함

 

 

 

 

DNS Over HTTPS (DoH) / DNS Over TLS (DoT)

기본 DNS는 암호화되지 않은 UDP 또는 TCP로 통신합니다. 이는 패킷 스니핑, 변조, 검열에 취약하다.

  • DoH: DNS 요청을 HTTPS(443 포트)로 암호화 전송
  • DoT: 전용 TLS 연결(853 포트)을 통해 암호화
  • Google Chrome, Firefox, Cloudflare 등이 적극 지원
  • 프라이버시 보호, 망 중립성 강화

 

 

 

 

Split Horizon DNS (이중 DNS 보기)

내부망과 외부망에 동일한 도메인에 대해 다른 IP 응답을 제공하는 기술이다.
✔️ 예: api.company.com 을 외부 사용자는 외부 로드밸런서 IP로, 내부 사용자는 내부 프록시 IP로 보게 설정 가능

 

 

 

 

 

DNS Load Balancing (라운드로빈 / GeoDNS)

  • 라운드로빈 방식: A 레코드를 여러 개 등록하여 요청마다 순환 제공
  • GeoDNS: 클라이언트 지역에 따라 가장 가까운 서버 IP 제공
  • 트래픽 분산, 고가용성 확보, 지연 시간 최소화에 효과적

 

 

 

DNS Failover

DNS에 모니터링과 상태 감지 기능을 붙여, 서버 다운 시 자동으로 다른 IP로 전환하는 기법이다.
AWS Route 53, Cloudflare DNS는 이 기능을 지원함

 

 

 

 

DNS Zone Transfer (AXFR, IXFR)

  • AXFR (Full Zone Transfer): 모든 레코드를 한 번에 전송
  • IXFR (Incremental Zone Transfer): 변경된 레코드만 전송
  • 주로 Primary ↔ Secondary DNS 서버 동기화 시 사용됨
  • 보안 이슈가 있어 IP 제한, TSIG 인증 등을 설정해야 안전함

 

 

 

 

실무에서 주의할 점

  • TTL 너무 길게 잡으면 IP 변경이 느리게 반영됨
  • PTR 레코드 누락 시 이메일 발송 차단 가능 (특히 Gmail, Naver 등)
  • SPF, DKIM, DMARC 레코드는 반드시 이메일 도메인과 함께 설정
  • DNS 레코드 변경 후 반영까지 최대 TTL 시간만큼 소요될 수 있음

 

 

 

 

 

 


 

 

 

 

마무리

DNS는 인터넷 사용의 출발점이자, 모든 네트워크 통신의 시작을 담당하는 중요한 기술이다.

우리가 일상적으로 접속하는 웹사이트, 이메일 송수신, 클라우드 서비스 등은 모두 DNS를 기반으로 동작한다.

 

DNS 구조와 질의 흐름, 서버 유형, 레코드 종류 등을 이해하면 도메인 설정이나 네트워크 문제 해결 시 큰 도움이 되며,

특히 시스템 운영자, 네트워크 관리자, 보안 담당자에게는 필수적인 지식이다.

 

또한, BIND나 tinydns 같은 DNS 서버 설정법을 익혀두면 직접 DNS 인프라를 운영하거나 튜닝하는 데도 활용할 수 있다.

DNS는 단순한 기술이 아닌, 안정성과 보안, 속도에 밀접한 핵심 인프라임을 기억해야 한다.

 

 

 

 

 

 

 

 

 

 


 

 

Reference

 

 

 

728x90
반응형