IT pass HikiWiki - [EPA]bindのインストールと設定 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

== ビルドとインストール

配布サイト ((<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|URL:../epa/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 が起動することを確認する.