CentOS7 DNS 서버 구축 | BIND 네임서버 설치 및 zone 파일 설정 방법
📋 이 글에서 배우는 것
DNS(Domain Name System)는 사람이 읽을 수 있는 도메인 이름(www.linux.edu.kr)을
컴퓨터가 이해하는 IP 주소(192.168.50.128)로 변환해주는 핵심 인터넷 인프라입니다.
이 글에서는 CentOS7에서 BIND(Berkeley Internet Name Domain) 패키지를 설치하고,
정방향 조회(도메인 → IP)와 역방향 조회(IP → 도메인)를 모두 지원하는
DNS 서버를 직접 구축하는 과정을 단계별로 다룹니다.
안녕하세요. 이번 시간에는 리눅스 DNS 서버 구축을 해보도록 하겠습니다.
[본 설정은 제가 배운 내용과 편리함에 따라서 설정한 것입니다.]
STEP 01 BIND 패키지 설치
DNS 서버 구축에 필요한 BIND 관련 패키지를 yum으로 한 번에 설치합니다.
💡 BIND란?
BIND(Berkeley Internet Name Domain)는 리눅스에서 가장 널리 사용되는 오픈소스 DNS 서버 소프트웨어입니다.
bind는 DNS 서버 데몬(named)을, bind-utils는 nslookup, dig 같은
DNS 조회 도구를 포함합니다. bind-* 와일드카드로 관련 패키지를 한 번에 설치합니다.
STEP 02 named.conf 열기
BIND의 메인 설정 파일인 /etc/named.conf를 vi로 엽니다.
STEP 03 named.conf 기본값 확인 (변경 전)
💡 named.conf 기본값 — 변경 전 상태
설치 직후 기본값은 listen-on port 53 { 127.0.0.1; }으로 로컬호스트에서만 수신하고,
allow-query { localhost; }로 외부 쿼리는 차단된 상태입니다.
외부 클라이언트가 이 DNS 서버로 쿼리를 보낼 수 없으므로 수정이 필요합니다.
STEP 04 named.conf 수정 — 외부 쿼리 허용
외부에서 DNS 쿼리를 받을 수 있도록 핵심 옵션을 수정합니다.
STEP 05 named.conf — recursion 설정
recursion 옵션을 수정합니다. 권한 있는(Authoritative) DNS 서버로 운영하려면 no로 설정합니다.
💡 recursion no vs yes
recursion no— 이 서버가 직접 관리하는 zone만 응답하는 Authoritative DNS 모드recursion yes— 모르는 도메인도 상위 DNS에 대신 물어봐주는 Recursive(캐싱) DNS 모드
내부 학습 환경에서는 recursion no로 설정해 직접 관리하는 zone만 테스트합니다.
STEP 06 named.rfc1912.zones 열기 — zone 등록
DNS 서버가 관리할 도메인(zone)을 등록하기 위해 /etc/named.rfc1912.zones 파일을 엽니다.
💡 Zone이란?
Zone은 DNS 서버가 직접 관리하는 도메인 영역입니다. 두 종류가 있습니다.
- 정방향 zone — 도메인 → IP 변환 (
linux.edu.kr) - 역방향 zone — IP → 도메인 변환 (
50.168.192.in-addr.arpa)
역방향 zone 이름은 IP 대역을 거꾸로 쓰고 .in-addr.arpa를 붙입니다.
예: 192.168.50.x → 50.168.192.in-addr.arpa
파일 맨 아래에 정방향, 역방향 zone을 추가합니다.
STEP 07 /var/named 디렉터리 확인 및 zone 파일 생성
/var/named 디렉터리로 이동해 기본 파일을 확인하고 zone 파일을 생성합니다.
STEP 08 정방향 zone 파일 작성 (linux.edu.kr.zone)
💡 Zone 파일 레코드 종류
$TTL— Time To Live. 캐시 유지 시간 (86400 = 1일)SOA— Start of Authority. zone의 시작 선언, 관리 정보 포함NS— Name Server. 이 zone을 담당하는 네임서버 지정A— Address. 도메인 → IPv4 주소 매핑 (정방향)serial— zone 파일 버전 번호. 수정할 때마다 증가시켜야 슬레이브가 동기화됨
STEP 09 역방향 zone 파일 작성 (192.168.50.zone)
IP → 도메인 역방향 조회를 위한 zone 파일을 작성합니다.
192.168.50.128 → 128 IN PTR www.linux.edu.kr.
도메인 끝에 점(.)을 반드시 붙여야 FQDN으로 인식합니다.
STEP 10 Zone 파일 권한 설정
named 데몬이 zone 파일을 읽을 수 있도록 소유자와 권한을 설정합니다.
💡 왜 권한 설정이 필요한가?
named 데몬은 named 계정으로 실행됩니다. zone 파일의 소유 그룹이 named가 아니면
데몬이 파일을 읽지 못해 DNS 서비스가 동작하지 않습니다.
chmod 660으로 소유자/그룹 읽기+쓰기를 허용하고, chown .named로 그룹을 named로 변경합니다.
STEP 11 resolv.conf — DNS 서버 지정
서버 자신이 직접 구축한 DNS를 사용하도록 /etc/resolv.conf에 네임서버를 등록합니다.
💡 resolv.conf란?
이 리눅스 시스템이 도메인 조회 시 사용할 DNS 서버 주소를 지정하는 파일입니다.
nameserver 192.168.50.128을 등록하면 이 서버 자신의 named 데몬에게 쿼리를 보내게 됩니다.
nslookup 테스트 시 Server 항목에 자기 IP가 표시되는지 확인할 수 있습니다.
STEP 12 named 서비스 재시작
모든 설정이 완료되면 named 서비스를 재시작해 변경사항을 적용합니다.
named-checkconf /etc/named.conf — 설정 파일 문법 검증named-checkzone linux.edu.kr /var/named/linux.edu.kr.zone — zone 파일 문법 검증journalctl -xe | grep named — 상세 오류 로그 확인
STEP 13 nslookup으로 동작 확인
정방향(도메인→IP)과 역방향(IP→도메인) 조회가 모두 정상 동작하는지 확인합니다.
www.linux.edu.kr → 192.168.50.128)과
역방향(192.168.50.128 → www.linux.edu.kr) 모두 성공!
DNS 서버가 정상 동작하고 있습니다.
전체 흐름 요약
자주 묻는 질문 (FAQ)
named-checkconf와 named-checkzone으로 설정 파일과 zone 파일 문법을 먼저 검증하세요. 오류 위치를 정확히 알려줍니다.firewall-cmd --add-service=dns --permanent && firewall-cmd --reload로 허용하세요.serial 번호를 반드시 증가시켜야 합니다. 이후 systemctl reload named로 무중단 재로딩이 가능합니다.restorecon -Rv /var/named로 보안 컨텍스트를 복구하세요.직접 구축하면 구조가 보인다.

















