본문으로 건너뛰기

named-checkconf와 named-checkzone 명령어 사용 방법은 무엇인가요?

💡 요약 정리

  • named-checkconf는 DNS 설정 파일의 문법 오류를 검사합니다.
  • named-checkzone은 zone 파일의 문법 오류를 검사합니다.
  • DNS 서버 재시작 전 필수적으로 사용하여 오류를 미리 확인해야 합니다.
  • 오류 발견 시 정확한 라인 번호와 원인을 알려줍니다.

설치환경

  • CentOS 5.x (64bit)
  • bind-9.3.6-20.P1.el5_8.6

1. named-checkconf

개요

named-checkconf는 DNS 설정 시 설정 파일의 Syntax 에러를 점검해 주는 명령어입니다.

대상 파일

  • BIND 9.3 이상: /etc/named.rfc1912.zones
  • BIND 9.2 이하: /etc/named.conf

사용 방법

named-checkconf [설정파일경로]

2. named-checkconf 실습

정상적인 설정 파일 검사

오류가 없으면 아무런 결과도 출력하지 않습니다.

[root@cafe24 src]# named-checkconf /etc/named.rfc1912.zones
[root@cafe24 src]#

결과:

  • 출력 없음 = 문법 오류 없음

오류가 있는 설정 파일 검사

1단계: 의도적으로 오류 추가

설정 파일을 편집하여 잘못된 문법을 추가합니다.

[root@cafe24 src]# vi /etc/named.rfc1912.zones

설정 파일 내용:

-------------------------------------------------------------------------------------------------------------
zone "test.com" IN {
        type master;
        file "test.com.zone";
        allow-update { none; };
};;                                           # <--- 임의로 ";"를 추가하여 오류 발생

-------------------------------------------------------------------------------------------------------------

오류 내용:

  • };; → 중복된 세미콜론
  • 올바른 형식: };

2단계: 오류 검사 실행

[root@cafe24 src]# named-checkconf /etc/named.rfc1912.zones
/etc/named.rfc1912.zones:55: syntax error near ';'    # <--- 55번 라인에 오류가 있음을 알려준다
[root@cafe24 src]#

결과 분석:

  • 파일명: /etc/named.rfc1912.zones
  • 라인 번호: 55
  • 오류 내용: syntax error near ';' (세미콜론 근처에 문법 오류)

3. named-checkzone

개요

named-checkzonezone 파일의 Syntax 에러를 점검해 주는 명령어입니다.

사용 방법

named-checkzone [zone이름] [zone파일경로]

매개변수:

  • zone이름: named.rfc1912.zones 파일에 설정된 zone 이름
  • zone파일경로: 실제 zone 파일의 전체 경로

4. named-checkzone 실습

정상적인 zone 파일 검사

[root@cafe24 src]#
[root@cafe24 src]# named-checkzone test.com /var/named/test.com.zone
zone test.com/IN: loaded serial 42
OK                                             # <--- 오류가 없으면 OK
[root@cafe24 src]#

결과 분석:

  • loaded serial 42: zone 파일의 serial 번호 42를 읽음
  • OK: 문법 오류 없음

오류가 있는 zone 파일 검사

1단계: 의도적으로 오류 추가

zone 파일을 편집하여 잘못된 IP 주소를 추가합니다.

[root@cafe24 src]# vi /var/named/test.com.zone

zone 파일 내용:

