= gentoo BIND 설치 (chroot 버전) = [[TableOfContents]] == 소개 == 이 문서는 chroot BIND 문서이다. chroot 로 운영하지 않으려면 아래 ebuild /var... config 항목을 실행시켜 주지 않으면 된다. 그리고 기본 디렉토리를 /var/bind 로 가정한다. == 설치 == === bind , bind-tools install === {{{# emerge bind bind-tools }}}네임서버 bind 와 bind-tools (dig, nslookup, host 등) 을 설치한다 === chroot === ==== chroot 빌드 ==== chroot 로 돌리기 위해서 아래와 같이 실행한다{{{ # ebuild /var/db/pkg/net-dns// config }}} 설치된 버전이 bind-9.2.2-r3 임으로 아래와 같이 입력한다{{{ # ebuild /var/db/pkg/net-dns/bind-9.2.2-r3/bind-9.2.2-r3.ebuild config * * Setting up the chroot directory... Done. * * Add the following to your root .bashrc or .bash_profile: * alias rndc='rndc -k /chroot/dns/etc/bind/rndc.key' * Then do the following: * source /root/.bashrc or .bash_profile *}}} 위와 같이 하면 /etc/conf.d/named 파일 내용을 보면 CHROOT 라는 항목도 변경되어 있다 chroot 로 변경하는 이유는 named 가 보안버그상 취약성이 발견되어 뚫릴 수가 있는데, 이럴때를 방지하기 위해서 사용한다. chroot 사용 안하는 사람은 /var/bind 로 사용한다. ==== chroot 옵션확인 ==== {{{ # cat /etc/conf.d/named # Set various named options here. # OPTIONS="" # Set this to the number of processors you have. # CPU="1" # If you wish to run bind in a chroot, run: # ebuild /var/db/pkg/net-dns// config # and un-comment the following line. # You can specify a different chroot directory but MAKE SURE it's empty. CHROOT="/chroot/dns" }}} ==== chroot directory ==== chroot 하위디렉토리는 아래와 같이 구성되어 있다. {{{ # cd /chroot # tree . `-- dns |-- dev | |-- random | `-- zero |-- etc | |-- bind | | |-- named.conf | | |-- pri -> ../../var/bind/pri | | |-- rndc.key | | `-- sec -> ../../var/bind/sec | `-- localtime `-- var |-- bind | |-- named.ca | |-- pri | | |-- 127.zone | | `-- localhost.zone | |-- root.cache -> ../../var/bind/named.ca | `-- sec `-- run `-- named 12 directories, 9 files}}} == 설정 == === named.conf === {{{ # vi /chroot/dns/etc/bind/named.conf }}} 위 파일 중에 listen-on 이라고 되어있는 항목이 있는데, 현재 상태가 127.0.0.1 에 대한 lookup 만 허용되어있다. 서비스 돌릴 IP 를 추가하여 준다.{{{ listen-on { 127.0.0.1; 192.168.0.100; 210.111.16.144; };}}} === named 데몬 등록 & 시작 === named 를 시작데몬에 등록시키고 start 시킨다 {{{ # rc-update add named default * named added to runlevel default * Caching service dependencies... * rc-update complete. # /etc/init.d/named start * Starting chrooted named... [ ok ] }}} 여기까지면 캐슁서버로 훌륭한 동작을 한다. == kkanari.info 도메인 등록 == === named.conf 수정 === 그럼 도메인을 하나 등록해 보자 ! kkanari.info 도메인을 등록해 보겠다. (파일명 kkanari.info.zone) /chroot/dns/etc/bind/named.conf 에 아래와 같이 추가를 해 준다. {{{ zone "kkanari.info" IN { type master; file "pri/kkanari.info.zone"; allow-update { none; }; }; }}} === zone 파일생성 === /chroot/dns/etc/bind/pri/kkanari.info.zone 파일을 아래와 같이 만들어 준다. {{{ $TTL 3600 @ IN SOA ns.kkanari.info. root.kkanari.info. ( 2005012701 ; serial 28800 ; refresh 7200 ; retry 604800 ; expire 86400 ; minimum ) ; ; IN NS ns.kkanari.info. IN A 210.111.16.144 IN MX 10 mail ; ; ns IN A 210.111.16.144 ns2 IN A 210.111.16.144 mail IN A 210.111.16.144 ftp IN A 210.111.16.144 www IN A 210.111.16.144 home IN A 210.111.16.144 * IN A 210.111.16.144 }}} === named zone reload === zone 파일 load 를 해준다 {{{ # rndc reload }}} === log 확인 === /var/log/everything/current 로그를 확인해 보면 (syslogd 가 아닌 metalog 다 ;;) {{{ Jan 27 15:06:21 [kernel] process `rndc' is using obsolete setsockopt SO_BSDCOMPAT Jan 27 15:06:21 [named] loading configuration from '/etc/bind/named.conf' Jan 27 15:06:21 [named] no IPv6 interfaces found Jan 27 15:06:21 [named] zone kkanari.info/IN: loaded serial 2005012701 }}} 위와같이 정상적으로 읽어들였다. === 테스트 !!! === 테스트를 해 보자 {{{ > server kkanari.info Default Server: kkanari.info Address: 210.111.16.144 > kkanari.info Server: kkanari.info Address: 210.111.16.144 Name: kkanari.info Address: 210.111.16.144 > www.kkanari.info Server: kkanari.info Address: 210.111.16.144 Name: www.kkanari.info Address: 210.111.16.144 > mail.kkanari.info Server: kkanari.info Address: 210.111.16.144 Name: mail.kkanari.info Address: 210.111.16.144 }}} 아주 잘 된다 :D