*BIND [#r36f935d]
[[BIND>+http://www.isc.org/downloads/bind/]]
Linux上にDNSサーバ(名前解決)を構築する為のミドルウェア。
~
*インストール [#n8ab718e]
&size(16){&font(b){0. アンインストール};};
インストール済みのBINDが残ったまま新しいBINDを入れると、
後に起動問題とかで面倒くさい事になるので、事前にアンインストールをしておく。
 $ yum remove bind bind-libs bind-chroot bind-devel bind-devel
 $ ldconfig
~
&size(16){&font(b){1. ビルド・インストール};};
事前に最新版のBINDをダウンロードしておく事。
今回は[[OpenSSL:+http://www.ns-lab.org/wiki/?Linux%2FSource%2FOpenSSL]]をソースからインストールしてある事と、
BINDをchroot環境で動作させる事とする。
また、./configureかける時に、普通はオプションとかを直接打ち込むのだが、
今回は長めのオプションを指定するので、オプションコマンドを別ファイルにしておく。
 $ tar zxvf bind-9.10.1.tar.gz
 $ echo "--prefix=/usr/local/bind-9.10.1 --with-openssl=/usr/local/openssl --enable-threads --enable-ipv6 --with-pic --disable-static --disable-openssl-version-check --disable-isc-spnego --enable-largefile --enable-chroot" > ./configure.option
 $ cd bind-9.10.1
 $ ./configure `cat ../configure.option`
 $ make
 $ make install
 $ cd /usr/local
 $ ln -s /usr/local/bind-9.10.1 ./bind
~
&size(16){&font(b){2. ユーザとディレクトリの作成};};
ソースからインストールした場合、ユーザやchrootディレクトリも自作する必要がある。
さらに言うと、initファイルやnamed.confも1から自作する必要がある。
※コンフィグのひな形は"FAQ"に書いてあるが、完成形コンフィグではない点に注意。
~
今回は以下の設定にて設定を行う。
また、ディレクトリはchroot化しなかった場合と同じ構成とする。
 BIND(chroot)ディレクトリ:/var/named/chroot
 BIND実行ユーザ:named
 BIND実行グループ:named
 BIND設定ファイル:/var/named/chroot/etc/named.conf
~
 $ mkdir /var/named
 $ groupadd named
 $ useradd -g named -d /var/named -s /sbin/nologin named
 $ rm -rf /var/named/* && rm -rf /named/.*
 $ chmod 750 /var/named
 $ chown root.named /var/named

 $ cd /var/named
 $ mkdir -p ./chroot/dev ./chroot/etc ./chroot/var
 $ cd ./chroot/dev
 $ mknod -m 644 ./null c 1 3
 $ mknod -m 644 ./random c 1 8
 $ cd ../var
 $ mkdir -p ./cache/bind ./log ./named/data ./named/dynamic ./run/named
 $ chown named.named ./log ./run/named
 $ chown -R named.named ./named
~
&size(16){&font(b){3. 設定ファイル};};
基本的に1から作成する必要がある。BIND側でテンプレを入れてくれればいいのに...
 $ /usr/local/bind/bin/dig . ns @202.12.27.33 +bufsize=1024 > /var/named/chroot/var/named/named.ca

 $ vi /var/named/chroot/var/named/named.empty

 $TTL 3H
 @   IN SOA  @ rname.invalid. (
                                 0       ; serial
                                 1D      ; refresh
                                 1H      ; retry
                                 1W      ; expire
                                 3H )    ; minimum
     NS      @
     A       127.0.0.1
     AAAA    ::1

 $ vi /var/named/chroot/var/named/named.localhost

 $TTL 1D
 @   IN SOA  @ rname.invalid. (
                                 0       ; serial
                                 1D      ; refresh
                                 1H      ; retry
                                 1W      ; expire
                                 3H )    ; minimum
     NS      @
     A       127.0.0.1
     AAAA    ::1

  $ vi /var/named/chroot/var/named/named.loopback

 $TTL 1D
 @   IN SOA  @ rname.invalid. (
                                 0       ; serial
                                 1D      ; refresh
                                 1H      ; retry
                                 1W      ; expire
                                 3H )    ; minimum
     NS      @
     A       127.0.0.1
     AAAA    ::1
     PTR     localhost.



 $ vi /etc/init.d/named

 #!/bin/sh
 #
 # named           This shell script takes care of starting and stopping
 #                 named (BIND DNS server).
 #
 # chkconfig: 345 55 45# description: named (BIND) is a Domain Name Server (DNS)
 # that is used to resolve host names to IP addresses.
 # probe: true
 
 # BIND configuration
 BIND_ROOT="/var/named/chroot"
 BIND_CONFIG="/etc/named.conf"
 BIND_USER="named"
 BIND_OPTIONS="-u ${BIND_USER} -c ${BIND_CONFIG} -t ${BIND_ROOT}"
 BIND_PIDFILE="${BIND_ROOT}/var/run/named/named.pid"
 
 # Source function library.
 . /etc/rc.d/init.d/functions
 
 # Source networking configuration.
 . /etc/sysconfig/network
 
 # Check that networking is up.
 [ ${NETWORKING} = "no" ] && exit 0
 [ -f /usr/local/bind/sbin/named ] || exit 0
 [ -f ${BIND_ROOT}${BIND_CONFIG} ] || exit 0
 
 # See how we were called.
 case "$1" in
     start)
         # Start BIND.
         echo -n "Starting bind: "
         if [ -e /var/lock/subsys/named ] ; then
             echo "BIND running"
             exit 0
         else
             daemon /usr/local/bind/sbin/named ${BIND_OPTIONS}
             echo
             touch /var/lock/subsys/named
         fi
         ;;
     stop)
         # Stop daemons.
         echo -n "Shutting down bind: "
         killproc -p ${BIND_PIDFILE}
         rm -f /var/lock/subsys/named
         echo
         ;;
     status)
         status named
         exit $?
         ;;
     restart)
         $0 stop
         $0 start
         exit $?
         ;;
     *)
         echo "Usage: named {start|stop|restart|status}"
         exit 1
 esac
 
 exit 0
~
&size(16){&font(b){4. logローテート};};
書きかけ