Linux/Source/BIND
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
ns-lab
nowsky system-lab
DigiLoog
Linux
Windows
開始行:
*BIND [#r36f935d]
[[BIND>+http://www.isc.org/downloads/bind/]]
Linux上にDNSサーバ(名前解決)を構築する為のミドルウェア。
~
*インストール [#n8ab718e]
&size(16){&font(b){0. アンインストール};};
インストール済みのBINDが残ったまま新しいBINDを入れると、
後に相性問題とかで面倒くさい事になるので、事前にアンイン...
$ yum -y remove bind bind-libs bind-chroot bind-devel bi...
$ ldconfig
~
&size(16){&font(b){1. ビルド・インストール};};
事前に最新版のBINDをダウンロードしておく事。
今回は[[OpenSSL:+http://www.ns-lab.org/wiki/?Linux%2FSour...
また、ビルド前の./configureかける時に、普通はオプションと...
今回は長めのオプションを指定するのでオプションコマンドを...
$ tar zxvf bind-9.10.1.tar.gz
$ echo "--prefix=/usr/local/bind-9.10.1 --with-openssl=/...
$ 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. ユーザとディレクトリの作成};};
ソースからインストールした場合、BINDの実行ユーザやchroot...
さらに言うと、initファイルやnamed.confも自作する必要があ...
※コンフィグのひな形はソース内の"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 ./zero c 1 5
$ mknod -m 644 ./full c 1 7
$ mknod -m 644 ./random c 1 8
$ mknod -m 644 ./urandom c 1 9
$ cd ../var
$ mkdir -p ./cache/bind ./log ./named/data ./named/dynam...
$ chown named.named ./log ./run/named
$ chown -R named.named ./named
~
&size(16){&font(b){3. 設定ファイル};};
基本的に1から作成する必要がある。BIND側でテンプレを入れて...
下記では、必須のzoneファイルのみをメモ。
※1. named.confは/var/named/chroot/etc/named.confに設置
※2. named.confの中身やzoneの書き方は[[他のサイト>+https:/...
$ /usr/local/bind/bin/dig . ns @202.12.27.33 +bufsize=10...
$ cp /etc/localtime /var/named/chroot/etc/
$ vi /var/named/chroot/var/named/named.empty
--------------------------------------------------
$TTL 3H
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS localhost.
IN A 127.0.0.1
IN 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
IN NS localhost.
IN A 127.0.0.1
IN 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
IN NS localhost.
IN A 127.0.0.1
IN AAAA ::1
IN PTR localhost.
$ vi /var/named/chroot/var/named/named.rfc1912.zones
--------------------------------------------------
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0....
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
$ vi /etc/init.d/named
--------------------------------------------------
#!/bin/sh
#
# named This shell script takes care of starti...
# 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 ${BIN...
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_OPT...
echo
touch /var/lock/subsys/named
fi
;;
stop)
# Stop daemons.
echo -n "Shutting down bind: "
killproc -p ${BIND_PIDFILE}
for PID in `ps -ef | grep "[n]amed.*${BIND_USER}...
do
kill ${PID}
done
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. 起動準備};};
BINDを起動させる時に/etcからBINDのコンフィグを読み込む必...
ついでにパーミッション操作も行い、読み取り権限の整理をする
$ cd /etc
$ ln -s /var/named/chroot/etc/named.conf .
$ chmod 755 /etc/init.d/named
$ chown root.root /etc/init.d/named
$ chkconfig --add named
$ chkconfig named on
~
次にBINDと[[rndc:+http://www.turbolinux.com/support/docum...
通常は、rndc.confの作成に/dev/randomの乱数を利用するのだ...
乱数から鍵を作成するのは時間がかかる為、キーボード連打に...
$ /usr/local/bind/sbin/rndc-confgen -a -b 512 -k rndc-ke...
start typing:
『ひたすら、キーボードを叩き続ける』
stop typing.
wrote key file "/usr/local/bind-9.10.1/etc/rndc.key"
$ cd /var/named/chroot/etc/
$ mv /usr/local/bind/etc/rndc.key .
$ cp rndc.key rndc.conf
$ chmod 640 ./rndc.key && chown root.named ./rndc.key
$ chmod 600 ./rndc.conf && chown root.root ./rndc.conf
$ ln -s /var/named/chroot/etc/rndc.key /etc/rndc.key
$ ln -s /var/named/chroot/etc/rndc.conf /etc/rndc.conf
--------------------------------------------------
$ vi ./rndc.conf
※ 以下を追記
options {
default-key "rndc-key";
default-server localhost;
default-port 953;
};
~
最後に起動テストを実施する。
initから起動した場合はエラーログが出力されない為、
最初に起動コマンドを直打ちし、無事起動したらプロセスをkil...
※起動コマンド直打ち
$ /usr/local/bind/sbin/named -u named -c /etc/named.conf...
※initスクリプトからの起動
$ /etc/init.d/named start
~
&size(16){&font(b){5. ログローテート};};
BINDはログが肥大化しやすいので、ちゃんとローテートをかけ...
ローテートファイルの書式は色々あるので適当にググって調べ...
$ ln -s /var/named/chroot/var/log /var/log/named
$ vi /etc/logrotate.d/named
--------------------------------------------------
/var/log/named/named.log {
daily
compress
rotate 30
missingok
notifempty
sharedscripts
delaycompress
create 0644 named named
postrotate
/etc/init.d/named restart > /dev/null 2>/dev/nul...
endscript
}
*エラー項目 [#e7776de0]
~&size(16){&font(b){1. DSO_load error};};
chroot環境でBINDを起動すると、/var/log/messagesに以下のロ...
DSO support routines:DSO_load:could not load the shared ...
engine routines:DYNAMIC_LOAD:dso not found:eng_dyn.c:450:
engine routines:ENGINE_by_id:no such engine:eng_list.c:4...
~
chroot環境の場合、DNSSECに必要なSSLライブラリもchroot環境...
結果、存在しない『{$CHROOT_DIR}/usr/local/openssl/lib』を...
解決方法としては
1. /usr/local/openssl/lib/engines/*をchroot環境下へコピー
2. chrootを諦める
のどちらかを実施する必要がある。
~
ちなみに、シンボリックリンクをchroot内のディレクトリから...
"chroot環境下からのシンボリックリンク"とBINDに解釈される...
$ ln -s /usr/local/openssl /var/chroot/named/usr/openssl
にしても、実際は
$ ln -s ${CHROOT_DIR}/usr/local/openssl ${CHROOT_DIR}/va...
へ張っている事と同じとなり起動出来なくなる。
~
1の方法で解決する場合、
$ mkdir -p ${CHROOT_DIR}/usr/local/openssl/lib/engines
$ cp -a /usr/local/openssl/lib/engines/* ${CHROOT_DIR}/u...
$ chown root.root ${CHROOT_DIR}/usr/local/openssl/lib/en...
を実行し、実ファイルを移動させる必要がある。
~
また、上記コマンドで使用しているディレクトリ名opensslは
"シンボリックリンクでないOpenSSLのディレクトリ名"と同じ物...
つまり、OpenSSLの実ディレクトリが/usr/local/openssl-1.0.0...
$ mkdir -p ${CHROOT_DIR}/usr/local/openssl-1.0.0
とする必要がある。
それでも起動出来ない場合は、OSレベルのライブラリディレク...
OpenSSL環境下のライブラリをそっちへ移動してみる。
~
&size(16){&font(b){2. ログのタイムスタンプ};};
chroot環境では、BINDから出力されるログのタイムスタンプがU...
これを、JSTにするには"localtime"設定もchroot下にコピーす...
$ cp /etc/localtime ${CHROOT_DIR}/etc/localtime
$ chown root.root ${CHROOT_DIR}/etc/localtime
$ chmod 644 ${CHROOT_DIR}/etc/localtime
$ /etc/init.d/named restart
終了行:
*BIND [#r36f935d]
[[BIND>+http://www.isc.org/downloads/bind/]]
Linux上にDNSサーバ(名前解決)を構築する為のミドルウェア。
~
*インストール [#n8ab718e]
&size(16){&font(b){0. アンインストール};};
インストール済みのBINDが残ったまま新しいBINDを入れると、
後に相性問題とかで面倒くさい事になるので、事前にアンイン...
$ yum -y remove bind bind-libs bind-chroot bind-devel bi...
$ ldconfig
~
&size(16){&font(b){1. ビルド・インストール};};
事前に最新版のBINDをダウンロードしておく事。
今回は[[OpenSSL:+http://www.ns-lab.org/wiki/?Linux%2FSour...
また、ビルド前の./configureかける時に、普通はオプションと...
今回は長めのオプションを指定するのでオプションコマンドを...
$ tar zxvf bind-9.10.1.tar.gz
$ echo "--prefix=/usr/local/bind-9.10.1 --with-openssl=/...
$ 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. ユーザとディレクトリの作成};};
ソースからインストールした場合、BINDの実行ユーザやchroot...
さらに言うと、initファイルやnamed.confも自作する必要があ...
※コンフィグのひな形はソース内の"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 ./zero c 1 5
$ mknod -m 644 ./full c 1 7
$ mknod -m 644 ./random c 1 8
$ mknod -m 644 ./urandom c 1 9
$ cd ../var
$ mkdir -p ./cache/bind ./log ./named/data ./named/dynam...
$ chown named.named ./log ./run/named
$ chown -R named.named ./named
~
&size(16){&font(b){3. 設定ファイル};};
基本的に1から作成する必要がある。BIND側でテンプレを入れて...
下記では、必須のzoneファイルのみをメモ。
※1. named.confは/var/named/chroot/etc/named.confに設置
※2. named.confの中身やzoneの書き方は[[他のサイト>+https:/...
$ /usr/local/bind/bin/dig . ns @202.12.27.33 +bufsize=10...
$ cp /etc/localtime /var/named/chroot/etc/
$ vi /var/named/chroot/var/named/named.empty
--------------------------------------------------
$TTL 3H
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS localhost.
IN A 127.0.0.1
IN 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
IN NS localhost.
IN A 127.0.0.1
IN 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
IN NS localhost.
IN A 127.0.0.1
IN AAAA ::1
IN PTR localhost.
$ vi /var/named/chroot/var/named/named.rfc1912.zones
--------------------------------------------------
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0....
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
$ vi /etc/init.d/named
--------------------------------------------------
#!/bin/sh
#
# named This shell script takes care of starti...
# 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 ${BIN...
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_OPT...
echo
touch /var/lock/subsys/named
fi
;;
stop)
# Stop daemons.
echo -n "Shutting down bind: "
killproc -p ${BIND_PIDFILE}
for PID in `ps -ef | grep "[n]amed.*${BIND_USER}...
do
kill ${PID}
done
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. 起動準備};};
BINDを起動させる時に/etcからBINDのコンフィグを読み込む必...
ついでにパーミッション操作も行い、読み取り権限の整理をする
$ cd /etc
$ ln -s /var/named/chroot/etc/named.conf .
$ chmod 755 /etc/init.d/named
$ chown root.root /etc/init.d/named
$ chkconfig --add named
$ chkconfig named on
~
次にBINDと[[rndc:+http://www.turbolinux.com/support/docum...
通常は、rndc.confの作成に/dev/randomの乱数を利用するのだ...
乱数から鍵を作成するのは時間がかかる為、キーボード連打に...
$ /usr/local/bind/sbin/rndc-confgen -a -b 512 -k rndc-ke...
start typing:
『ひたすら、キーボードを叩き続ける』
stop typing.
wrote key file "/usr/local/bind-9.10.1/etc/rndc.key"
$ cd /var/named/chroot/etc/
$ mv /usr/local/bind/etc/rndc.key .
$ cp rndc.key rndc.conf
$ chmod 640 ./rndc.key && chown root.named ./rndc.key
$ chmod 600 ./rndc.conf && chown root.root ./rndc.conf
$ ln -s /var/named/chroot/etc/rndc.key /etc/rndc.key
$ ln -s /var/named/chroot/etc/rndc.conf /etc/rndc.conf
--------------------------------------------------
$ vi ./rndc.conf
※ 以下を追記
options {
default-key "rndc-key";
default-server localhost;
default-port 953;
};
~
最後に起動テストを実施する。
initから起動した場合はエラーログが出力されない為、
最初に起動コマンドを直打ちし、無事起動したらプロセスをkil...
※起動コマンド直打ち
$ /usr/local/bind/sbin/named -u named -c /etc/named.conf...
※initスクリプトからの起動
$ /etc/init.d/named start
~
&size(16){&font(b){5. ログローテート};};
BINDはログが肥大化しやすいので、ちゃんとローテートをかけ...
ローテートファイルの書式は色々あるので適当にググって調べ...
$ ln -s /var/named/chroot/var/log /var/log/named
$ vi /etc/logrotate.d/named
--------------------------------------------------
/var/log/named/named.log {
daily
compress
rotate 30
missingok
notifempty
sharedscripts
delaycompress
create 0644 named named
postrotate
/etc/init.d/named restart > /dev/null 2>/dev/nul...
endscript
}
*エラー項目 [#e7776de0]
~&size(16){&font(b){1. DSO_load error};};
chroot環境でBINDを起動すると、/var/log/messagesに以下のロ...
DSO support routines:DSO_load:could not load the shared ...
engine routines:DYNAMIC_LOAD:dso not found:eng_dyn.c:450:
engine routines:ENGINE_by_id:no such engine:eng_list.c:4...
~
chroot環境の場合、DNSSECに必要なSSLライブラリもchroot環境...
結果、存在しない『{$CHROOT_DIR}/usr/local/openssl/lib』を...
解決方法としては
1. /usr/local/openssl/lib/engines/*をchroot環境下へコピー
2. chrootを諦める
のどちらかを実施する必要がある。
~
ちなみに、シンボリックリンクをchroot内のディレクトリから...
"chroot環境下からのシンボリックリンク"とBINDに解釈される...
$ ln -s /usr/local/openssl /var/chroot/named/usr/openssl
にしても、実際は
$ ln -s ${CHROOT_DIR}/usr/local/openssl ${CHROOT_DIR}/va...
へ張っている事と同じとなり起動出来なくなる。
~
1の方法で解決する場合、
$ mkdir -p ${CHROOT_DIR}/usr/local/openssl/lib/engines
$ cp -a /usr/local/openssl/lib/engines/* ${CHROOT_DIR}/u...
$ chown root.root ${CHROOT_DIR}/usr/local/openssl/lib/en...
を実行し、実ファイルを移動させる必要がある。
~
また、上記コマンドで使用しているディレクトリ名opensslは
"シンボリックリンクでないOpenSSLのディレクトリ名"と同じ物...
つまり、OpenSSLの実ディレクトリが/usr/local/openssl-1.0.0...
$ mkdir -p ${CHROOT_DIR}/usr/local/openssl-1.0.0
とする必要がある。
それでも起動出来ない場合は、OSレベルのライブラリディレク...
OpenSSL環境下のライブラリをそっちへ移動してみる。
~
&size(16){&font(b){2. ログのタイムスタンプ};};
chroot環境では、BINDから出力されるログのタイムスタンプがU...
これを、JSTにするには"localtime"設定もchroot下にコピーす...
$ cp /etc/localtime ${CHROOT_DIR}/etc/localtime
$ chown root.root ${CHROOT_DIR}/etc/localtime
$ chmod 644 ${CHROOT_DIR}/etc/localtime
$ /etc/init.d/named restart
ページ名: