콘텐츠로 이동

DNS와 NameServer: 개념 이해 및 리눅스 설정 가이드

인터넷의 이정표 역할을 하는 DNS(Domain Name System)와 이를 운영하는 NameServer의 개념, 차이점, 그리고 리눅스 환경에서의 설정 방법을 정리합니다.


1. 기본 개념 정의

1.1 DNS (Domain Name System)

  • 정의: 사람이 읽기 쉬운 도메인 이름(예: google.com)을 컴퓨터가 이해하는 IP 주소(예: 142.250.190.46)로 변환해주는 분산형 데이터베이스 시스템입니다.
  • 비유: 전화번호부와 같습니다. 이름(도메인)을 찾으면 번호(IP)를 알려줍니다.

1.2 NameServer (네임서버)

  • 정의: DNS 시스템 내에서 실제 도메인 정보를 저장하고 질의에 응답하는 서버(S/W 및 하드웨어)를 말합니다.
  • 역할: "이 도메인의 IP는 무엇인가?"라는 질문에 대해 자신의 데이터베이스를 찾아 답변을 주는 주체입니다.

2. DNS vs NameServer 차이점

구분 DNS NameServer
성격 시스템 및 프로토콜 (개념) 실제 정보를 가진 서버 (실체)
범위 전 세계적인 거대한 변환 체계 DNS 체계를 구성하는 개별 서버 단위
예시 "DNS를 통해 도메인을 찾는다" "가비아 네임서버에 정보를 등록한다"

3. 리눅스 DNS 설정 방법

리눅스에서 DNS 서버를 지정하는 방법은 배포판과 버전에 따라 크게 3가지로 나뉩니다.

3.1 /etc/resolv.conf (가장 기본적인 방법)

가장 원시적이고 직접적인 설정 파일입니다.

# /etc/resolv.conf 수정
nameserver 8.8.8.8  # Google Public DNS
nameserver 1.1.1.1  # Cloudflare DNS

3.2 systemd-resolved (최신 Ubuntu/CentOS 등)

현대적인 리눅스 배포판은 네트워크 매니저가 /etc/resolv.conf를 자동 관리하므로, 직접 수정하면 재부팅 시 초기화될 수 있습니다.

  • 설정 경로: /etc/systemd/resolved.conf
    [Resolve]
    DNS=8.8.8.8 1.1.1.1
    
    수정 후 서비스 재시작: systemctl restart systemd-resolved

3.3 netplan (Ubuntu 18.04+)

YAML 파일을 통해 네트워크 설정을 관리합니다.

  • 경로: /etc/netplan/*.yaml
    network:
      ethernets:
        eth0:
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]
    
    적용: netplan apply

4. 설정 시 주의사항 (Best Practices)

  1. 우선순위 주의: nameserver는 위에서부터 순서대로 질의합니다. 첫 번째 서버가 응답이 없어야 두 번째 서버로 넘어갑니다. (응답은 오는데 결과가 '없음'인 경우는 다음 서버로 가지 않습니다.)
  2. 자동 초기화 방지: /etc/resolv.conf 상단에 Generated by... 문구가 있다면 직접 수정하지 마세요. NetworkManager나 Netplan 설정을 통해 변경해야 합니다.
  3. 이중화 필수: 반드시 2개 이상의 DNS 서버를 설정하세요. (Master/Slave 구조)
  4. Local Caching DNS: 빈번한 질의가 발생하는 서버라면 nscdunbound 등을 사용하여 로컬 캐싱을 적용해 성능을 높이는 것이 좋습니다.

5. 주요 확인 명령어

  • dig google.com: 상세한 DNS 질의 과정을 확인.
  • nslookup google.com: 간단하게 IP 변환 결과 확인.
  • host -t ns google.com: 해당 도메인의 네임서버(NS) 레코드 확인.