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를 이해했다면:
- ✅ URL 구조 알아보기 - 도메인이 URL의 일부
- ✅ HTTP 요청/응답 이해하기 - DNS 후 HTTP 통신
- ✅ HTTPS와 SSL/TLS란? - 보안 통신
- ✅ IP Lookup - 도메인의 IP 확인
마무리
DNS는 인터넷의 전화번호부예요! 📞
기억할 포인트:
- DNS = 도메인 → IP 주소 변환
- google.com → 172.217.175.46
- 캐싱으로 빠른 속도
- Public DNS (8.8.8.8) 추천
- DNSSEC, DoH로 보안 강화
DNS 덕분에 우리는 숫자 대신 의미 있는 이름으로 웹사이트를 방문할 수 있어요! 🌐