DNS란 무엇인가?
DNS(Domain Name System)는 인터넷의 전화번호부 역할을 합니다. 사용자는 도메인 이름(nytimes.com, google.com 등)을 통해 웹사이트에 접근하지만, 실제로는 이 도메인 이름이 IP 주소로 변환되어야 인터넷 자원에 접근할 수 있습니다. DNS는 이 과정을 자동으로 처리합니다.
📌 DNS의 필요성
- 각 기기는 고유의 IP 주소를 가짐
- 사람이 IP 주소를 기억하는 것은 어렵기 때문에 도메인 사용
- DNS는 사람이 입력한 도메인을 컴퓨터가 이해할 수 있는 IP 주소로 변환
🔁 DNS 작동 원리 요약 (8단계)
1. 사용자가 브라우저에 example.com 입력
2. 재귀 DNS 확인자가 요청 수신
3. 루트 네임서버에 쿼리
4. 루트 서버 → .com TLD 서버 주소 반환
5. 확인자 → TLD 서버 쿼리
6. TLD 서버 → example.com의 권한 있는 네임서버 주소 반환
7. 확인자 → 권한 있는 네임서버에 쿼리
8. example.com의 IP 주소를 응답 받아 브라우저에 전달 → 웹 요청 가능
주요 DNS 서버 종류
| 서버 종류 | 설명 |
|---|
| 재귀 확인자 | 사용자의 요청을 수신하고 IP를 찾기 위해 여러 DNS 서버에 요청함 |
| 루트 이름 서버 | 최상위 DNS 서버. TLD 서버 위치를 알려줌 |
| TLD 이름 서버 | .com, .net 등의 최상위 도메인 서버 |
| 권한 있는 이름 서버 | 최종 목적지 서버. 도메인의 실제 IP 주소 보유 |
재귀 확인자 vs 권한 있는 서버
| 구분 | 설명 |
|---|
| 재귀 확인자 | 클라이언트 요청 수신 후 필요한 IP를 찾기 위해 DNS 체인을 따라가며 요청함 |
| 권한 있는 서버 | 실제 DNS 레코드를 보유한 서버. 최종 응답을 제공 |
DNS 쿼리 유형
| 쿼리 유형 | 설명 |
|---|
| 재귀 쿼리 | 확인자가 최종 결과를 찾을 때까지 전체 요청 처리 |
| 반복 쿼리 | 가능한 정보를 반환하고, 나머지 요청은 클라이언트가 이어서 수행 |
| 비재귀 쿼리 | 서버가 이미 레코드를 갖고 있거나 캐시에서 응답할 수 있을 때 사용 |
DNS 캐싱
DNS 조회 성능 향상을 위해 응답을 캐시(임시 저장)함. 캐싱은 다음 위치에서 발생할 수 있음:
- 브라우저 캐시 (가장 빠름)
- 운영체제 캐시 (Stub Resolver)
- ISP의 재귀 확인자 캐시
TTL(Time-To-Live) 값을 기준으로 일정 시간 동안 유지됨.
DNS 구성 요소 요약
| 레코드 종류 | 설명 |
|---|
| A 레코드 | 도메인 → IPv4 주소 |
| AAAA 레코드 | 도메인 → IPv6 주소 |
| CNAME | 도메인 → 다른 도메인 (별칭) |
| MX | 메일 서버 정보 |
| NS | 네임서버 정보 |
| TXT | SPF, 인증 정보 등 텍스트 저장 |
보안 관련 기능
| 기술 | 설명 |
|---|
| DNSSEC | 응답 위변조 방지 (디지털 서명 기반 검증) |
| DoH | DNS 요청 암호화를 통해 프라이버시 보호 |
주요 DNS 공격 유형
| 공격 유형 | 설명 |
|---|
| DNS 스푸핑 | 가짜 IP 응답으로 사용자 유도 |
| 캐시 포이즈닝 | DNS 캐시에 악의적인 정보 삽입 |
| DDoS 증폭 공격 | DNS를 이용해 공격 트래픽을 증폭시켜 공격 대상에 전달 |
| DNS 터널링 | DNS 프로토콜을 악용한 데이터 유출 채널 |
DNS는 단순한 주소 변환 시스템을 넘어서 웹의 속도, 보안, 신뢰성에 핵심적인 역할을 합니다. 따라서 DNS에 대한 이해는 클라우드, 네트워크, 보안 모두에서 필수입니다.