클릭하여 터미널 활성화

CentOS7 DNS 서버 구축 | BIND 네임서버 설치 및 zone 파일 설정 방법

// NETWORK · DNS · BIND · CentOS7

CentOS7 DNS 서버 구축 및 네임서버 설정 방법

yum bind 설치 → named.conf 설정 → zone 파일 작성 → nslookup 확인까지

#DNS #BIND #CentOS7 #named #네임서버 #nslookup #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-utilsnslookup, dig 같은 DNS 조회 도구를 포함합니다. bind-* 와일드카드로 관련 패키지를 한 번에 설치합니다.

root@ljck2
[root@ljck2 ~]# yum -y install bind-*
... (설치 진행)
Complete!
📸 STEP 01 — yum -y install bind-* 실행
사진 1

STEP 02 named.conf 열기

BIND의 메인 설정 파일인 /etc/named.conf를 vi로 엽니다.

root@ljck2
[root@ljck2 ~]# vi /etc/named.conf
📸 STEP 02 — vi /etc/named.conf 실행사진 2

STEP 03 named.conf 기본값 확인 (변경 전)

💡 named.conf 기본값 — 변경 전 상태

설치 직후 기본값은 listen-on port 53 { 127.0.0.1; }으로 로컬호스트에서만 수신하고, allow-query { localhost; }로 외부 쿼리는 차단된 상태입니다. 외부 클라이언트가 이 DNS 서버로 쿼리를 보낼 수 없으므로 수정이 필요합니다.

📸 STEP 03 — named.conf 기본값 (listen-on 127.0.0.1, allow-query localhost)
사진 3

STEP 04 named.conf 수정 — 외부 쿼리 허용

외부에서 DNS 쿼리를 받을 수 있도록 핵심 옵션을 수정합니다.

/etc/named.conf 수정 내용
// 변경 전
listen-on port 53 { 127.0.0.1; };
allow-query      { localhost; };
// 변경 후
listen-on port 53 { any; };
allow-query      { any; };
📸 STEP 04 — named.conf listen-on any, allow-query any 수정
사진 4

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 05 — recursion no 설정 확인
사진 5

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.x50.168.192.in-addr.arpa

root@ljck2
[root@ljck2 ~]# vi /etc/named.rfc1912.zones
📸 STEP 06 — vi /etc/named.rfc1912.zones 실행
사진 6
📸 STEP 06 — named.rfc1912.zones 기본 내용 확인
사진 7

파일 맨 아래에 정방향, 역방향 zone을 추가합니다.

/etc/named.rfc1912.zones — 추가 내용
// 정방향 zone (도메인 → IP)
zone "linux.edu.kr" IN {
type master;
file "linux.edu.kr.zone";
allow-update { any; };
allow-transfer { any; };
};
// 역방향 zone (IP → 도메인)
zone "50.168.192.in-addr.arpa" IN {
type master;
file "192.168.50.zone";
allow-update { any; };
allow-transfer { any; };
};
📸 STEP 06 — 정방향 zone "linux.edu.kr" 등록
사진 8
📸 STEP 06 — 역방향 zone "50.168.192.in-addr.arpa" 등록
사진 9

STEP 07 /var/named 디렉터리 확인 및 zone 파일 생성

/var/named 디렉터리로 이동해 기본 파일을 확인하고 zone 파일을 생성합니다.

root@ljck2
[root@ljck2 ~]# cd /var/named
[root@ljck2 named]# ll
drwxr-x--- 7 root named   chroot
-rw-r----- 1 root named   named.ca
... (기본 파일들 확인)
[root@ljck2 named]# vi linux.edu.kr.zone
📸 STEP 07 — cd /var/named + ll 디렉터리 확인
사진 10

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 파일 버전 번호. 수정할 때마다 증가시켜야 슬레이브가 동기화됨
linux.edu.kr.zone — 정방향 zone 파일
$TTL 86400
@      IN SOA  www.linux.edu.kr. root(
42      ;serial   ← zone 버전 (수정 시 증가)
3600    ;refresh ← 슬레이브 갱신 주기(초)
900     ;retry   ← 갱신 실패 시 재시도(초)
604800  ;expire  ← 슬레이브 만료 시간(초)
10800 ) ;minimum ← 최소 TTL
       IN NS   www.linux.edu.kr.
       IN A    192.168.50.128
www     IN A    192.168.50.128
📸 STEP 08 — linux.edu.kr.zone 정방향 zone 파일 작성
사진 11
📸 STEP 08 — linux.edu.kr.zone 수정 중 화면
사진 12

STEP 09 역방향 zone 파일 작성 (192.168.50.zone)

IP → 도메인 역방향 조회를 위한 zone 파일을 작성합니다.

192.168.50.zone — 역방향 zone 파일
$TTL 1D
@      IN SOA  www.linux.edu.kr root(
72      ;serial
10      ;refresh
15M     ;retry
1W      ;expire
3H )    ;minimum
       IN NS   www.linux.edu.kr.
       IN A    192.168.50.128
