티스토리 뷰

개요

  • dnsmasq는 경량의 리눅스 DNS 캐시 서버(또한 스스로 사설 DNS 서버이자 DHCP 서버로도 작동)이다. 리눅스는 기본적으로 DNS 캐시를 수행하지 않는데, dnsmasq를 적절히 활용하면 반복적인 DNS 질의시 발생할 수 있는 CPU와 네트워크의 부하를 줄일 수 있다. 이 글에서는 CentOS 6/7에서 dnsmasq를 설치하고 적용하는 법을 설명하고자 한다.
  • 내 경우, 서버 증설이나 변경시 네임 서버에 의존하지 않고, 원하는 시점에 바로 해당 도메인의 IP 주소를 맵핑하는 목적으로도 유용하게 사용하고 있다. DNS 캐시 서버로 충분한 안정성 테스트 후 최종적으로 네임 서버에 A 레코드를 변경하는 것이다.

퍼블릭 DNS 서버

  • DNS 캐시 서버를 설치해도, 최종적으로는 퍼블릭 DNS 서버에 질의해야 한다. 주요 목록은 아래와 같다.
# KT
168.126.63.1
168.126.63.2

# Google
8.8.8.8
8.8.4.4

# Cloudflare
1.1.1.1

DNS 캐시와 TTL

  • 일반적으로, DNS 정보 등록시 CNAME 또는 A 레코드를 등록하게 되는데, 이 때 TTL 정보 또한 같이 등록하게 된다. 3,600이면 1시간, 86,400이면 1일이 되는데 이 의미는 DNS 질의를 하는 클라이언트 입장에서 최초 질의로 획득한 DNS 정보를 어느 기간 동안 캐시할지를 결정하는 기준값으로 사용된다. (리눅스의 경우, 별도의 DNS 캐시 서버를 설치하지 않으면, TTL을 무시하고 매번 질의하여 DNS 질의 트래픽을 유발한다.)

설치된 DNS 캐시 서버 확인

  • 리눅스에서 주로 사용되는 DNS 캐시 서버로는 nscd, dnsmasq, named가 있다. 사전에 해당 서비스가 설치되어 실행 중인지 확인하는 작업이 필요하다.
$ sudo service nscd status
nscd: 인식되지 않은 서비스

$ sudo service dnsmasq status
dnsmasq: 인식되지 않은 서비스

$ sudo service named status
named: 인식되지 않은 서비스

DNS 캐시 서버 설치

  • DNS 캐시 서버를 설치하는 방법은 아래와 같다.
# DNS 캐시 서버 설치
$ sudo yum install dnsmasq

# nslookup, dig DNS 질의 도구 설치
$ sudo yum install bind-utils

DNS 캐시 서버 적용

  • DNS 캐시 서버를 적용하는 방법은 아래와 같다.
# DNS 캐시할 목록 작성
$ sudo nano /etc/hosts
127.0.0.1 localhost
::1 localhost
{SOME_IP_ADDRESS_1} example.foo.com
{SOME_IP_ADDRESS_2} example.bar.com

# 설치한 DNS 캐시 서버로 DNS 질의되도록 지정
$ sudo nano /etc/resolv.conf
nameserver 127.0.0.1

# DNS 캐시 서버에 없는 도메인 요청을 질의할 DNS 서버를 지정
$ sudo nano /etc/resolv.dnsmasq
nameserver 8.8.8.8
nameserver 8.8.4.4

$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
$ sudo nano /etc/dnsmasq.conf
resolv-file=/etc/resolv.dnsmasq

# DNS 캐시 서버 재시작
# DNS 캐시를 초기화하는 역할도 수행
$ sudo service dnsmasq restart

# DNS 캐시 서버 자동 시작 활성화
$ sudo chkconfig dnsmasq on

# DNS 캐시 서버 동작 확인
$ nslookup example.foo.com

# DNS 캐시 서버 동작 확인 (TTL 정보까지 확인)
$ dig example.foo.com

참고 글

댓글
댓글쓰기 폼