PHP

bind_9.X_설정

Bucket List 2005. 12. 24. 10:37
다음 내용은 최근에 han.comp.os.linux.networking 그룹에 포스팅된 내용으로 bind 9.x 설정과 관련해 유용한 내용이라 생각되어 포스팅 하신분의 허락하에 수정없이 올립니다.
--

Newsgroups: han.comp.os.linux.networking
Subject: [질문] bind 9에서 네임서버 설정...?????

사용배포판 : redhat
버전 : 7.1
--------------------------------------------------
리눅스 6.x사용 하면서 네임서버를 잘 돌렸었거든요.
그런데.. 레드헷 7.1로 업그레이드 하면서 문제가 생겼습니다.
bind 버전이 올라가면서 8.x에서 하던것 처럼 안되더군요.
혹시 9.1x에서 네임서버를 돌리고 계신분 아래내용좀 봐주세요.

[[[[[[[[[[[[[[[[ bind 8 ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

// bind 8.x에서 사용하던 named.conf / named.rev named.zone named.ca
이렇게 설정을 해서 사용하면 잘 사용했습니다. 아래는 named.conf 입니다.
options {
directory "/var/named";
};

zone "." {
type hint;
file "named.ca";

zone "lodem.net" {
type master;
file "named.zone";
};

zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
==============================================================

[[[[[[[[[[[[[[ bind 9.1x ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

$>/etc/named.conf

options {
directory "/etc/named";
};


key ns1-soon. {
algorithm "hmac-md5";
secret "/uzBYSgRsxs6JdkcqiPDWA==";
};

// 위에 키 값은
// # dnssec-keygen -a hmac-md5 -b 128 -n HOST ns1 이렇게 한후에 키값이
생성된것입니다. 그것을 카피해다 넣었습니다.

server 111.222.222.1 {
keys { ns1-ns2.; };
};
// 위에는 네임서버 IP입니다.

zone "nic.or.kr" {
type slave;
file "test.zone";
masters { 111.222.222.1; };
};

// 도메인과 존파일 /IP

==============================================================

그리고, /var/named/named.zone & /var/named/named.rev 는 전에 사용하던것 그대로 입니다.

====> /etc/rndc.conf 파일은

key rndc_key. {
algorithm "hmac-md5";
secret "9VYG1oYbhpx9D01yF/tcZw==";
};
options {
default-server 111.222.222.1;
default-key rndc_key.;
};

위처럼 작성한후에 네임 서버를 띄우면 아래와 같은 에러 메세지가 뜹니다.
================================================================
$>nslookup www.xxxxx.net
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
;; connection timed out; no servers could be reached.


From: Byeong-ryeol Kim
Newsgroups: han.comp.os.linux.networking
Subject: Re: [질문] bind 9에서 네임서버 설정...?????
Date: Wed, 6 Jun 2001 22:59:18 +0900 (KST)

"정규성" wrote:
: 사용배포판 : redhat
: 버전 : 7.1
:--------------------------------------------------
:리눅스 6.x사용 하면서 네임서버를 잘 돌렸었거든요.
:그런데.. 레드헷 7.1로 업그레이드 하면서 문제가 생겼습니다.
:bind 버전이 올라가면서 8.x에서 하던것 처럼 안되더군요.
:혹시 9.1x에서 네임서버를 돌리고 계신분 아래내용좀 봐주세요.
....
:위처럼 작성한후에 네임 서버를 띄우면 아래와 같은 에러 메세지가 뜹니다.
:================================================================
:$>nslookup www.xxxxx.net
:Note: nslookup is deprecated and may be removed from future releases.
:Consider using the `dig' or `host' programs instead. Run nslookup with
:the `-sil[ent]' option to prevent this message from appearing.
:;; connection timed out; no servers could be reached.
...

문제가 어디에 있는 지는 현재로서는 정확히 모르겠지만, bind 설정이 8.x에 비해 바뀐 것은 이미 말씀하신 인증 방식과 TTL 값을 명기하는 것 말고는 소박한 설정에서는 별 차이가 없는데요. 4.x에서 8.x로 올라 올 때 /etc/named.boot에서 /etc/named.conf로 이름이 바뀐 것과 그 포 맷이 바뀐 것에 비하면 설정에는 큰 변화가 없죠. 보안상 chroot로 설치 할 수 있게 한다든지, 서버 조작 도구에 대한 인증이 강화되었다는 것 등 은 보안성의 강화란 점에서 보아야겠죠.

혹시 RH 7.1 설치시에 방화벽(firewall)을 설정하셨다면, 포트 53/udp를 열어주고 /etc/named.conf에서도 포트 53을 설정해주어야 할 겁니다. 이건 RH7.1에 따라오는 lokkit으로 설정할 수 있겠죠.
/etc/named.conf에서는 아래의 주석을 제거하면 되는데, 혹시 모르니 pid 파일의 경로도 거기에 없다면, 아래와 같이 적어줄 수 있습니다.

pid-file "/var/run/named/named.pid";

// query-source address * port 53;

그리고, 위의 nslookup 관련 경고는 이것이 향후에 없어질 것이기 때문 에 가능하면 host나 dig 명령을 사용하라는 것입니다.
그 다음의 timeout은 아마도 위에서 언급한 방화벽 설정 문제가 아닌가 하는데, 좀 지켜보아야겠네요. 혹은 클라이언트쪽의 네임서버 설정에도 문제가 있지는 않은 지 한번 더 점검해보아야겠군요.

'/etc/rc.d/init.d/named start'한 뒤 'ps ax | grep named'해서 데몬 이 떠 있나 확인한 뒤, /var/log/messages를 살펴보고 그 내용을 같이 올 려주셔야 판단을 해볼 수 있겠죠.

--
Where there is a will, there is a way. jinbo21@hananet.net
For the future of you and me! jinbo21@hitel.net



From: Byeong-ryeol Kim
Newsgroups: han.comp.os.linux.networking
Subject: Re: [질문] bind 9에서 네임서버 설정...?????
Date: Thu, 7 Jun 2001 03:37:52 +0900 (KST)

"정규성" wrote:
...
:key ns1-soon. {
: algorithm "hmac-md5";
: secret "/uzBYSgRsxs6JdkcqiPDWA==";
:};
:
:// 위에 키 값은
:// # dnssec-keygen -a hmac-md5 -b 128 -n HOST ns1 이렇게 한후에 키값이
:생성된것입니다. 그것을 카피해다 넣었습니다.
:
:server 111.222.222.1 {
: keys { ns1-ns2.; };
...
:====> /etc/rndc.conf 파일은
:
:key rndc_key. {
: algorithm "hmac-md5";
: secret "9VYG1oYbhpx9D01yF/tcZw==";
:};
:options {
: default-server 111.222.222.1;
: default-key rndc_key.;
:};
....

문제를 푸셨는가 모르겠는데, 제가 지금 생각하니, 앞서 말씀드린
것 외에, 위에 인용한 DNSSEC 관련 설정이 어떨 지 모르겠습니다.
아직 네임서버를 9.1.x대로 업데이트한 사이트가 얼마나 될는 지도
모르겠고, bind-9.1.x 관련 문셔를 읽어보면, 이것은 아직 실험적(ex- perimental)인 것이라고 하고 있고, 제가 해봐도 SSL에 링크된 것임 에도 불구하고 RSA, DSA 등은 되지 않고(만들어지나 named가 실행되 면서 에러를 냄) 오직 HMAC-MD5 알고리즘으로만 키 파일이 생성되는군 요.(이것도 문서에서는 bind-9.x.x 대에서는 RSA를 써야 하는 것처럼 언급하고 있죠)
보안성이 강화되는 것과 관련해서 문서에서는 zone 파일을 임의로
수정하거나 named를 respawn시킬 때 'kill -HUP ..' 등의 명령은 문
제가 있기 때문에 rndc나 nsupdate를 쓰도록 권유하고 있지만,
오늘 bind9의 메일링 리스트 아카이브 6월치를 읽어보니, 위의
'kill -HUP ..' 명령을 내리면 named가 zone 파일의 수정된 내용을
읽어오지 못한다는 질문에 9.1.3rc1이나 9.2.0a로 업데이트하라는 답
변이 있더군요.
일단, 위의 DNSSEC 설정은 주석 처리하고 앞서 말씀드린 다른
설정을 점검하는 게 더 생산적일 지 모르겠습니다.
아뭏든, 저는 현재 9.1.3rc1을 받아서 rpm으로 만들고 있습니다.

--
Where there is a will, there is a way. jinbo21@hananet.net
For the future of you and me! jinbo21@hitel.net


From: Byeong-ryeol Kim
Newsgroups: han.comp.os.linux.networking
Subject: Re: [질문] bind 9에서 네임서버 설정...?????
Date: Thu, 7 Jun 2001 05:29:58 +0900 (KST)

Byeong-ryeol Kim wrote:
:"정규성" wrote:
:...
::key ns1-soon. {
:: algorithm "hmac-md5";
:: secret "/uzBYSgRsxs6JdkcqiPDWA==";
::};
::
::// 위에 키 값은
::// # dnssec-keygen -a hmac-md5 -b 128 -n HOST ns1 이렇게 한후에 키값이
::생성된것입니다. 그것을 카피해다 넣었습니다.
::
::server 111.222.222.1 {
:: keys { ns1-ns2.; };
:...
::====> /etc/rndc.conf 파일은
::
::key rndc_key. {
:: algorithm "hmac-md5";
:: secret "9VYG1oYbhpx9D01yF/tcZw==";
::};
::options {
:: default-server 111.222.222.1;
:: default-key rndc_key.;
::};
:....

9.1.3rc1을 설치하고 DNSSEC을 시험해봤습니다. 일단 작동하고 있
다는 것만 확인했습니다. 아래와 같이 했습니다.(설정 방법에 대한 언급 이 배포된 문서에는 없고, 의 FAQ에도 9.1.x 버젼 에 대한 것이 아니라 9.0.x 시절에 작성한 것으로 보이는 내용이 있는데, 낡은 것이지만 유추해석하는 데 도움이 되었습니다.)

1. DNSSEC 키를 생성합니다. Red Hat은 named를 name 유저에 named 그룹에 속하는 것으로 하고 있기 때문에, 아래와 같이 하였습니다.

dnssec-keygen -a hmac-md5 -b 512 -n ZONE -r /dev/random named


이렇게 하면, 현재 작업 디렉토리에 Knamed.+157+61652.key,
Knamed.+157+61652.private라는 두 가지 파일이 만들어집니다.

2. 의의 key 파일 중 Knamed.+157+61652.key의 내용 중 base64로 인코딩 된 것을 /etc/rndc.conf의 'key' 설정 중 secure 항목에 복사합니다. key의 이름은 적당히 붙입니다. 저는 'mykey'로 하였습니다.

예를들면, 아래와 같습니다.(제가 한 것과는 물론 다르죠)

key "mykey" {
algorithm hmac-md5;
secret "JHAqThzehwRzCQjtBQdVR0pdKkXaIuiCAaVfzsRtLPeunsRyskWRbasvOOck";
};

3. 이것을 그대로 /etc/named.conf의 적당한 대목에 복사합니다. 마우스로 긁어서 옮기면 되죠. 그 다음 중요한 것인데, 다음의 내용을 /etc/named.conf에 설정하여야 합니다. 이것은 bind-9.x.x의 CHANGES 파일 에 나오는데, 다른 어디에서도 언급하지 않는 대목이더군요. 논리적으로 봐서는 이 대목이 앞서의 key 설정 대목보다 위로 가는 게 좋겠죠. 아래에 예를듭니다.

controls {
inet * port 1500
allow { any; } keys { "mykey"; };
};


key "mykey" {
algorithm hmac-md5;
secret "JHAqThzehwRzCQjtBQdVR0pdKkXaIuiCAaVfzsRtLPeunsRyskWRbasvOOck";
};

위 'controls' 설정에서 port 번호는, CHANGES 파일에서는 1024로 되어 있습니다. 제 시스템에서는 로칼에서 NFS를 사용하는데, rpc.statd가 이 포트를 쓰고 있기 때문에 1500으로 수정하였습니다. 자신의 시스템에서 임의로 정한 포트를 다른 프로그램이 이미 사용하고 있는 지 여부를 알려 면, 'fuser -n tcp 1024'해서 파악된 프로세스 ID에 근거하여 'ps ax | grep PID' 하면 됩니다.

4. 이제 /etc/named.conf에서 각 zone, reverse zone 설정 *전체*에 아래와 같은 내용을 추가합니다.(root cache와 localhost zone은 할 필요가 없겠죠)

allow-update { key "mykey"; };

하나만 예를들면 아래와 같습니다.

zone "plw.net" {
type master;
file "plw.net.zone";
notify no;
allow-update { key "mykey"; };
};


5. 이제 1에서 생성한 2개의 key 파일을 /var/named로 복사합니다.(named의 FAQ에 의하면 클라이언트 호스트의 /var/named라고 말하고 있는데, 저는 그냥 bind9가 설치된 제 pc의 거기에 시험삼아 옮겨보고 하는데, 잘 되는군 요)

6. '/etc/rc.d/init.d/named restart'해서 named를 재실행합니다.

제대로 되면 /var/log/messages에 아래와 같은 내용이 보여야 합니다.
그대로 옮기니 행이 너무 길어져 연도, 날짜, 시각은 생략하였습니다.
마지막의 'running'이 보여야 제대로 실행된 것입니다. 위의 named
스크립트를 실행할 때는 성공 여부를 잘 모르는 수가 많습니다.

progress named: named shutdown succeeded
progress named: named startup succeeded
progress named[3842]: starting BIND 9.1.3rc1 -u named
progress named[3842]: using 1 CPU
progress named[3846]: loading configuration from '/etc/named.conf'
progress named[3846]: no IPv6 interfaces found
progress named[3846]: listening on IPv4 interface lo, 127.0.0.1#53
progress named[3846]: listening on IPv4 interface eth0, 192.168.2.1#53
progress named[3846]: listening on IPv4 interface eth1, 192.168.1.1#53
progress named[3846]: listening on IPv4 interface ppp0, 211.58.12.247#53
progress named[3846]: command channel listening on 0.0.0.0#1500
progress named[3846]: running


7. rndc, nsupdate 명령이 듣는 지 시험한다.

7-1) /usr/sbin/rndc -p 1500 reload
현재 rndc는 8.x.x 이전 버젼의 ndcd에 비해 구현된 기능이 적습
니다.

7-2) /us/nsupdate -d -k /var/named/Knamed.+157+61652.key

nsupdate의 경우는 성공적이면 셸 형태로 명령을 내려야 합니다. 자 세한 것은 'man nsupdate'해서 살펴보시길 ...

추신 #1 :
bind-9.1.x rpm에 같이 배포되는 유틸리티 중 name-checkconf는 잘 작동하나 named-checkzone은 좀 문제가 있는 것같군요. named가 실행 되면서 아무런 경고를 내지도 않는데(디버깅 옵션을 준 상태에서도), 이건 계속 뭔가가 잘못되었다고 경고를 내고 있군요. 결과적으로 name lookup 등은 잘 작동하는데 ...

추신 #2:
오늘 질문 덕에 그 동안, 신경도 안 쓰고 있던 DNSSEC에 살펴보고 약 간의 정리를 할 기회를 가졌습니다. 감사합니다. :-)

'PHP' 카테고리의 다른 글

SMTP 에러 코드 설명  (0) 2005.12.24
proftpd 설치 가이드  (0) 2005.12.24
리눅스에서 apm 설치 가이드  (0) 2005.12.24
솔라리스 기초 (설치과정)  (0) 2005.12.24
PROFTPD 설치및 설정  (0) 2005.12.24