본문으로 건너뛰기

DNS란? 🌐

웹사이트 주소를 입력하면 어떻게 해당 사이트에 접속할 수 있을까요? 바로 DNS 덕분이에요! DNS가 무엇이고 어떻게 작동하는지 초보자도 쉽게 이해할 수 있도록 설명해드릴게요!

DNS를 일상생활로 비유하면?

DNS를 전화번호부로 비유해볼까요?

전화번호부 이야기 📞

친구에게 전화하고 싶을 때:

번호부 없이:
"010-1234-5678로 전화해야지..."
→ 번호 외우기 힘듦 😓

번호부 사용:
"홍길동"이라고 검색
→ 번호부가 010-1234-5678 알려줌
→ 자동으로 전화 연결! ✅

DNS도 똑같아요!

웹사이트 접속:

DNS 없이:
"192.168.1.1로 접속해야지..."
→ 숫자 IP 외우기 불가능 😓

DNS 사용:
"google.com"이라고 입력
→ DNS가 172.217.175.46 알려줌
→ 자동으로 사이트 연결! ✅

DNS의 정의

DNS (Domain Name System)

  • 도메인 이름을 IP 주소로 변환하는 시스템
  • 인터넷의 "전화번호부"
  • 사람이 읽기 쉬운 주소를 컴퓨터가 이해하는 숫자로 변환
google.com → 172.217.175.46
naver.com → 223.130.195.95

왜 DNS가 필요할까?

문제: IP 주소는 기억하기 어려워요

❌ 192.168.1.1
❌ 172.217.175.46
❌ 223.130.195.95

→ 숫자만으로는 어떤 사이트인지 알 수 없음
→ 외우기 불가능

해결: 도메인 이름 사용

✅ google.com
✅ naver.com
✅ github.com

→ 의미 있고 기억하기 쉬움
→ 브랜드 이름 사용 가능

DNS 작동 과정

1. 브라우저에 주소 입력

사용자: "google.com" 입력

2. DNS 조회 시작

브라우저 → DNS 서버: "google.com의 IP 주소 알려줘"

3. DNS 서버 계층 구조

1. Root DNS (루트)

2. TLD DNS (.com, .net 등)

3. Authoritative DNS (실제 IP 보유)

4. IP 주소 반환

4. IP 주소로 접속

DNS 서버 → 브라우저: "172.217.175.46이야"
브라우저 → 172.217.175.46: 연결 요청
웹사이트 로딩! ✅

DNS 조회 상세 과정

1. 캐시 확인
브라우저 캐시 → OS 캐시 → 라우터 캐시
└─ 있으면 바로 사용 ⚡

2. Recursive DNS (통신사 DNS)
└─ ISP의 DNS 서버에 문의

3. Root DNS Server
└─ ".com은 여기로 가" 알려줌

4. TLD DNS Server (.com)
└─ "google.com은 여기로 가" 알려줌

5. Authoritative DNS
└─ "google.com의 IP는 172.217.175.46"

6. 결과 캐싱
└─ 나중을 위해 저장

DNS 레코드 종류

A 레코드 (Address)

도메인 → IPv4 주소

example.com → 192.168.1.1

AAAA 레코드

도메인 → IPv6 주소

example.com → 2001:0db8:85a3::8a2e:0370:7334

CNAME 레코드 (Canonical Name)

별칭 → 다른 도메인

www.example.com → example.com
blog.example.com → example.com

MX 레코드 (Mail Exchange)

이메일 서버 지정

example.com → mail.example.com (우선순위 10)

TXT 레코드

텍스트 정보 저장
주로 소유권 확인, SPF, DKIM 등

example.com → "v=spf1 include:_spf.google.com ~all"

NS 레코드 (Name Server)

네임서버 지정

example.com → ns1.example.com

DNS 캐싱

캐시 계층

1. 브라우저 캐시
└─ 가장 빠름 (1ms)

2. OS 캐시
└─ 매우 빠름 (5ms)

3. 라우터 캐시
└─ 빠름 (10ms)

4. ISP DNS 캐시
└─ 보통 (50ms)

5. 실제 DNS 조회
└─ 느림 (200ms+)

TTL (Time To Live)

DNS 레코드마다 유효 기간 설정

TTL: 3600 (1시간)
→ 1시간 동안 캐시 사용
→ 1시간 후 다시 조회

장점:

  • 빠른 응답
  • DNS 서버 부하 감소

단점:

  • IP 변경 시 즉시 반영 안 됨

DNS 서버 종류

1. Public DNS (공개 DNS)

Google DNS:

Primary: 8.8.8.8
Secondary: 8.8.4.4

→ 빠르고 신뢰성 높음

Cloudflare DNS:

Primary: 1.1.1.1
Secondary: 1.0.0.1

→ 가장 빠른 속도
→ 프라이버시 중시

Quad9:

9.9.9.9

→ 보안 중시 (악성 사이트 차단)

2. ISP DNS (통신사 DNS)

KT, SK, LG 등 제공
→ 자동 설정됨
→ 느린 경우 많음

DNS 보안

DNS Spoofing (DNS 스푸핑)

공격:

해커가 DNS 응답 조작
google.com → 해커 서버 IP

사용자는 가짜 사이트 접속
→ 정보 탈취 위험 🚨

방어:

