Home Linux AWS Cloud Docker Python AI
클릭하여 터미널 활성화

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

// NETWORK · DNS · BIND · CentOS7
yum bind 설치 → named.conf 설정 → zone 파일 작성 → nslookup 확인까지

DNS가 뭔데

네트워크 수업 듣다가 생각했다.

"www.naver.com 치면 어떻게 IP를 찾는 거지?"

IP 외우기는 불가능하고, 도메인으로 치면 뭔가가 IP로 바꿔주긴 하는데. 그게 바로 DNS다. 직접 구축해보면 구조가 보인다. 그래서 CentOS7에 BIND로 네임서버를 올려봤다.

어떤 구성이냐면

SETUP
도메인 linux.edu.kr → IP 192.168.50.128  # 정방향 조회
IP 192.168.50.128 → 도메인 linux.edu.kr  # 역방향 조회

이게 전부다. 단방향이 아니라 양방향 다 된다. 추가로 구성한 것들:

정방향 zone (A 레코드)
도메인 이름 → IPv4 주소 변환
역방향 zone (PTR 레코드)
IPv4 주소 → 도메인 이름 변환
외부 쿼리 허용
listen-on any, allow-query any 설정
Authoritative 모드
recursion no — 자신이 관리하는 zone만 응답

기술 스택

PACKAGE
BIND 9 (bind-*)
OS
CentOS 7
CONFIG
named.conf
named.rfc1912.zones
ZONE FILES
로컬 Zone 파일
/var/named/*.zone

BIND 쓴 이유는 단순하다. 리눅스 DNS 서버의 표준이고, 설정 파일 구조가 실제 운영 환경과 동일하다. 이걸 이해하면 어디서든 통한다.

구조

DNS CONFIG FILES
/etc/named.conf              ← 메인 설정 (listen-on, allow-query)
/etc/named.rfc1912.zones     ← zone 등록 (정방향/역방향)
/var/named/
    ├── linux.edu.kr.zone       ← 정방향 zone (A 레코드)
    └── 192.168.50.zone        ← 역방향 zone (PTR 레코드)

파일 4개짜리 구성이다. 단순한 게 최고다.

BIND 설치하는 방법

제일 쉬운 부분. yum으로 한 방에 설치한다.

root@server
[root@ljck2 ~]# yum -y install bind-*
... (설치 진행)
Complete!
yum -y install bind-* 실행 화면

named.conf 설정하는 방법

제일 중요한 부분. 설치 직후 기본값은 로컬에서만 수신하도록 잠겨있다. 외부 쿼리를 받으려면 두 줄을 바꿔야 한다.

/etc/named.conf
// 변경 전
listen-on port 53 { 127.0.0.1; };
allow-query      { localhost; };
// 변경 후
listen-on port 53 { any; };
allow-query      { any; };
recursion no;  ← Authoritative 모드
⚠️
삽질 포인트
recursion yes 로 두면 캐싱 DNS가 돼버린다. 자신이 관리하는 zone만 응답하는 Authoritative 서버로 쓰려면 반드시 no로 바꿔야 한다.
vi /etc/named.conf 실행

named.conf 기본값 (변경 전)

listen-on any, allow-query any 수정

recursion no 설정

zone 등록하는 방법

이 서버가 어떤 도메인을 관리할지 선언하는 파일이다. 정방향, 역방향 두 개를 끝에 추가한다.

/etc/named.rfc1912.zones — 추가 내용
// 정방향 zone
zone "linux.edu.kr" IN {
type master;
file "linux.edu.kr.zone";
allow-update { any; };
allow-transfer { any; };
};
// 역방향 zone
zone "50.168.192.in-addr.arpa" IN {
type master;
file "192.168.50.zone";
allow-update { any; };
allow-transfer { any; };
};
⚠️
삽질 포인트
역방향 zone 이름은 IP 대역을 거꾸로 쓰고 .in-addr.arpa를 붙인다. 192.168.50.x 대역이면 → 50.168.192.in-addr.arpa
vi /etc/named.rfc1912.zones 실행

zones 파일 기본 내용

정방향 zone linux.edu.kr 추가

역방향 zone 50.168.192.in-addr.arpa 추가

zone 파일 작성하는 방법

실제 도메인 ↔ IP 매핑 정보가 담기는 파일이다. /var/named/ 에 만든다.

/var/named/linux.edu.kr.zone — 정방향
$TTL 86400
@    IN SOA  www.linux.edu.kr. root(
42     ; serial
3600   ; refresh
900    ; retry
604800 ; expire
10800 ) ; minimum
       IN NS   www.linux.edu.kr.
       IN A    192.168.50.128
www     IN A    192.168.50.128
/var/named/192.168.50.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 레코드에서 도메인 끝에 점(.)을 반드시 붙여야 한다. www.linux.edu.kr ← 틀림 / www.linux.edu.kr. ← 맞음. 점 없으면 zone 이름이 자동으로 붙어서 이상한 도메인이 된다.
cd /var/named + ll 확인

linux.edu.kr.zone 정방향 작성

linux.edu.kr.zone 저장 후

192.168.50.zone 역방향 작성

권한 설정하는 방법

named 데몬은 named 계정으로 돌아간다. zone 파일 그룹을 named로 바꿔야 읽을 수 있다.

root@server — /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
chmod 660 + chown .named 후 ll 확인

DNS 서버 지정하는 방법

서버 자신이 자기 DNS를 쓰도록 설정한다.

/etc/resolv.conf
nameserver 192.168.50.128
/etc/resolv.conf nameserver 등록

named 서비스 재시작

root@server
[root@ljck2 named]# systemctl restart named
⚠️
재시작 실패 시 디버깅
named-checkconf /etc/named.conf — 설정 파일 문법 검증
named-checkzone linux.edu.kr /var/named/linux.edu.kr.zone — zone 파일 검증
journalctl -xe | grep named — 상세 로그
systemctl restart named

nslookup으로 확인하는 방법

정방향(도메인→IP), 역방향(IP→도메인) 둘 다 확인한다.

nslookup
// 정방향 조회
> www.linux.edu.kr
Server:    192.168.50.128
Name:      www.linux.edu.kr
Address: 192.168.50.128
// 역방향 조회
> 192.168.50.128
128.50.168.192.in-addr.arpa   name = www.linux.edu.kr.
nslookup 정방향 조회 확인

nslookup 역방향 조회 확인

전체 흐름 요약

SETUP FLOW
01yum -y install 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 — A 레코드
05vi /var/named/192.168.50.zone — PTR 레코드
06chmod 660 + chown .named *.zone
07vi /etc/resolv.conf — nameserver 등록
08systemctl restart named
09nslookup 정방향 + 역방향 모두 성공 ✓

간단한데 이거 없으면 네트워크 구조 이해가 안 된다. 직접 세워보면 DNS가 얼마나 핵심인지 바로 보인다.

// 교훈
도메인과 IP를 연결하는 DNS 서버,
직접 구축하면 구조가 보인다.
Tags: #DNS #BIND #CentOS7 #named #네임서버 #zone파일 #nslookup