[EPA]bindのインストールと設定

ビルドとインストール

配布サイト <URL:http://www.isc.org/index.pl?/sw/bind/index.php> からアーカイブを取得.

[ika ~/] > cd /usr/local/src
[ika /usr/local/src/] > sudo -s
[root@ika /usr/local/src/] # tar xfz bind-9.4.1-P1.tar.gz
[root@ika /usr/local/src/] # cd bind-9.4.1-P1
[root@ika /usr/local/src/bind-9.4.1-P1/] # mkdir /usr/local/bind
[root@ika /usr/local/src/bind-9.4.1-P1/] # ./configure --prefix=/usr/local/bind

OpenSSL のバージョンが古いのでセキュリティ脆弱性があると言われるが, Debian の場合はバージョン番号が古いままでもセキュリティパッチは 当たっているので, --disable-openssl-version-check を指定して バージョンチェックを無視する.

なお, 具体的に修正された脆弱性一覧は <URL:http://www.debian.org/security/> にある. configure 時に指摘されている CAN-2002-0659, CAN-2006-4339, CVE-2006-2937, CVE-2006-2940は全て対処されていることを確認.

[root@ika /usr/local/src/bind-9.4.1-P1/] # ./configure --prefix=/usr/local/bind \
                                            --disable-openssl-version-check
[root@ika /usr/local/src/bind-9.4.1-P1/] # make
[root@ika /usr/local/src/bind-9.4.1-P1/] # make install

インストールした Bind には host 等のコマンドも同梱されているため, 既にインストールされている bind9-host, libbind9-0, dnsutils は削除する.

[root@ika /usr/local/src/bind-9.4.1-P1/] # apt-get remove bind9-host libbind9-0 dnsutils

インストールした実行ファイルへのパスの設定

インストールされた Bind の実行ファイル群へパスを通す.

[EPA]パスの設定 <一般ユーザ用コマンドのパス> /usr/local/bind/bin を, <システム管理用コマンドのパス> /usr/local/bind/sbin を追加する.

インストールしたマニュアルへのパスの設定

/etc/manpath.config に以下の行を追加する. 詳しくは [EPA]パスの設定#man 関連のパスの設定 を参照のこと.

MANDATORY_MANPATH                          /usr/local/bind/man
MANPATH_MAP        /usr/local/bind/bin     /usr/local/bind/man
MANPATH_MAP        /usr/local/bind/sbin    /usr/local/bind/man
MANDB_MAP          /usr/local/bind/man     /usr/local/bind/man

ユーザとグループ追加

Bind の実行ユーザとして bind ユーザを作成する. vipw(1)して以下の行を追加.

bind:x:53:53:Bind Sandbox:/usr/local/bind/var:/bin/false

vipw -s して以下の行を追加.

bind:!:13749:0:99999:7:::

同様に bind グループを追加する. vigr して以下の行を追加.

bind:x:53:

vigr -s して以下の行を追加.

bind:*::

パーミッション設定

pid ファイル置場を bind 所有にする.

[root@ika /usr/local/bind/etc/namedb/] # chown bind:bind ../../var/run

ゾーンファイルの用意

/usr/local/bind/etc/namedb に tide の /etc/namedb を移植.

とりあえずの変更方針は, ahs は tide が担当, epa は ika が担当, 逆引きは ika が担当.

起動テスト, 他のDNSサーバの設定変更

起動テスト

[root@ika /usr/local/bind/etc/namedb/] # /usr/local/bind/sbin/named -u bind \
                                           -c /usr/local/bind/etc/namedb/named.conf

gradis 側の /etc/named.conf の epa.scitec.kobe-u.ac.jp. ゾーンの master の IP を ika の IP(133.30.109.22) に変更.

/var/named/scitec.zone の epa.scitec.kobe-u.ac.jp. ゾーンの ネームサーバを ika に変更. つまり

ns.epa.scitec.kobe-u.ac.jp.     IN      A       133.30.109.30

ns.epa.scitec.kobe-u.ac.jp.     IN      A       133.30.109.22

に変更.

/etc/init.d/named reload を実行して再読み込み.

tide の /etc/named.conf から epa ゾーン, 逆引きゾーンのエントリを削除. /etc/rc.d/named restart で再起動.

上流 DNS サーバの設定

scitec.kobe-u.ac.jp. の名前空間の権限を持っている gradis.scitec.kobe-u.ac.jp にログイン. /etc/named.conf に epa.scitec.kobe-u.ac.jp ゾーンのエントリ作成.

以下の行を追加.

gradis:/etc/named.conf
----ここから----
  zone "epa.scitec.kobe-u.ac.jp" {
          type slave;
          file "slave/epa.zone";
          masters {
                  133.30.109.30;
          };
          allow-query { any; };
  };
----ここまで----

/var/named/scitec.zone に以下を記述し, epa.scitec.kobe-u.ac.jp. ドメインの権限をtideに委譲.

gradis:/var/named/scitec.zone
----ここから----
 epa.scitec.kobe-u.ac.jp.    IN  NS  ns.epa.scitec.kobe-u.ac.jp.
 ns.epa.scitec.kobe-u.ac.jp. IN  A   133.30.109.30
 epa.scitec.kobe-u.ac.jp.    IN  NS  gradis.scitec.kobe-u.ac.jp.
----ここまで----

シリアル番号のincrementを忘れずに.

逆引きしたとき, tide 以外には epa ドメインの名前が返るようにする. 逆引き時に参照するネームサーバは ika.epa.scitec.kobe-u.ac.jp にする. gradis 側の逆引きゾーンファイルを書き換えて, これまで ns.ahs.scitec.kobe-u.ac.jp に委譲していた 0/25の権限を ns.epa.scitec.kobe-u.ac.jp に委譲する.

gradis:/var/named/master/ahs/ahs.rev (抜粋)
----ここから----
   0/25    3600    IN      NS      ns.epa.scitec.kobe-u.ac.jp.
----ここまで----

ゾーンファイルの作成と編集

tide 側で epa.scitec.kobe-u.ac.jp ゾーンのエントリを作成.

tide:/etc/namedb/named.conf
----ここから----
  zone "epa.scitec.kobe-u.ac.jp" {
          type master;
          file "epa.zone";
          allow-query { any ; } ;
          allow-transfer {
                  133.30.104.1 ;
          } ;
  };
----ここまで----

epa.zone ファイルを ahs.zone ファイルにコピーして ahs の部分を epa に書き換える.

逆引きのゾーンファイル ahs.rev を epa な名前を返すように書き換える. tide だけは ahs の名前を返すようにしておく. また, 逆引きの権限は ns.epa.scitec.kobe-u.ac.jp に持たせるように変更.

ファイルフォーマットチェック

> named-checkconf /etc/namedb/named.conf
> named-checkzone epa.scitec.kobe-u.ac.jp /etc/namedb/epa.zone
zone epa.scitec.kobe-u.ac.jp/IN: loaded serial 2007102300 OK
> named-checkzone 0/25.109.30.133.in-addr.arpa /etc/namedb/ahs.rev
zone 0/25.109.30.133.in-addr.arpa/IN: loaded serial 2007102300 OK

tide の named を再起動

> sudo /etc/rc.d/named restart

gradis の named を再起動

> sudo  /etc/rc.d/init.d/named restart

tide 上で正引き逆引きのチェック, 外部の計算機から同様にチェック.

0/25.109.30.133.in-addr.arpa. について gradis は slave サーバになって いないので, tide の逆引きゾーンファイル /etc/namedb/ahs.rev には 0/25.109.30.133.in-addr.arpa IN NS gradis.scitec.kobe-u.ac.jp. なる行 は存在してはいけない. これまで入っていた(ようだ)ので, 削除した.

rndc の設定

rndcコマンドは zone のリロード, 再起動, コンフィグファイルの読み直しな どを行うコマンドである.

まず, rndc-confgenを実行することで, 必要な設定ファイルの「もと」を生成する.

[root@ika /usr/local/bind/etc/] # rndc-confgen
# Start of rndc.conf
key "rndc-key" {
       algorithm hmac-md5;
       secret "pB+gVs89sX7BDN60+ki1Ow==";
};

options {
       default-key "rndc-key";
       default-server 127.0.0.1;
       default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "pB+gVs89sX7BDN60+ki1Ow==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

secret "pB+gVs89sX7BDN60+ki1Ow=="; は認証に用いる共通鍵(パスワード)を表す. 従って, ここに挙げているのは例であって, 実際の設定とは異なる.

コメントアウトされていないところを /usr/local/bind/etc/rndc.conf とし て保存する. コメントされている箇所のうち, controls 以下を named.conf の末尾に追記する. また, 次の一行を named.conf に挿入.

include "/usr/local/bind/etc/rndc.key";

コメントされている箇所のうち, key で始まる4行を /usr/local/bind/etc/rndc.key に保存する.

パーミッションを以下のように設定する.

[root@ika /usr/local/bind/etc/] # chgrp -R epaadmin .
[root@ika /usr/local/bind/etc/] # chown bind rndc.key
[root@ika /usr/local/bind/etc/] # chmod 600 rndc.key
[root@ika /usr/local/bind/etc/] # chmod 640 rndc.conf
[root@ika /usr/local/bind/etc/] # chown bind namedb/named.conf
[root@ika /usr/local/bind/etc/] # chmod 640 namedb/named.conf

rndcのテスト

epaadmin グループに所属するユーザはrndcコマンドによって named プロセスを 制御できる. 以下の例では, ユーザ murashin は epaadmin グループに所属し ている.

[root@ika /usr/local/bind/etc/] # rndc reload
server reload successful

[murashin@ika /usr/local/bind/etc/] > rndc reload
server reload successful

このように出力されれば(書いてある通り)成功である.

起動スクリプトを用意する

サーバの起動時に自動的に起動させるため, bind の起動スクリプト を用意する.

Debian の bind パッケージに含まれる/etc/init.d/bind を元に 起動スクリプトを bind 用に多少書き換えたものが bind から入手できる. このファイルを /etc/init.d/bind にコピーし, 以下のようにパーミッションを設定する.

# wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/bind/bind
# cp bind /etc/init.d/
# chown root:root /etc/init.d/bind
# chmod 755 /etc/init.d/bind

なお, この実行ファイル bind には冒頭部に named や rndc, named.conf ファイルのパスを設定する箇所がある. インストールの場所が変更される場合にはこれも変更すること.

ランレベルごとに bind の動作を設定する.

# update-rc.d bind defaults

サーバを再起動し, 起動時に bind が起動することを確認する.

Last modified:2008/09/05 17:28:28
Keyword(s):
References:[[EPA2007]2007年度サーバ構築ログ] [消えたページ一覧]