사람은 www.example.com을 기억하지만 컴퓨터는 93.184.216.34 같은 숫자로만 통신한다. 이 둘 사이를 이어 주는 번역 시스템이 **DNS(Domain Name System)**다. 웹 브라우저에 주소를 입력하는 순간, 보이지 않는 곳에서 수많은 DNS 서버가 협력해 이름을 IP로 바꾸고, 그 결과로 우리가 페이지를 받아 본다. 오늘은 DNS의 계층 구조와 질의 흐름, 그리고 그것을 떠받치는 핵심 레코드(A, AAAA, MX, CNAME, NS, PTR, SOA)를 정밀하게 익힌다. 후반에는 리눅스의 대표 DNS 서버인 BIND를 직접 설정한다. named.conf의 구조, zone 파일의 SOA 필드, 정방향·역방향 영역을 손으로 만들어 보면 실기 단답 문제가 한눈에 들어온다.
핵심 통찰 하나를 먼저 가져가자: DNS는 거대한 분산 데이터베이스이며, 그 위임(delegation)의 사슬을 따라 질의가 흐른다. 루트에서 시작해 TLD를 거쳐 권한 서버에 도달하는 이 흐름을 이해하면, BIND 설정 파일의 모든 줄이 "이 위임 사슬의 어느 칸을 채우는가"로 읽힌다.
도메인 이름은 오른쪽에서 왼쪽으로 읽는 역(逆)트리 구조다. www.example.com.의 맨 끝에는 보이지 않는 점(.)이 있는데, 이것이 바로 **루트(root)**다.