DNS 서버 · 3 min read · Oct 02, 2025

CentOS 7에 빠르고 가벼운 DNS 서버 MaraDNS 설치하는 방법

MaraDNS는 작고 무료이며 가벼운 도메인 이름 서버입니다. 캐싱, 재귀 또는 권위 있는 네임서버로 작동하는 대안 오픈 소스 DNS 서버입니다. 구성하기가 매우 쉽고 Linux 및 Windows 플랫폼에서 사용할 수 있습니다. 여기에서 다운로드할 수 있습니다. DNS, 재귀 DNS, 권위 있는 DNS에 대해 더 읽어보실 수 있습니다.

아래는 MarDNS의 몇 가지 흥미로운 특성입니다:

  • 설치가 용이
  • 낮은 메모리 사용량 (약 5MB의 RAM 사용)
  • 권위 있는 네임서버 및 재귀 네임서버로 작동할 수 있습니다.
  • 놓치지 말아야 할 점은 MaraDNS 웹사이트의 문서가 매우 이해하기 쉽다는 것입니다.

이제 CentOS 7에서 MaraDNS를 시작해 보겠습니다. 아래 단계는 MaraDNS의 설치 및 구성에 대해 안내합니다:

MaraDNS 설치

현재 CentOS 7용 MaraDNS의 RPM은 제공되지 않으므로 소스에서 설치하고 컴파일할 것입니다.

gcc 설치:

sudo yum install gcc

최신 소스 아카이브를 여기에서 다운로드합니다. 다음과 같이 할 수 있습니다:

wget http://maradns.samiam.org/download/2.0/2.0.11/maradns-2.0.11.tar.bz2

아카이브의 내용을 추출합니다:

tar -xjf maradns-2.0.11.tar.bz2

추출된 MaraDNS 디렉토리로 변경하고 프로그램을 컴파일 및 설치합니다:

cd maradns-2.0.11
sudo make
sudo make install

이제 MaraDNS가 설치되었습니다. MaraDNS 서비스는 /etc/init.d/maradns에 설치됩니다. 다음과 같이 서비스를 시작할 수 있습니다:

sudo /etc/init.d/maradns start

재귀 데몬을 시작하려면 다음을 실행합니다:

sudo /etc/init.d/maradns.deadwood start

기본적으로 권위 있는 네임서버는 포트 127.0.0.1에서 수신하고 재귀 네임서버는 포트 127.0.0.2에서 수신합니다.

부팅 시 MaraDNS를 시작하도록 설정합시다:

chkconfig maradns on

재귀 DNS 서버의 init 스크립트는 시작 시 실행되도록 chkconfig와 호환되도록 만들어야 합니다. /etc/init.d/maradns.deadwood 파일의 맨 위에 아래 내용을 추가합니다:

# chkconfig: - 55 45  
# description: MaraDNS는 안전한 도메인 이름 서버(DNS)입니다.  
# probe: true

부팅 시 실행되도록 설정합니다:

chkconfig maradns.deadwood on

MaraDNS를 권위 있는 네임서버로 구성하기

권위 있는 DNS 서버는 주어진 도메인에 대한 URL과 IP의 매핑을 “알고” 있습니다. 이들은 재귀 DNS 서버가 브라우저(Chrome, Firefox)와 같은 웹 클라이언트에 전송하는 정보의 출처입니다. MaraDNS를 권위 있는 네임서버로 구성할 수 있습니다:

MaraDNS의 구성 파일인 /etc/mararc를 편집합니다:

ipv4_bind_addresses = "127.0.0.1"
chroot_dir = "/etc/maradns"  
csv2 = {}
csv2["example.net."] = "db.example.net"

첫 번째 줄은 MaraDNS가 IP- 127.0.0.1에서 수신하도록 지시합니다. 더 많은 IP를 추가할 수 있으며, 쉼표로 구분합니다. 예: 127.0.0.1, x.x.x.x

두 번째 줄의 chroot_dir은 모든 존 파일이 저장될 디렉토리를 지정합니다.

세 번째 줄은 csv2 해시를 csv2 = {} 명령으로 초기화합니다.

네 번째 줄은 도메인 이름 example.net에 대한 존 파일 이름 db.example.net을 언급합니다.

다음은 도메인 이름 example.net에 대한 존 파일 db.example.net입니다. 이는 자명합니다:

example.net.      +14400    soa    ns1.example.net. [email protected]. 2012010117 14400 3600 604800 14400 ~ 
example.net.      +14400    ns     ns1.example.net. ~ 
example.net.      +14400    ns     ns2.example.net. ~ 
ns1.example.net.  +14400    a      127.0.0.1 ~ 
ns2.example.net.  +14400    a      127.0.0.1 ~ 
example.net.      +14400    a      127.0.0.1 ~ 
www.example.net.  +14400    a      127.0.0.1 ~ 
example.net.      +14400    mx     10 mail.example.net. ~
mail.example.net. +14400    a      127.0.0.1 ~

권위 있는 네임서버와 기타 레코드를 지정한 후 시작 권한(SOA) 줄로 시작합니다. 레코드는 도메인 이름, TTL(유효 기간), 레코드 유형 및 레코드 값을 포함합니다.

두 가지 주의할 점은 모든 도메인 이름이 마침표로 끝나야 하며 즉, 완전한 자격을 갖춘 도메인 이름이어야 하고 모든 레코드는 물결 문자(~)로 끝나야 한다는 것입니다. 더 알고 싶으시면 존 파일 형식에 대한 문서를 확인하세요.

더 간단하게 하기 위해 example.net을 127.0.0.1로 지정해 보겠습니다. 다음과 같이 할 수 있습니다:

example.net.    127.0.0.1 ~

서비스를 다음과 같이 재시작합니다:

sudo /etc/init.d/maradns restart

MaraDNS를 재귀 네임서버로 구성하기

웹 브라우저가 DNS 쿼리를 전송할 때 — 브라우저가 이미 캐시에 매핑을 저장하지 않은 경우 — 재귀 DNS 서버로 전송됩니다. 이는 DNS 포워딩이라고도 합니다. 기본적으로 포트 127.0.0.2에서 수신하며, 쉼표로 구분하여 더 많은 IP를 추가할 수 있습니다. 예: 127.0.0.2, x.x.x.x. /etc/dwood3rc 파일에 아래 줄을 추가하여 MaraDNS를 재귀 네임서버로 구성할 수 있습니다:

upstream_servers = {}  
upstream_servers["."] = "8.8.8.8, 8.8.4.4" # Google DNS 서버에 요청 포워딩

서비스를 다음과 같이 재시작합니다:

sudo /etc/init.d/maradns.deadwood restart

MaraDNS 서버 설정이 완료되었습니다! :)

팁 - 외부 DNS 쿼리에 응답하도록 MaraDNS 서버를 설정하려면:

구성 파일( /etc/mararc 및 /etc/dwood3rc)에 머신의 공용 IP를 추가하고 다음과 같이 수정해야 합니다:

/etc/mararc:

ipv4_bind_addresses = "127.0.0.1, x.x.x.x" # x.x.x.x를 머신의 공용 주소로 교체합니다.

/etc/dwood3rc:

bind_address="127.0.0.2, x.x.x.x" # x.x.x.x를 머신의 공용 주소로 교체합니다.

recursive_acl = “0.0.0.0/0” # 어디서든 연결을 허용합니다.

여기에서 샘플 파일을 다운로드할 수 있습니다. 서비스를 다시 시작하는 것을 잊지 마세요.

그게 전부입니다!

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.