네임서버

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

변군이글루 2013. 9. 7. 23:55
반응형

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
반응형