[root@ns etc]# cat rndc.conf

# Start of rndc.conf

options {

default-key             "***-key";

default-server  127.0.0.1;

default-port    953;

};

server localhost {

key                             "***-key";

};

include "/var/named/chroot/etc/rndc.key";

# End of rndc.conf

[root@ns etc]# cat rndc.key

key "***-key" {

algorithm       hmac-md5;

secret          "cyldjQ1zKMFrhSytMHBrQiewdVsDaYQdp47v8qfndQkSKJi9yb3NsS6MjeUR";

};

[root@ns etc]# ls -al

합계 24

drwxr-xr-x    2 named    named        4096  7월 22 15:38 ./

drwxr-xr-x    8 named    named        4096  5월  6  2009 ../

-rw-r--r--    1 root     root          152  7월 10  2008 localtime

-rw-r--r--    1 named    named        3431  3월  7  2009 named.conf

-rw-r--r--    1 named    named         209  2월  1  2008 rndc.conf

-rw-r-----    1 named    named         113  7월 28  2008 rndc.key

[root@ns etc]# cat named.conf

/* 작성: 김정균 <http://oops.org>

*

* 이 설정파일은 chroot 를 적용한 named 를 운영하기 위한 파일이다. 모든

* 설정은 /var/named/chroot 아래에서 이루어 진다.

*

* /var/named/chroot/etc/named.conf (named 설정파일)

* /var/named/chroot/etc/rncd.conf  (rndc 설정파일)

* /var/named/chroot/zone           (zone file 위치)

* /var/named/chroot/pid            (named pid 정보가 들어가는 파일)

* /var/named/charoot/log           (queiry log 가 남음)

*/

options {

version "unknown";

directory "/zone";

allow-transfer {

127.0.0.1;210.***.***.0/24;210.***.***.0/24;211.***.***.0/24;211.***.***.46/24;

};

auth-nxdomain no;

listen-on-v6 { any; };

/* 도메인명중 _ 같은 특수문자 체크하지 않음 */

check-names master ignore;

/* process id 를 기록한 파일을 지정 */

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

/* cacheing nameserver 의 역할을 하도록 하는 query를 제한한다. */

allow-query { any; };

/* 이 서버에 질의를 할 수 있는 네트워크를 제한 한다. */

allow-recursion { 211.***.***.0/24;211.***.***.0/24;203.***.***.2;211.***.***.0/24;203.***.***.0/24;203.***.***.0/24; };

/*

* 2 차 운영시, Master 의 변경사항을 Slave 로 통보를 하는 기능. 2

* 차를 운영하지 않는다면 no 로 정의한다.

*/

notify no;

/*

* DNS 를 질의하는 클라이언트쪽 입장에서, 질의시 사용할 client ip

* 와 포트에 대한 정의 이전의 bind 4.x 에서는 질의시 default 포트

* 로 응답시와 동일하게 53번을 사용하였으나 8.x 이후부터는 응답은

* 53번, 질의는 1024 이후의 unpriviledge 포트를 사용한다. 이때 별

* 도의 포트를 정의하였을 경우 해당 포트를 소스포트로 질의하게 되

* 며 만약 address 역시 지정하였을 경우 aliasing 된 환경에서 특정

* ip 를 소스로 질의하게 된다. 위와같이 설정후 netstat -lnp 로 확

* 인해 보면 특정 질의 ip 의 특정 질의 port 가 별도로 listen 하는

* 것을 확인하실 수 있으며 tcpdump 로 확인해 보면 실제 질의시에도

* 지정한 ip 와 포트를 소스로 하는 것을 확인할 수 있다.

*/

// query-source address * port 53;

};

/* key 이름을 변경하려면 controls, key, rndc.conf 의 이름을 동일하게 변경

* 해 줘야 한다.

*/

controls {

inet 127.0.0.1 port 953

allow { localhost; } keys { "jje-key"; };

};

include "/etc/rndc.key";

