8강 / 20강

DNS — 인터넷의 전화번호부

이름을 주소로 바꾸는 거대한 분업 체계

DNS — 인터넷의 전화번호부
손님은 이름을 외우고, 컴퓨터는 주소가 필요합니다. 그 사이를 잇는 것이 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) 이 그것이에요.

DNS 실험실 — 레코드를 직접 고치고 dig 로 확인해 보세요
불러오는 중…

운영자가 쓰는 레코드 다섯 개

타입뜻쇼핑몰에서 쓰는 예
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를 바꾸지 않고도 접속됩니다.

두 파일이 이름 풀이의 전부입니다.
🖥️ 내 가상 서버 브라우저 안에서 실행 (계산용)
위젯에서 네임서버를 지운 뒤 다시 실행해 보세요.
🖥️ 내 가상 서버 브라우저 안에서 실행 (계산용)
🤔 확인 문제
사이트를 새 서버로 옮기려 합니다. 가장 먼저 해야 할 일은?
🤔 확인 문제
ping 8.8.8.8 은 되는데 ping google.com 은 실패합니다. 범인은?