8강 / 20강
DNS — 인터넷의 전화번호부
이름을 주소로 바꾸는 거대한 분업 체계
손님은 203.0.113.7 을 외우지 않습니다. mallshop.kr 을 칩니다.
누군가 이 이름을 주소로 바꿔 줘야 해요. 그 일을 하는 것이 DNS입니다.
재미있는 것은, 이 거대한 전화번호부를 한 곳에서 관리하지 않는다는 점입니다. 전 세계가 나눠서 관리해요. 우리 도메인의 주소는 우리가 정합니다.
루트부터 한 계단씩 내려가며 물어보는 과정입니다.
💻 손님 노트북
브라우저 안에서 실행 (계산용)
계단을 내려가는 질의
1 손님 PC → 통신사 DNS 서버에게 "mallshop.kr 어디예요?"
2 통신사 DNS → 루트 서버 "kr 담당이 누구죠?" → "b.dns.kr 요"
3 통신사 DNS → b.dns.kr "mallshop.kr 담당이 누구죠?" → "ns1.mallshop.kr 요"
4 통신사 DNS → ns1.mallshop.kr "주소 알려 주세요" → "203.0.113.7"
5 통신사 DNS → 손님 PC "203.0.113.7 입니다" (그리고 TTL 만큼 외워 둡니다)
손님을 대신해 이 계단을 다 내려가 주는 서버를 재귀 리졸버라고 합니다.
통신사 DNS, 8.8.8.8(구글), 1.1.1.1(Cloudflare) 이 그것이에요.
운영자가 쓰는 레코드 다섯 개
| 타입 | 뜻 | 쇼핑몰에서 쓰는 예 |
|---|---|---|
A | 이름 → IPv4 주소 | mallshop.kr → 203.0.113.7 |
AAAA | 이름 → IPv6 주소 | IPv6 회선이 있을 때 |
CNAME | 이름 → 다른 이름 (별명) | www → mallshop.kr |
MX | 이 도메인의 메일은 어디로 | 주문 확인 메일 발송 |
TXT | 아무 글자나 | SPF·소유권 증명·인증서 발급 확인 |
www 는 CNAME — 별명을 따라 진짜 이름으로 다시 찾아갑니다.
💻 손님 노트북
브라우저 안에서 실행 (계산용)
서버가 이름을 푸는 순서
우분투 서버는 이름을 물어볼 때 DNS부터 보지 않습니다.
1
/etc/hosts 파일에 적혀 있나? → 있으면 거기서 끝↓ 없으면
2
/etc/resolv.conf 의 네임서버에게 물어본다이 순서를 알면 유용한 기술이 하나 생깁니다. 새 서버로 이사하기 전에 내 노트북에서만 새 서버를 미리 테스트할 수 있어요. hosts 파일에 새 IP를 적어 두면 DNS를 바꾸지 않고도 접속됩니다.
두 파일이 이름 풀이의 전부입니다.
🖥️ 내 가상 서버
브라우저 안에서 실행 (계산용)
위젯에서 네임서버를 지운 뒤 다시 실행해 보세요.
🖥️ 내 가상 서버
브라우저 안에서 실행 (계산용)
🤔 확인 문제
사이트를 새 서버로 옮기려 합니다. 가장 먼저 해야 할 일은?
해설 TTL이 긴 상태로 IP를 바꾸면 TTL이 만료될 때까지 일부 손님은 옛 서버로 갑니다. 옛 서버를 끄면 그 손님들은 접속 불가예요. 이사는 TTL 낮추기 → 기다리기 → IP 변경 → 안정 후 TTL 복구 순서입니다.
🤔 확인 문제
ping 8.8.8.8 은 되는데 ping google.com 은 실패합니다. 범인은?해설 IP로 나가는 길은 멀쩡하다는 것이 증명되었습니다. 이름만 못 푸는 것이니
/etc/resolv.conf 의 네임서버가 비었거나 죽은 것입니다.