----------------------------------------------------------------------------------------------------------------
$TTL    86400
@               IN SOA  localhost.      root.localhost. (
                                        42              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum
             IN      NS      localhost.
www      IN      A       123.123.123.123
mail       IN      A       111.111.111.1111    # <--- 임의로 IP에 1111로 오류를 표기하고 테스트
---------------------------------------------------------------------------------------------------------------

오류 내용:

  • 111.111.111.1111 → 잘못된 IP 주소 (각 옥텟은 0-255 범위)
  • 올바른 형식: 111.111.111.111

2단계: 오류 검사 실행

[root@cafe24 src]#
[root@cafe24 src]#
[root@cafe24 src]# named-checkzone test.com /var/named/test.com.zone
dns_rdata_fromtext: /var/named/test.com.zone:10: near '111.111.111.1111': bad dotted quad   # <--- 오류내용 출력
zone test.com/IN: loading master file /var/named/test.com.zone: bad dotted quad
[root@cafe24 src]#

결과 분석:

  • 파일명: /var/named/test.com.zone
  • 라인 번호: 10
  • 오류 위치: near '111.111.111.1111'
  • 오류 내용: bad dotted quad (잘못된 IP 주소 형식)

5. 명령어 비교

항목named-checkconfnamed-checkzone
검사 대상설정 파일zone 파일
검사 파일/etc/named.rfc1912.zones, /etc/named.conf/var/named/*.zone
주요 용도DNS 서버 설정 문법 검사zone 레코드 문법 검사
오류 시 출력라인 번호 + 오류 내용라인 번호 + 오류 내용
정상 시 출력없음 (silent)OK + serial 번호

6. 실전 활용

DNS 설정 변경 작업 흐름

권장 작업 순서:

# 1단계: 설정 파일 백업
[root@cafe24 ~]# cp /etc/named.rfc1912.zones /etc/named.rfc1912.zones.backup
[root@cafe24 ~]# cp /var/named/test.com.zone /var/named/test.com.zone.backup

# 2단계: 설정 파일 수정
[root@cafe24 ~]# vi /etc/named.rfc1912.zones
[root@cafe24 ~]# vi /var/named/test.com.zone

# 3단계: 설정 파일 문법 검사
[root@cafe24 ~]# named-checkconf /etc/named.rfc1912.zones

# 4단계: zone 파일 문법 검사
[root@cafe24 ~]# named-checkzone test.com /var/named/test.com.zone

# 5단계: 모든 검사 통과 시 서비스 재시작
[root@cafe24 ~]# service named restart

# 6단계: 서비스 확인
[root@cafe24 ~]# service named status

여러 zone 파일 일괄 검사

# 모든 zone 파일 검사
for zone in /var/named/*.zone; do
    zonename=$(basename $zone .zone)
    echo "Checking zone: $zonename"
    named-checkzone $zonename $zone
done

7. 일반적인 오류 유형

named-checkconf 오류

1. 문법 오류

/etc/named.rfc1912.zones:10: syntax error near '{'

원인: 중괄호 누락 또는 잘못된 위치

2. 세미콜론 누락

/etc/named.rfc1912.zones:15: syntax error near '}'

원인: 라인 끝의 세미콜론(;) 누락

3. 파일 경로 오류

/etc/named.rfc1912.zones:20: open: /var/named/nosuchfile.zone: file not found

원인: 존재하지 않는 zone 파일 참조

named-checkzone 오류

1. IP 주소 형식 오류

bad dotted quad

원인: 잘못된 IP 주소 형식

2. SOA 레코드 오류

no TTL specified

원인: TTL 값 미지정

3. NS 레코드 없음

no NS records

원인: 네임서버 레코드 누락

4. CNAME 충돌

CNAME and other data

원인: CNAME과 다른 레코드 타입이 동일한 이름에 존재


8. 고급 옵션

named-checkconf 옵션

# 특정 zone만 검사
named-checkconf -z /etc/named.conf

# include 파일까지 검사
named-checkconf -p /etc/named.conf

# chroot 환경에서 검사
named-checkconf -t /var/named/chroot /etc/named.conf

named-checkzone 옵션

# 경고도 출력
named-checkzone -w test.com /var/named/test.com.zone

# 더 엄격한 검사
named-checkzone -i full test.com /var/named/test.com.zone

# 덤프 출력 (디버깅)
named-checkzone -D test.com /var/named/test.com.zone

9. 스크립트 활용

자동화 검사 스크립트

#!/bin/bash
# DNS 설정 파일 자동 검사 스크립트

echo "=== DNS Configuration Check ==="

# 1. 설정 파일 검사
echo "Checking main configuration..."
if named-checkconf /etc/named.conf; then
    echo "✓ Configuration file OK"
else
    echo "✗ Configuration file has errors"
    exit 1
fi

# 2. 모든 zone 파일 검사
echo -e "\nChecking zone files..."
ZONES=$(grep "^zone" /etc/named.conf | awk '{print $2}' | tr -d '"')

for zone in $ZONES; do
    zonefile=$(grep -A 5 "zone \"$zone\"" /etc/named.conf | grep "file" | awk '{print $2}' | tr -d '";')

    if [ -f "/var/named/$zonefile" ]; then
        echo -n "Checking $zone... "
        if named-checkzone $zone /var/named/$zonefile > /dev/null; then
            echo "OK"
        else
            echo "ERROR"
            named-checkzone $zone /var/named/$zonefile
        fi
    fi
done

echo -e "\n=== Check Complete ==="

10. 문제 해결

"command not found" 오류

원인: bind-utils 패키지 미설치

해결 방법:

[root@cafe24 ~]# yum install bind-utils

"permission denied" 오류

원인: zone 파일 읽기 권한 없음

해결 방법:

[root@cafe24 ~]# chmod 644 /var/named/test.com.zone
[root@cafe24 ~]# chown named:named /var/named/test.com.zone

zone 파일 경로를 찾을 수 없음

원인: 상대 경로 사용

해결 방법:

# 잘못된 예
named-checkzone test.com test.com.zone

# 올바른 예
named-checkzone test.com /var/named/test.com.zone

11. 모범 사례

변경 전 항상 백업

# 타임스탬프 포함 백업
cp /etc/named.conf /etc/named.conf.$(date +%Y%m%d_%H%M%S)
cp /var/named/test.com.zone /var/named/test.com.zone.$(date +%Y%m%d_%H%M%S)

변경 후 즉시 검증

# 설정 변경 후 즉시 실행
vi /etc/named.conf && named-checkconf
vi /var/named/test.com.zone && named-checkzone test.com /var/named/test.com.zone

프로덕션 적용 전 테스트

# 개발 서버에서 먼저 테스트
# 문법 검사 통과 확인
# 실제 쿼리 테스트
nslookup www.test.com localhost
dig @localhost test.com

12. 관련 명령어

named-compilezone

zone 파일을 바이너리 형식으로 컴파일:

named-compilezone -f text -F raw -o test.com.raw test.com /var/named/test.com.zone

named-journalprint

journal 파일 내용 확인:

named-journalprint /var/named/test.com.zone.jnl

rndc

설정 리로드 및 상태 확인:

rndc reload
rndc status
rndc dumpdb

참고사항

  • DNS 설정 변경 후 반드시 두 명령어로 검증하세요.
  • 오류 발견 시 서비스 재시작 전에 수정해야 합니다.
  • 프로덕션 환경에서는 변경 전 백업이 필수입니다.
  • serial 번호는 zone 파일 변경 시마다 증가시켜야 합니다.
  • named-checkzone 실행 시 zone 이름은 named.rfc1912.zones에 정의된 것과 정확히 일치해야 합니다.