[EPA2008]bindのインストールと設定
[EPAサーバ構築ドキュメント へ戻る]
作業前の準備
DNS サーバの設定作業では, 上位ドメインを管理する別マシン (例: 2008 年 7 月現在, scitec.kobe-u.ac.jp は gradis.scitec.kobe-u.ac.jp が管理している) にログインして ファイルを書き換えることがある. 予めそのマシンのアカウントおよび root になれる権限を取得していると スムーズに作業が行える.
また, 研究室や研究科などの組織の変更の影響を受けやすい (以下の構築ドキュメントにも古い設定が残っている) ので, 去年の設定をそのまま引き継げないことがある. 予め計算機セミナーや研究室ミーティングなどで変更内容を確認しておくとよい.
ビルドとインストール
$ sudo -s # cd /usr/local/src
配布サイト <URL:http://www.isc.org/index.pl?/sw/bind/index.php> からアーカイブを取得.
# wget http://ftp.isc.org/isc/bind9/9.4.2-P1/bind-9.4.2-P1.tar.gz # tar zxfv bind-9.4.2-P1.tar.gz # cd bind-9.4.2-P1 # mkdir /usr/local/bind # ./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は全て対処されていることを確認.
openssl が debian パッケージであれば, /usr/share/doc/openssl 以下にある changelog.gz の中身から, パッチが当てられているか確認することができる.
# ./configure --prefix=/usr/local/bind \ --disable-openssl-version-check # make # make install
インストールした Bind には host 等のコマンドも同梱されているため, 既にインストールされている bind9-host, libbind9-0, dnsutils は削除する.
# apt-get remove bind9-host libbind9-0 dnsutils
インストールした実行ファイルへのパスの設定
インストールされた Bind の実行ファイル群へパスを通す.
[EPA2008]パスの設定 の <一般ユーザ用コマンドのパス> に /usr/local/bind/bin を, <システム管理用コマンドのパス> に /usr/local/bind/sbin を追加する.
インストールしたマニュアルへのパスの設定
/etc/manpath.config に以下の行を追加する. 詳しくは [EPA2008]パスの設定#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 所有にする.
# chown bind:bind ../../var/run
ゾーンファイルの用意
/usr/local/bind/etc/namedb に old の /usr/local/bind/etc/namedb を移植.
2008 年度前期の DNS の設定
念のため DNS の設定について示す.
- 2008 年度前期の運用方針
- ahs, aoe, epa, cps は tako が担当, 逆引きも tako が担当.
- セカンダリ DNS は置かない
上記の場合に変更が行われる設定を列挙する. 特に明記しない限り, /usr/local/bind/etc/namedb/ 内のファイルを指す.
- epa.zone の変更内容
- MX レコード
- 変更前
- IN MX 10 ika.epa.scitec.kobe-u.ac.jp.
- 変更後
- IN MX 10 tako.epa.scitec.kobe-u.ac.jp.
- 変更前
- CNAME レコード
- 変更前
- www IN CNAME ika.epa.scitec.kobe-u.ac.jp.
- 変更後
- www IN CNAME tako.epa.scitec.kobe-u.ac.jp.
- 変更前
- A レコード
- 変更前
- ns IN A 133.30.109.22
- mail IN A 133.30.109.22
- @ IN A 133.30.109.22
- 変更後
- ns IN A 133.30.109.21
- mail IN A 133.30.109.21
- @ IN A 133.30.109.21
- 変更前
- MX レコード
- ahs.rev, ahs.zone, named.conf などについては変更の必要なし
- ika:/usr/local/bind/etc/namedb/epa.zone の変更内容
- tako の epa.zone と同様
- gradis.scitec.kobe-u.ac.jp:/etc/named.conf
- epa.scitec.kobe-u.ac.jp. ゾーンの master の IP を ika の IP(133.30.109.22) から tako の IP (133.30.109.21) に変更.
- gradis.scitec.kobe-u.ac.jp:/var/named/scitec.zone
- epa.scitec.kobe-u.ac.jp. ゾーンのネームサーバを ika から tako に変更.
- 変更前
- ns.epa.scitec.kobe-u.ac.jp. IN A 133.30.109.22
- 変更後
- ns.epa.scitec.kobe-u.ac.jp. IN A 133.30.109.21
- 変更前
- epa.scitec.kobe-u.ac.jp. ゾーンのネームサーバを ika から tako に変更.
- その他
- aoe.scitec.kobe-u.ac.jp ドメインの MX レコードの設定が gradis に直接書かれていることに注意 (変更の必要はないが)
namedb の変更
/usr/local/bind/etc/namedb/ 内のファイルに変更を加える.
epa.zone
epa.zone 内の項目について, それぞれ, 上の行を下の行に書き換えた.
IN MX 10 ika.epa.scitec.kobe-u.ac.jp. IN MX 10 tako.epa.scitec.kobe-u.ac.jp.
www IN CNAME ika.epa.scitec.kobe-u.ac.jp. www IN CNAME tako.epa.scitec.kobe-u.ac.jp. ns IN A 133.30.109.22 ns IN A 133.30.109.21 mail IN A 133.30.109.22 mail IN A 133.30.109.21 @ IN A 133.30.109.22 @ IN A 133.30.109.21
ahs.zone
ahs.zone 内の項目について, それぞれ, 上の行を下の行に書き換えた.
IN MX 10 ika.epa.scitec.kobe-u.ac.jp. IN MX 10 tako.epa.scitec.kobe-u.ac.jp.
ns IN A 133.30.109.22 ns IN A 133.30.109.21 mail IN A 133.30.109.22 mail IN A 133.30.109.21 @ IN A 133.30.109.22 @ IN A 133.30.109.21
上流 DNS サーバの設定
上流 DNS サーバの設定については, 大半の作業が 2007 年の ika 構築時に行われており, 新たに行うことは少ない.
念のため, 確認を行う.
epa.scitec.kobe-u.ac.jp ゾーンなどのエントリ確認
scitec.kobe-u.ac.jp を担当している gradis.scitec.kobe-u.ac.jp の /etc/named.conf に epa.scitec.kobe-u.ac.jp ゾーンのエントリがあることを確認する.
なお, 以下は古い設定 (ika を DNS サーバとしている) であるが, 本運用開始時には tako を DNS サーバとするよう書き換える必要がある.
gradis.scitec.kobe-u.ac.jp:/etc/named.conf 内に以下の記述を確認した.
zone "ahs.scitec.kobe-u.ac.jp" { type slave; file "slave/ahs.zone"; masters { 133.30.109.22; }; allow-query { any; }; }; zone "epa.scitec.kobe-u.ac.jp" { type slave; file "slave/epa.zone"; masters { 133.30.109.22; }; allow-query { any; }; };
gradis.scitec.kobe-u.ac.jp:/var/named/scitec.zone 内に 以下の記述を確認.
;; for 133.30.109.22 domain ; ahs ahs.scitec.kobe-u.ac.jp. IN NS ika.epa.scitec.kobe-u.ac.jp. ika.epa.scitec.kobe-u.ac.jp. IN A 133.30.109.22 ahs.scitec.kobe-u.ac.jp. IN NS gradis.scitec.kobe-u.ac.jp. ; epa 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.22 epa.scitec.kobe-u.ac.jp. IN NS gradis.scitec.kobe-u.ac.jp. ; aoe aoe.scitec.kobe-u.ac.jp. IN A 133.30.109.22 ; cps cps.scitec.kobe-u.ac.jp. IN A 133.30.109.22
gradis 側の逆引きゾーンファイルを見て 0/25 の権限を ns.epa.scitec.kobe-u.ac.jp にあることを確認.
gradis:/etc/named.conf 内で "109.30.133" で検索すると, 以下の記述を見つけた.
zone "109.30.133.in-addr.arpa" { type master; file "master/ahs/ahs.rev"; allow-query { any; }; };
gradis 側の逆引きゾーンファイルは /var/named/master/ahs/ahs.rev にあった. /var/named/master/ahs/ahs.rev に以下の記述を確認.
0/25 3600 IN NS ns.epa.scitec.kobe-u.ac.jp.
ゾーンファイルの確認
tako:/usr/local/bind/etc/namedb/ahs.rev について以下を確認した.
- 逆引きのゾーンファイル ahs.rev が epa の名前を返すことを確認
すべての PTR レコードが "xxxx.epa.scitec.kobe-u.ac.jp" というリソース を持っていることを確認した.
- 逆引きの権限は ns.epa.scitec.kobe-u.ac.jp が持っていることを確認
以下の行を確認.
@ IN NS ns.epa.scitec.kobe-u.ac.jp.
rndc の設定
rndcコマンドは zone のリロード, 再起動, コンフィグファイルの読み直しなどを行うコマンドである.
まず, rndc-confgenを実行することで, 必要な設定ファイルの「もと」を生成する.
root@tako:/usr/local/bind/etc/namedb# rndc-confgen # Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "SZN/mCIMkFJmFJ/98jlcMQ=="; }; 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 "SZN/mCIMkFJmFJ/98jlcMQ=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf
secret "SZN/mCIMkFJmFJ/98jlcMQ=="; は認証に用いる共通鍵(パスワード)を表す. 従って, ここに挙げているのは例であって, 実際の設定とは異なる.
rndc-confgen を試しに何度か実行してみたが, 実行するたびに鍵の内容が変わった.
rndc-confgen の出力を /usr/local/bind/etc/rndc.conf として保存する.
# rndc-confgen > /usr/local/bind/etc/rndc.conf
生成された rndc.conf のコメントアウトされている箇所のうち, controls 以下を named.conf の末尾に追記する (ika から持ってきたので, 既に追記されていた).
また, 次の一行を named.conf に追記する (これも既に追記されていた).
include "/usr/local/bind/etc/rndc.key";
rndc.conf コメントアウトされている箇所のうち, key で始まる4行を /usr/local/bind/etc/rndc.key として保存する.
念のため, rndc.conf のコメントアウトされている箇所を削除する.
パーミッションを以下のように設定する.
root@ika:/usr/local/bind/etc# chgrp -R epaadmin .
epaadmin グループを作っていないので設定できない. とりあえず root を使っているときにデフォルトの staff にしておく. gate の設定待ち.
root@ika:/usr/local/bind/etc# chgrp -R staff . # とりあえず 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
起動テスト
# /usr/local/bind/sbin/named -u bind \ -c /usr/local/bind/etc/namedb/named.conf
/var/log/syslog を見て, 起動したことを確認. ps(1) コマンドなどでも走っていることを確認.
ファイルフォーマットチェック
root@tako:/usr/local/bind/etc# named-checkconf /usr/local/bind/etc/namedb/named.conf
何も出力されないので OK.
rndc のテスト
root@tako:/usr/local/bind/etc# rndc reload server reload successful
成功.
epaadmin グループが設定されていれば, epaadmin グループに属しているユーザなら 上記のコマンドを実行可能である.
起動スクリプトの用意
サーバの起動時に自動的に起動させるため, bind の起動スクリプト を用意する.
Debian の bind パッケージに含まれる/etc/init.d/bind を元に 起動スクリプトを bind 用に多少書き換えたものが bind から入手できる. このファイルを /etc/init.d/bind にコピーし, 以下のようにパーミッションを設定する.
# cd /etc/init.d # wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/bind/bind # chown root:root /etc/init.d/bind # chmod 755 /etc/init.d/bind
なお, この実行ファイル bind には冒頭部に named や rndc, named.conf ファイルのパスを設定する箇所がある. インストールの場所が変更される場合にはこれも変更すること.
念のため, bind スクリプトの start, stop, restart の動作確認を行う.
ランレベルごとに bind の動作を設定する.
# update-rc.d bind defaults Adding system startup for /etc/init.d/bind ... /etc/rc0.d/K20bind -> ../init.d/bind /etc/rc1.d/K20bind -> ../init.d/bind /etc/rc6.d/K20bind -> ../init.d/bind /etc/rc2.d/S20bind -> ../init.d/bind /etc/rc3.d/S20bind -> ../init.d/bind /etc/rc4.d/S20bind -> ../init.d/bind /etc/rc5.d/S20bind -> ../init.d/bind
サーバを再起動し, 起動時に bind が起動することを確認した.
サーバ停止
このままの設定では, 何らかの原因で tako を DNS サーバとして参照してしまうと tako が epa.scitec.kobe-u.ac.jp であるとなりすましてしまう不具合が発生することが分かった. よって, DNS サーバは EPA サーバ交代の時まで停止する.
DNS サーバ (bind) を停止.
# /etc/init.d/bind stop
起動時に bind を起動しないようにする.
# update-rc.d -f bind remove
サーバを再起動し, bind が起動していないことを確認した.
参考資料
- DNS の仕組み解説 (初学者向け)
- OpenSSL のセキュリティ脆弱性
[EPAサーバ構築ドキュメント へ戻る]
Keyword(s):
References:[[EPA2008]2008年度前期サーバ構築ログ]