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.11sudo makesudo 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 onMaraDNS를 권위 있는 네임서버로 구성하기
권위 있는 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 restartMaraDNS를 재귀 네임서버로 구성하기
웹 브라우저가 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 restartMaraDNS 서버 설정이 완료되었습니다! :)
팁 - 외부 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” # 어디서든 연결을 허용합니다.
여기에서 샘플 파일을 다운로드할 수 있습니다. 서비스를 다시 시작하는 것을 잊지 마세요.
그게 전부입니다!
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.