본문으로 건너뛰기

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 덕분에 우리는 숫자 대신 의미 있는 이름으로 웹사이트를 방문할 수 있어요! 🌐