DNS(Domain Name Service)란?
DNS(Domain Name Service)는 도메인 이름을 IP주소로 변환해주는 시스템입니다. 인터넷 상에서 컴퓨터들은 서로를 IP 주소(ex. 192.0.2.1)로 식별하지만, 사람이 기억하고 사용하기는 어렵습니다. 그래서 사람이 이해하기 쉬운 도메인 이름(www.google.com)을 IP주소로 바꿔주는 역할을 합니다.
작동 방식
- 사용자가 브라우저에 www.example.com을 입력
- 컴퓨터는 DNS서버에 이 도메인의 IP 주소가 뭐야 라고 질의
- DNS 서버는 해당 도메인의 IP wnthfmf ckwdktj dmdekq
- 그 IP 주소로 웹사이트에 접속
DNS 계층 구조
- Root DNS : 가장 상위
- Top-Level Domain(TLD) : .com, .net, .kr같은 도메인
- Second-Level Domain : example.com에서 example qnqns
- Subdomain : www.example.com에서 www 부분
DNS 쿼리 과정
1. DNS 클라이언트가 로컬 DNS Resolver에게 질의( Recursive Query)
- 사용자가 브라우저에 www.example.com 입력
- OS 또는 애플리케이션은 로컬 DNS 리졸버(일반적으로 ISP나 회사 내부 DNS 서버)에 "이 도메인의 IP주소를 알려줘" 라고 요청
- 요청자가 결과를 바로 원하며, 중간 단계는 관심없음
- 리졸버가 모든 작업을 대신 수행함
2. 로컬 리졸버가 루트 DNS 서버에 질의(반복적 질의)
- 리졸버는 먼저 루트 DNS 서버에 www.example.com의 정보를 요청
- 루트 서버는 직접 IP주소를 주지 않고 TLD 서버(.com)의 주소를 알려줌
- 루트 서버는 직접 해답을 주지 않고, "이걸 처리할 수 있는 서버는 저기야" 하고 경로만 알려줌
3. 리졸버가 권한 DNS 서버에 질의 (반복적 질의)
- 마지막으로 권한 DNS 서버에 http://www.example.com의 IP 주소를 요청
- 이 서버는 실제로 A 레코드(IPv4 주소) 또는 AAAA 레코드(IPv6 주소)를 보유하고 있으며, 요청한 IP 주소를 반환
4. 리졸버가 결과를 클라이언트에 반환
- 로컬 리졸버는 권한 서버에서 받은 IP 주소를 클라이언트에게 전달
- 클라이언트는 그 IP 주소를 이용해 웹 서버에 접속
대표적인 DNS 레코드 종류
DNS 레코드는 도메인 이름과 관련된 정보를 저장하는데이터 항목입니다.
도메인이 어떤 IP 주소를 가지고 있는지 메일서버는 어디인지 별칭은 무엇인지 등 다양한 정보를 표현합니다.
레코드 타입 | 설명 |
A | 도메인 -> IPv4 주소(93.184.216.34) 매핑 |
AAAA | 도메인 -> IPv6 주소 (예: 2606:2800:220:1:248:1893:25c8:1946) 매핑 |
CNAME | 도메인의 별칭(Alias)을 정의(예: www.example.com -> example.com) |
MX | 도메인에 대한 메일 서버 지정(Mail Exchange) |
NS | 도메인을 관리하는 권한 있는 네임서버 지정 |
TXT | 도메인에 대한 텍스트 정보 저장(SPF, DKIM, 도메인 인증 등) |
SOA | 도메인 영역에 대한 권한 정보 및 관리정보(Start of Authority) |
PTR | IP 주소 -> 도메인이름(역방향 조회, Reverse DNS) |
SRV | 서비스 위치(Service Location) 정보(SIP, XMPP 등) |
CAA | SSL 인증서를 발급할 수 있는 CA(Certificate Authority) 지정 |
DNS 캐시
- 사용자가 www.example.com에 접속하면, IP 주소를 찾기 위해 DNS 질의 발생
- 이 결과를 일정시간 동안 캐시에 저장
- 동일한 도메인에 다시 접속할 경우, 캐시에 저장된 결과를 재사용하여 DNS 서버에 재질의하지 않음
캐시 저장 위치
계층 | 설명 |
브라우저 캐시 | 일부 웹 브라우저는 자체적으로 DNS 결과를 캐시 |
운영체제(OS) 캐시 | 로컬 DNS 리졸버가 운영체제[ 수준에서 캐싱 수행(nscd, systemd-resolved, dnsmasq 등) |
로컬 DNS 서버(리졸버) | ISP나 기업 네트워크의 DNS 리졸버가 대규모 캐시 유지 |
중간 DNS 서버 | 공용 DNS(google, Cloudflare)도 캐시를 유지하여 응답속도를 높임 |
TTL(Time To Live)
- TTL은 DNS 응답에 포함된 메타데이터로, 해당 레코드가 캐시에 얼마나 유지될지를 정의합니다.
- 예를 들어, A 레코드의 TTL이 3600 이라면 1시간(3600초)동안 캐시에 저장됩니다.
- TTL이 지나면 캐시는 무효화되고 다시 DNS 서버에 질의합니다.
DNS 캐시의 장점
장점 | 설명 |
속도향상 | 반복 접속 시 훨씬 빠르게 응답 |
네트워크 트래픽 감소 | DNS 서버와의 통신 횟수 줄어듦 |
가용성 향상 | 외부 DNS 서버 문제가 있어도 캐시가 남아있다면 정상 동작 가능 |
캐시의 단점 및 주의사항
단점 | 설명 |
정보 갱신 지원 | 도메인의 IP 주소가 바뀌어도 TTL 동안은 캐시된 값 사용 가능성 있음 |
DNS 스푸핑/포이즈닝 위험 | 캐시에 악의적인 정보가 들어가면 사용자가 잘못된 주소로 연결될 수 있음 |
문제해결 어려움 | 변경사항 적용이 즉시 반영되지 않아 디버깅 어려움 초래 |
운영체제별 캐시확인 및 삭제 방법(로컬 캐시)
- Windows
ipconfig /displaydns # 캐시 보기
ipconfig /flushdns # 캐시 삭제
- macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
- Linux
sudo systemd-resolve --flush-caches
'정보보호' 카테고리의 다른 글
이메일 보안 기법(PGP, PEM, S/MIME) (0) | 2025.06.08 |
---|---|
리눅스 작업스케줄러 cron (0) | 2025.06.07 |
포트스캐닝 도구 nmap 사용 방법 및 스텔스 스캔 (0) | 2025.06.06 |
리눅스 /etc/passwd 파일 및 /etc/shadow 파일에 대한 개념 (0) | 2025.06.03 |
PKI OSCP(Online Certificate Status Protocol) 개념 (0) | 2025.05.31 |