Linux 네임서버 개요

Linux 네임서버 개요입니다. hosts 파일, resolver, 캐시 DNS, 권한 DNS, Primary/Secondary, Round Robin과 dig 기반 문제 확인 흐름을 정리했습니다.

Linux 네임서버 개요: DNS 이름 해석 흐름

네임서버는 사람이 기억하기 쉬운 도메인 이름을 실제 통신에 필요한 IP 주소로 바꿔주는 시스템이다. 이 과정을 이름 해석, 즉 name resolution이라고 한다. 실습은 hosts 파일에서 DNS 서버로 넘어가는 흐름, 캐시 네임서버, 마스터 네임서버, round robin 개념을 소개했으므로 여기서는 각 개념을 더 명확히 정리한다.

hosts 파일에서 DNS로

초기 네트워크에서는 각 PC가 hosts 파일에 이름과 IP를 직접 적어두고 사용했다. Linux는 /etc/hosts, Windows는 C:\Windows\System32\drivers\etc\hosts 파일을 사용한다.

192.168.10.193 web01.lab.local web01
192.168.10.192 ns1.lab.local ns1

장비가 몇 대 없으면 hosts 파일도 가능하지만, 서버가 늘어나면 모든 PC의 파일을 수정해야 한다. 이 문제를 해결하기 위해 이름 해석을 전문적으로 담당하는 DNS 서버를 사용한다.

이름 해석 순서

  1. 사용자가 브라우저에 www.example.com을 입력한다.
  2. OS resolver가 hosts 파일과 local cache를 먼저 확인한다.
  3. 로컬 네임서버에 질의한다.
  4. 로컬 네임서버는 cache에 없으면 root, TLD, 권한 DNS를 따라가며 답을 찾는다.
  5. 받은 IP 주소를 client에 돌려준다.
  6. client는 그 IP로 TCP/UDP 연결을 시작한다.

Linux resolver 설정

Linux에서 어떤 DNS 서버에 질의할지는 보통 NetworkManager가 관리하며, 결과는 /etc/resolv.conf에서 확인할 수 있다.

cat /etc/resolv.conf
nmcli dev show | grep -E 'IP4.DNS|IP4.DOMAIN'
resolvectl status 2>/dev/null || true

resolv.conf의 기본 형태는 다음과 같다.

search lab.local
nameserver 192.168.10.192
nameserver 1.1.1.1

캐시 네임서버

캐시 네임서버는 client 대신 외부 DNS 질의를 수행하고 결과를 일정 시간 보관한다. 같은 도메인을 반복해서 질의할 때 응답이 빨라지고, 내부 client들이 같은 resolver를 사용하므로 관리가 쉬워진다.

dig @192.168.10.192 www.google.com A
dig @192.168.10.192 www.google.com A +stats

캐시 DNS는 내부망에만 열어야 한다. 외부 전체에 recursion을 제공하면 open resolver가 되어 DNS amplification 같은 문제에 악용될 수 있다.

권한 네임서버

권한 네임서버는 특정 zone의 기준 값 record를 가지고 직접 응답한다. 예를 들어 lab.local zone을 관리하는 서버는 web01.lab.local, proxy.lab.local 같은 이름의 A record를 책임진다.

dig @192.168.10.192 lab.local SOA
dig @192.168.10.192 lab.local NS
dig @192.168.10.192 web01.lab.local A +short

Primary와 Secondary

실습에서 말하는 마스터 네임서버는 현재 표현으로 Primary DNS에 가깝다. Primary가 zone record을 관리하고, Secondary는 zone transfer를 통해 복제본을 받아 장애 시에도 응답할 수 있게 한다.

Round Robin DNS

Round Robin은 같은 이름에 여러 A record를 등록해 client가 여러 서버 IP를 번갈아 받도록 하는 방식이다. 단순 분산에는 도움이 되지만, 서버 상태를 정교하게 감지하는 load balancer는 아니다.

www IN A 192.168.10.193
www IN A 192.168.10.194
www IN A 192.168.10.195

응답 확인은 다음처럼 한다.

for i in {1..5}; do dig @192.168.10.192 www.lab.local A +short; done

DNS 문제를 볼 때

확인 단계명령
OS가 어떤 DNS를 쓰는지cat /etc/resolv.conf
특정 DNS 서버 응답dig @192.168.10.192 web01.lab.local
권한 DNS 추적dig web01.lab.local +trace
Windows clientResolve-DnsName web01.lab.local -Server 192.168.10.192

마무리

네임서버는 단순히 URL을 IP로 바꾸는 장치가 아니라, 네트워크 서비스 전체의 출발점이다. hosts 파일은 작은 환경에서만 적합하고, 실제 서버 실습에서는 캐시 DNS와 권한 DNS의 차이, resolver 설정, TTL, round robin의 한계를 함께 이해해야 한다.

문서 링크

BGM EVER