글 목록으로 돌아가기

Linux

DNS

DNS 개념, hosts 파일, DNS 서버 설치 및 설정 정리

Dohyeon Kim
Dohyeon Kim 2026년 7월 28일 · 3분 읽기
Linux AutoEverSW

1) 개요


DNS(Domain Name Service)

  • 문자로 된 주소를 컴퓨터가 이해할 수 있는 IP 주소로 변환해주는 시스템
  • 이 과정을 resolution이라고 함
  • 문자로 된 주소를 IP로 변환해주는 컴퓨터 → Name Server 또는 DNS Server
  • IP 주소를 직접 사용하면 변환 과정이 생략되므로 인터넷 속도가 빨라질 수 있음

2) hosts 파일


역할

  • 도메인 이름을 IP 주소에 직접 매핑하는 로컬 DNS 파일
  • 도메인을 IP 주소로 로컬에서 강제 지정
    • 127.0.0.1 localhostlocalhost 입력 시 127.0.0.1로 해석 (DNS 조회 생략)

파일 위치

  • Linux/Mac OS: /etc/hosts
  • Windows: c:\Windows\System32\drivers\etc\hosts

특정 사이트 차단

  • 0.0.0.0은 접속할 수 없는 IP이므로 연결 즉시 끊김 → 사이트 차단에 활용

hosts 파일 수정 후 체크

  • DNS 캐시 삭제 권장
# Linux
sudo systemctl restart systemd-resolved

# Windows
ipconfig /flushdns

hosts와 Name Server 우선 순위

  1. hosts 파일
  2. DNS Cache
  3. DNS Server

운영 서버에서 hosts 사용을 피해야 하는 이유

  • DNS 변경이 반영되지 않을 수 있음
    • DNS에서 서버 IP 변경 시 /etc/hosts에 기록되어 있으면 변경 적용 안 됨
    • 서버 간 통신 장애나 특정 서버에서만 장애 발생
  • 서버마다 설정이 달라짐
    • 동일 애플리케이션을 여러 대에 배포 시 일관성 붕괴
  • 장애 발생 시 원인 추적이 극도로 어려움
    • SSH/API/DB 등이 간헐적으로 실패 → 네트워크 문제로 오인
  • 서버 교체 또는 오토스케일링과 충돌
    • 클라우드 환경(Auto Scaling, Immutable Infrastructure, Blue/Green 배포)에서 새 서버에는 hosts가 없음
    • 기존 서버만 제대로 동작, 배포 직후 일부 서버만 장애
  • 보안 사고 위험
    • 인증 서버를 가짜 서버로 유도 가능 (내부자 공격)
  • 운영 자동화 도구와 충돌
    • Ansible, Terraform, Kubernetes, CI/CD 파이프라인과 충돌
    • 인프라는 DNS 기준, hosts는 로컬 수동 설정
  • IPv4/IPv6 우선 순위 문제
    • SSH가 IPv6 먼저 시도, 서버는 IPv4만 리슨 → timeout/hang 발생

허용하는 경우

  • 로컬 개발 PC
  • 개인 테스트 서버
  • 단기 장애 우회 (장애 해결 후 즉시 복구)

3) DNS 주요 구성 요소


  • DNS Recursive Resolver
    • 사용자로부터 쿼리를 받는 첫 번째 지점
    • 요청을 받아 실제 주소를 찾음
  • Root Name Server
    • 호스트 이름을 IP 주소로 변환하는 첫 번째 단계
    • .com, .net 등의 TLD 서버 위치를 알려줌
  • TLD Nameserver (최상위 네임 서버)
    • .com, .org, .kr 등 도메인의 확장자 관리
    • 구체적인 도메인 정보를 가진 네임서버로 안내
  • Authoritative Nameserver
    • 실제 IP 주소가 저장된 최종 목적지
    • 정확한 IP 주소를 알려줌

4) DNS 레코드 종류


레코드 설명
A Record 도메인을 IPv4 주소와 연결 (가장 기본)
AAAA Record 도메인을 IPv6와 연결
CNAME 한 도메인을 다른 도메인으로 연결
MX Record 해당 도메인의 이메일을 수신할 메일 서버 지정
TXT Record 도메인에 대한 텍스트 정보, 보안 인증에 사용

5) DNS Caching


  • 매번 동일한 조회 과정을 거치면 속도가 느려지므로 한 번 찾은 주소는 일정 기간 저장
  • 다음 접속 시 DNS Server에 문의하지 않고 컴퓨터 내부에 저장된 기록(브라우저/OS 캐싱)으로 접속
  • TTL(Time To Live): DNS 레코드가 캐시에 저장되는 유효 기간

6) DNS 서버 설정


설정 방법

  • /etc/netplan 디렉토리의 YAML 파일
  • /etc/resolv.conf 파일

IP 주소를 찾아가는 흐름

  1. URL 입력
  2. /etc/host.conf 조회
  3. /etc/hosts 확인
    • 있으면 IP 주소 획득 후 접속
    • 없으면 /etc/resolv.conf → 네임서버 설정 존재 시 질의 → 응답
    • 네임서버 설정이 없으면 호스트 이름을 알 수 없다는 에러 발생

7) 도메인 이름 체계


  • 트리 구조
  • Root Name Servercom, net, org, edu 등 및 국가 도메인(kr, fr, uk, sp) 관리
  • com Name Servernaver, google 등 2단계 도메인 관리

8) Name Server 설치 및 설정


설치

sudo apt update
sudo apt install bind9 bind9-utils bind9-doc -y
sudo systemctl status bind9

설정 파일 수정

sudo vi /etc/bind/named.conf.options
options {
    directory "/var/cache/bind";
    dnssec-validation no;
    recursion yes;
    allow-query { any; };
    listen-on-v6 { any; };
};

서비스 관리

# 서비스 재시작
sudo systemctl restart named

# 부팅 시 자동 시작
sudo systemctl enable named

# 서비스 확인
sudo systemctl status named

# 방화벽 해제 (DNS 포트)
sudo ufw allow 53

네임 서버 동작 확인

dig @네임서버IP URL

클라이언트 설정

  • 다른 컴퓨터의 /etc/resolv.conf 파일에서 nameserver 항목을 현재 컴퓨터 IP로 수정

  • 콘솔 환경에서 사용할 수 있는 텍스트 기반 웹 브라우저

댓글