128     IN PTR  www.linux.edu.kr. ← IP 마지막 옥텟만
⚠️
PTR 레코드 주의사항
역방향 zone에서 PTR 레코드는 IP의 마지막 옥텟만 씁니다. 192.168.50.128128 IN PTR www.linux.edu.kr. 도메인 끝에 점(.)을 반드시 붙여야 FQDN으로 인식합니다.
📸 STEP 09 — 192.168.50.zone 역방향 zone 파일 (PTR 레코드)
사진 13

STEP 10 Zone 파일 권한 설정

named 데몬이 zone 파일을 읽을 수 있도록 소유자와 권한을 설정합니다.

💡 왜 권한 설정이 필요한가?

named 데몬은 named 계정으로 실행됩니다. zone 파일의 소유 그룹이 named가 아니면 데몬이 파일을 읽지 못해 DNS 서비스가 동작하지 않습니다. chmod 660으로 소유자/그룹 읽기+쓰기를 허용하고, chown .named로 그룹을 named로 변경합니다.

root@ljck2 — /var/named
[root@ljck2 named]# chmod 660 *.zone
[root@ljck2 named]# chown .named *.zone
[root@ljck2 named]# ll
-rw-rw---- 1 root named 200 192.168.50.zone
-rw-rw---- 1 root named 211 linux.edu.kr.zone
📸 STEP 10 — chmod 660 + chown .named 전후 ll 비교
사진 14

STEP 11 resolv.conf — DNS 서버 지정

서버 자신이 직접 구축한 DNS를 사용하도록 /etc/resolv.conf에 네임서버를 등록합니다.

💡 resolv.conf란?

이 리눅스 시스템이 도메인 조회 시 사용할 DNS 서버 주소를 지정하는 파일입니다. nameserver 192.168.50.128을 등록하면 이 서버 자신의 named 데몬에게 쿼리를 보내게 됩니다. nslookup 테스트 시 Server 항목에 자기 IP가 표시되는지 확인할 수 있습니다.

/etc/resolv.conf
nameserver 192.168.50.128
📸 STEP 11 — vi /etc/resolv.conf nameserver 등록
사진 15

STEP 12 named 서비스 재시작

모든 설정이 완료되면 named 서비스를 재시작해 변경사항을 적용합니다.

root@ljck2
[root@ljck2 named]# systemctl restart named
📸 STEP 12 — systemctl restart named
사진 16
⚠️
재시작 실패 시
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→도메인) 조회가 모두 정상 동작하는지 확인합니다.

root@ljck2
[root@ljck2 named]# nslookup
// 정방향 조회 — 도메인 → IP
> www.linux.edu.kr
Server:    192.168.50.128
Name:      www.linux.edu.kr
Address:   192.168.50.128
// 역방향 조회 — IP → 도메인
> 192.168.50.128
128.50.168.192.in-addr.arpa   name = www.linux.edu.kr.
> exit
📸 STEP 13 — nslookup 정방향 조회 확인
사진 17
📸 STEP 13 — nslookup 역방향 조회 확인
사진 18
DNS 서버 구축 완료!
정방향(www.linux.edu.kr → 192.168.50.128)과 역방향(192.168.50.128 → www.linux.edu.kr) 모두 성공! DNS 서버가 정상 동작하고 있습니다.

전체 흐름 요약

01yum -y install bind-* BIND 패키지 설치
02vi /etc/named.conf listen-on any, allow-query any, recursion no
03vi /etc/named.rfc1912.zones 정방향/역방향 zone 등록
04vi /var/named/linux.edu.kr.zone 정방향 zone 파일 작성
05vi /var/named/192.168.50.zone 역방향 zone 파일 작성
06chmod 660 + chown .named *.zone 권한 설정
07vi /etc/resolv.conf nameserver 등록
08systemctl restart named
09nslookup정방향 + 역방향 조회 성공 ✓

자주 묻는 질문 (FAQ)

Q. named 재시작 후 failed 뜨면?
named-checkconfnamed-checkzone으로 설정 파일과 zone 파일 문법을 먼저 검증하세요. 오류 위치를 정확히 알려줍니다.
Q. nslookup에서 SERVFAIL이 나오면?
방화벽에서 DNS 포트가 막혔을 가능성이 높습니다. firewall-cmd --add-service=dns --permanent && firewall-cmd --reload로 허용하세요.
Q. zone 파일 수정 후 반영이 안 될 때?
zone 파일의 serial 번호를 반드시 증가시켜야 합니다. 이후 systemctl reload named로 무중단 재로딩이 가능합니다.
Q. SELinux 환경에서 안 될 때?
restorecon -Rv /var/named로 보안 컨텍스트를 복구하세요.
// 2022.02.11
도메인과 IP를 연결하는 DNS 서버,
직접 구축하면 구조가 보인다.
Tags: #dns #CentOS #centos7 #BIND #named #zone파일 #nslookup #네임서버