본문 바로가기

네임서버

BIND rndc(Remote Name Daemon Control) 유틸리티

반응형

BIND rndc(Remote Name Daemon Control) 유틸리티

rndc(Remote Name Daemon Control)는 BIND DNS 서버(named)를 원격 또는 로컬에서 관리하기 위한 관리자용 유틸리티이다.

 

관리자는 rndc 명령을 통해 DNS 서버를 재시작하거나 Zone을 재로드하는 등 다양한 관리 작업을 수행할 수 있다.

 

주요 기능 예시

  • DNS 서버 재로드
  • Zone 파일 재로드
  • DNS 캐시 플러시
  • 서버 상태 확인
  • 로그 레벨 변경

rndc는 TSIG(Transaction Signature) 기반 인증을 사용하여 관리 명령을 안전하게 전달한다.

1. rndc 설정 파일

rndc는 rndc.conf 설정 파일을 사용하며 구조는 named.conf와 유사하다.

 

주요 구성 요소는 다음과 같다.

  • options
  • server
  • key

server 및 key 구문은 여러 개 설정 가능하다.

 

설정 방법은 다음 두 가지가 있다.

  1. 관리자가 직접 설정 작성
  2. rndc-confgen 유틸리티를 이용한 자동 생성

2. rndc.conf 기본 구성

options {
    default-server localhost;
    default-key "rndckey";
};

server localhost {
    keys "rndckey";
};

key "rndckey" {
    algorithm hmac-md5;
    secret "ZMuyJzOvfbkHarwLcKGPFGPYWmYujkYCxZinrurrnLoLlfqQrjTmiGXSVSrRz";
};

3. rndc-confgen 유틸리티

rndc-confgen은 rndc에서 사용할 인증 키와 설정 파일을 자동 생성하는 도구이다.

 

사용 가능한 명령어 확인

/usr/local/bind/sbin/rndc-confgen -h
Usage:
rndc-confgen [-a] [-b bits] [-c keyfile] [-k keyname] [-p port]
             [-r randomfile] [-s addr] [-t chrootdir] [-u user]

주요 옵션

  • -a : key clause만 생성
  • -b : secret 길이 지정 (1~512bit)
  • -c : key 파일 경로 지정
  • -k : key 이름 지정
  • -p : rndc 제어 포트 지정
  • -s : 접속할 DNS 서버 주소
  • -t : chroot 환경 경로
  • -u : key 파일 소유자

Key 생성

./rndc-confgen -k ns_rndckey

생성된 파일

ls -F
ns_rndckey.key

 

파일 내용

cat ns_rndckey.key
key "ns_rndckey" {
    algorithm hmac-md5;
    secret "sbDx+aLPxggYTzEV4blZ+w==";
};

options {
    default-key "ns_rndckey";
    default-server 127.0.0.1;
    default-port 953;
};

4. rndc.conf 주요 구문 설명

4.1 options 구문

rndc 명령 실행 시 사용할 기본 접속 정보를 설정한다.

options {
    default-server localhost;
    default-key "rndckey";
    default-port 953;
};

옵션 설명

  • default-server 기본적으로 접속할 DNS 서버
  • default-key 인증에 사용할 기본 key
  • default-port rndc 제어 포트 (기본값 953)

BIND의 named.conf 파일에서는 다음과 같이 설정한다.

controls {
    inet 127.0.0.1 port 953
        allow { 127.0.0.1; } keys { "rndckey"; };
};

4.2 server 구문

특정 DNS 서버에 대한 접속 정보와 인증 키를 설정한다.

server 192.168.10.3 {
    keys { "ns_rndckey"; };
};

주요 설정 옵션

server ip_addr {
    bogus yes_or_no;
    provide-ixfr yes_or_no;
    request-ixfr yes_or_no;
    edns yes_or_no;
    transfer number;
    transfer-format (one-answer | many-answers);
    keys { string; };
};

항목 설명

  • ip_addr 제어 메시지를 보낼 DNS 서버
  • keys 인증에 사용할 key 이름

4.3 key 구문

rndc 인증에 사용되는 TSIG 암호 키를 설정한다.

key "rndckey" {
    algorithm hmac-md5;
    secret "secret_string";
};

항목 설명

  • algorithm 인증 알고리즘
  • secret 암호화된 인증 키

일반적으로 다음 알고리즘이 사용된다.

hmac-md5
728x90

5. dnssec-keygen을 이용한 TSIG 키 생성

dnssec-keygen 유틸리티를 이용해 TSIG 인증 키를 생성할 수 있다.

 

명령어

dnssec-keygen -a hmac-md5 -b 512 -n HOST ns_rndckey

생성된 파일

ls -l K*
Kns_rndckey.+157+07177.key
Kns_rndckey.+157+07177.private

private 파일 확인

cat Kns_rndckey.+157+07177.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: 91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUkgVs6xx+eOANbqz/0wdtrjivs2WsjZg==

설명(항목 의미)

  • 157 : DNSSEC 알고리즘 번호 (HMAC-MD5)
  • Key : 실제 인증 secret

.private 파일의 Key 값을 rndc 설정의 secret에 사용한다.

6. rndc.key 파일 예시

vim /etc/rndc.key
key "rndckey" {
    algorithm hmac-md5;
    secret "91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUkgVs6xx+eOANbqz/0wdtrjivs2WsjZg==";
};

7. 원격 DNS 서버 제어 구성

  • 로컬 DNS 서버 : 192.168.10.3
  • 원격 관리 서버 : 192.168.10.4

환경에서 rndc로 제어하려면 양쪽 서버에 동일한 key 설정이 필요하다.

 

7.1 로컬 DNS 서버 설정

vim /etc/named.conf
controls {
    inet 127.0.0.1 allow { localhost; 192.168.10.4; } keys { ns_rndckey; };
};

key "ns_rndckey" {
    algorithm hmac-md5;
    secret "91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUkgVs6xx+eOANbqz/0wdtrjivs2WsjZg==";
};

7.2 원격 관리 서버 설정

vim /etc/rndc.conf
server 192.168.10.3 {
    key "ns_rndckey";
};

key "ns_rndckey" {
    algorithm hmac-md5;
    secret "91QsIokS9pBy0n56ZbkkOa1vxmuT1IcMbaUksnG0HN+OIfdKBHCj3RUkgVs6xx+eOANbqz/0wdtrjivs2WsjZg==";
};

 

728x90
반응형

'네임서버' 카테고리의 다른 글

BIND9 Query Log  (0) 2013.10.14
named hint(named.cache) 파일을 생성하는 방법  (0) 2013.09.07
BIND(named) Error: ran out of space  (0) 2013.09.07
Powered by DNS  (0) 2013.09.07
원도우 DNS 이벤트 ID 4000  (0) 2013.09.04