/* log option 을 조절한다. 기존의 설정에 아래의 설정을 추가할 수 있다.

* category database { null; };

* category security { null; };

* category resolver { null; };

* category xfer-in { null; };

* category xfer-out { null; };

* category client { null; };

* category dispatch { null; };

*/

logging {

/* client 로 부터 들어오는 로그를 /u/bind/log/named.log

* 에 남김. 로그를 남기기 위해서는 하단의 category queries 의 주석

* 을 풀어줘야 함.

*/

channel "query-log" {

file "/log/named.log";

severity info;

print-category yes;

print-time yes;

};

category queries { query-log; };

category lame-servers { null; };

category unmatched { null; };

category network { null; };

category notify { null; };

category update { null; };

};

/* a caching only nameserver config */

zone "." IN {

type hint;

file "global/named.root";

};

/* local network configuration */

zone "localhost" IN {

type master;

file "local/localhost.zone";

allow-update { none; };

};

zone "0.0.127.in-addr.arpa" IN {

type master;

file "local/localnetwork.rev";

allow-update { none; };

};

/* user level configuration */

zone "jje.go.kr" IN {

type master;

file "jje/jje.go.kr";

allow-update { none; };

};

zone "116.248.211.in-addr.arpa" IN {

type master;

file "jje/jje.go.kr.rev";

allow-update { none; };

};

[root@ns etc]# cd rc.d/

[root@ns rc.d]# ls

init.d/  rc*  rc.local*  rc.sysinit*  rc0.d/  rc1.d/  rc2.d/  rc3.d/  rc4.d/  rc5.d/  rc6.d/

[root@ns rc.d]# cd init.d/

[root@ns init.d]# ls

arpwatch*  functions*  halt*      killall*  named*  network*  oops-firewall*  rawdevices*  syslog*   xinetd*

crond*     gpm*        keytable*  kudzu*    netfs*  ntpd*     random*         single*      sysstat*

[root@ns init.d]# cat named

#!/bin/sh

#

# named           This shell script takes care of starting and stopping

#                 named (BIND DNS server).

#

# chkconfig: - 55 45

# description: named (BIND) is a Domain Name Server (DNS) \

# that is used to resolve host names to IP addresses.

# probe: true

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

. /etc/sysconfig/named

[ -z "$CHROOTDIR" ] && CHROOTDIR=/var/named/chroot

NCONF=${CHROOTDIR}/etc/named.conf

RCONF=${CHROOTDIR}/etc/rndc.conf

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 0

[ -f "/usr/sbin/named" ] || exit 0

[ -f "${NCONF}" ] || exit 0

if [ -n "${CHROOTDIR}" ] && [ -d "${CHROOTDIR}" ]; then

chroot="-t ${CHROOTDIR}"

fi

RETVAL=0

# See how we were called.

case "$1" in

start)

# Start daemons.

echo -n "Starting named: "

daemon named -u named $chroot

RETVAL=$?

[ $RETVAL -eq 0 ] && touch /var/lock/subsys/named

echo

;;

stop)

# Stop daemons.

echo -n "Shutting down named: "

/usr/sbin/rndc -c ${RCONF} -p 953 stop >/dev/null 2>&1

RETVAL=$?

if [ $RETVAL -ne 0 ]; then

killproc named -TERM

RETVAL=$?

fi

sleep 1

if [ "${RETVAL}" -eq 0 ]; then

echo_success

else

killproc named -TERM

RETVAL=$?

if [ "${RETVAL}" -eq 0 ]; then

echo_success

else

echo_failure

fi

fi

[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/named

echo

;;

restart)

$0 stop

$0 start

;;

reload)

echo -n "Reloading named: "

/usr/sbin/rndc -c ${RCONF} -p 953 reload >/dev/null 2>&1

RETVAL=$?

sleep 1

if [ "${RETVAL}" -eq 0 ]; then

echo_success

else

echo_failure

fi

echo

exit $RETVAL

;;

status)

/usr/sbin/rndc -c ${RCONF} status

;;

*)

echo "Usage: named {start|stop|reload|status|restart}"

exit 1

esac

exit $RETVAL