DNS
network
3분 읽기DNS
개념
- 컴퓨터는 IP로 통신하는데 사람이 외우기 힘드니까 도메인 이름을 씀
- DNS는
google.com같은 도메인을142.250.80.46같은 IP로 바꿔주는 전화번호부
조회 흐름
브라우저 입력
→ 내 컴퓨터 캐시 확인
→ /etc/hosts 확인
→ Resolver (ISP or 8.8.8.8) 에게 질문
→ Root 서버: ".com 담당은 저쪽이야"
→ TLD 서버: "google.com 담당은 저쪽이야"
→ Authoritative 서버: "142.250.80.46 이야"
→ IP 반환 → 연결
레코드 종류
| 레코드 | 연결 대상 | 언제 씀 |
|---|---|---|
| A | 도메인 → IPv4 | 기본 서버 연결 |
| AAAA | 도메인 → IPv6 | IPv6 지원 |
| CNAME | 도메인 → 도메인 | 별칭, Vercel/Netlify 같은 외부 서비스 연결 |
| MX | 메일 서버 지정 | 이메일 수신 |
| NS | 네임서버 지정 | DNS 정보 어느 서버가 갖고 있는지 |
| TXT | 텍스트 | 도메인 소유권 인증, 스팸 방지 |
캐싱 & TTL
- 매번 전체 조회하면 느리니까 결과를 캐시에 저장
- TTL = 캐시 유효 시간 (초 단위), 지나면 다시 조회
- IP 바꿔도 TTL 지나야 반영됨 → 도메인 이전할 때 TTL 먼저 줄이는 이유
실무에서 쓰는 상황
- 서비스 배포: 서버 IP 받으면 A 레코드 등록해서 도메인 연결
- 서브도메인:
api.myapp.com,admin.myapp.com각각 다른 서버로 연결 - 도메인 이전: 서버 바꿀 때 A 레코드 수정, TTL 때문에 바로 안 바뀜
- HTTPS 인증서: TXT 레코드로 도메인 소유권 증명
- 메일 설정: MX 레코드로 메일 서버 지정, TXT로 스팸 방지
- CDN: Cloudflare 붙일 때 NS를 Cloudflare로 위임
A 레코드 등록하면 끝이 아님
DNS는 첫 번째 단계일 뿐, 그 뒤에도 필요한 것들:
도메인 구매
→ A 레코드 등록 (DNS)
→ 웹서버 설정 (Nginx 등)
→ SSL 인증서 발급 (HTTPS)
→ 포트 오픈 (80, 443)
→ 끝
CNAME 패턴
myapp.com → A → 123.456.789.0
www.myapp.com → CNAME → myapp.com # IP 바뀌면 여기도 자동 반영
myapp.com → CNAME → cname.vercel-dns.com # Vercel 배포 시