*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ローテート};}; 書きかけ