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 구문은 여러 개 설정 가능하다.
설정 방법은 다음 두 가지가 있다.
- 관리자가 직접 설정 작성
- 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
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==";
};
'네임서버' 카테고리의 다른 글
| 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 |