DNSSEC (DNS Security Extensions)
→ DNS 응답 암호화 및 검증

DNS over HTTPS (DoH)

DNS 쿼리를 HTTPS로 암호화
→ 통신사나 해커가 조회 내용 못 봄
→ 프라이버시 보호 🔒

DNS over TLS (DoT)

DNS 쿼리를 TLS로 암호화
→ DoH와 비슷하지만 다른 프로토콜

DNS 설정 변경하기

Windows

1. 제어판 → 네트워크 및 인터넷
2. 네트워크 연결 → 속성
3. 인터넷 프로토콜 버전 4 (TCP/IPv4)
4. "다음 DNS 서버 주소 사용" 선택
5. 기본: 8.8.8.8
보조: 8.8.4.4

Mac

1. 시스템 환경설정 → 네트워크
2. 고급 → DNS 탭
3. + 버튼으로 DNS 서버 추가
8.8.8.8
8.8.4.4

라우터

1. 라우터 관리 페이지 접속 (보통 192.168.0.1)
2. 네트워크 설정
3. DNS 서버 설정
Primary: 8.8.8.8
Secondary: 8.8.4.4

DNS 문제 해결

증상: 웹사이트가 안 열려요

1. DNS 캐시 삭제

Windows:

ipconfig /flushdns

Mac:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

Linux:

sudo systemd-resolve --flush-caches

2. DNS 서버 변경

Google DNS (8.8.8.8)로 변경
→ ISP DNS 문제 우회

3. nslookup으로 확인

nslookup google.com

→ DNS 조회가 정상인지 확인

실제 사용 예시

예시 1: 웹사이트 접속

1. 브라우저에 "naver.com" 입력
2. DNS 조회: naver.com → 223.130.195.95
3. 223.130.195.95에 HTTP 요청
4. 네이버 페이지 로딩! ✅

예시 2: 서브도메인

blog.example.com
mail.example.com
api.example.com

각각 다른 IP 주소 가질 수 있음
→ 다른 서버에 호스팅 가능

예시 3: CDN

example.com → CDN 서버 IP

DNS가 사용자 위치에 따라
가장 가까운 CDN 서버 IP 반환
→ 빠른 로딩 ⚡

도메인 구매와 DNS 설정

1. 도메인 구매

가비아, Namecheap, GoDaddy 등에서 구매
예: mywebsite.com (연간 1-2만원)

2. 네임서버 설정

호스팅 업체의 네임서버로 변경
예: Cloudflare 사용 시
ns1.cloudflare.com
ns2.cloudflare.com

3. DNS 레코드 추가

A 레코드 추가:
mywebsite.com → 서버 IP 주소

CNAME 추가:
www → mywebsite.com

자주 묻는 질문 (FAQ)

Q1: DNS 조회는 얼마나 걸리나요?

A:

  • 캐시 hit: 1-10ms (매우 빠름)
  • 캐시 miss: 50-200ms (보통)
  • 느린 경우: 500ms+ (ISP DNS 문제)

Q2: DNS를 왜 바꾸나요?

A: 여러 이유가 있어요:

  • 속도 향상 (구글 DNS가 ISP DNS보다 빠름)
  • 안정성 (ISP DNS 장애 우회)
  • 보안 (악성 사이트 차단)
  • 프라이버시 (DoH, DoT 사용)

Q3: DNS 캐시는 자동으로 지워지나요?

A: 네! TTL 시간이 지나면 자동 삭제돼요.

  • 브라우저: 몇 분
  • OS: 몇 시간
  • ISP: 1-2일

Q4: 도메인 변경 후 왜 바로 안 바뀌나요?

A: DNS 전파 시간 때문이에요.

  • 전 세계 DNS 서버에 퍼지는 시간
  • 보통 24-48시간
  • TTL을 짧게 설정하면 빠름

Q5: 무료 도메인이 있나요?

A: 제한적으로 있어요:

  • .tk, .ml, .ga (Freenom) - 무료
  • GitHub Pages: username.github.io
  • Vercel: project.vercel.app

DNS 성능 최적화

1. DNS Prefetching

<link rel="dns-prefetch" href="//cdn.example.com">
<link rel="dns-prefetch" href="//api.example.com">

→ 페이지 로드 전 DNS 미리 조회

2. 빠른 DNS 사용

Google DNS (8.8.8.8)
Cloudflare (1.1.1.1)
→ ISP DNS보다 빠름

3. TTL 최적화

자주 바뀌는 레코드: TTL 짧게 (300초)
고정 레코드: TTL 길게 (86400초)

다음 단계 🚀

DNS를 이해했다면:

  1. URL 구조 알아보기 - 도메인이 URL의 일부
  2. HTTP 요청/응답 이해하기 - DNS 후 HTTP 통신
  3. HTTPS와 SSL/TLS란? - 보안 통신
  4. IP Lookup - 도메인의 IP 확인

마무리

DNS는 인터넷의 전화번호부예요! 📞

기억할 포인트:

  • DNS = 도메인 → IP 주소 변환
  • google.com → 172.217.175.46
  • 캐싱으로 빠른 속도
  • Public DNS (8.8.8.8) 추천
  • DNSSEC, DoH로 보안 강화

DNS 덕분에 우리는 숫자 대신 의미 있는 이름으로 웹사이트를 방문할 수 있어요! 🌐