- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- ソース を表示
- Installmemo/BIND へ行く。
- 1 (2005-06-13 (月) 16:17:38)
- 2 (2005-06-13 (月) 18:40:22)
- 3 (2005-06-13 (月) 20:55:32)
- 4 (2005-06-14 (火) 18:42:18)
- 5 (2005-06-15 (水) 20:40:54)
- 6 (2005-06-16 (木) 11:24:42)
- 7 (2005-06-16 (木) 20:46:19)
- 8 (2005-06-18 (土) 17:05:33)
- 9 (2005-11-23 (水) 19:13:42)
- 10 (2006-12-29 (金) 13:40:16)
- 11 (2007-05-23 (水) 17:27:52)
- 12 (2007-05-23 (水) 17:27:52)
- 13 (2009-04-03 (金) 10:41:14)
- 14 (2009-06-21 (日) 22:03:27)
- 15 (2010-06-14 (月) 21:58:22)
ソフトウェア | ISC BIND Version 9.2.1, 9.2.3, 9.2.4, 9.3.3 |
---|---|
OS(作業日) | Vine Linux 2.6 2002/12/05 |
AIX 5.1 ML03 + C for AIX Ver6.0 2003/11/21 | |
AIX 5.1 ML06 2004/09/30 | |
RedHat Linux AS 2.1 | |
Vine Linux 4.0 2006/12/29 | |
マシン | xSerires x235 |
RS/6000 44P-170, 7044-270 | |
pSerires 6H1 | |
ドキュメント | 2002/11/27 001 |
BIND9をchrootして稼働する方法を述べる
BIND9のインストール †
- 用意したもの
- BIND 9.2.1のソース(9.2.3, 9.2.4も同様のサイト)
http://www.isc.org/products/BIND/bind9.html
ftp://ftp.isc.org/isc/bind9/9.2.1/bind-9.2.1.tar.gz
- BIND 9.2.1のソース(9.2.3, 9.2.4も同様のサイト)
- インストール ()
- bindのコンパイル
# ./configure --prefix=/ # make
- bindのコンパイル
- 作業用ディレクトリにインストール
# mkdir /tmp/dns # make install DESTDIR=/tmp/dns
- インストール先ディレクトリの作成 と コピー
# mkdir -p /usr/local/bind-jail/ # mkdir -p /usr/local/bind-jail/etc/ # mkdir -p /usr/local/bind-jail/home/ # mv /tmp/dns/bin /usr/local/bind-jail/ # mv /tmp/dns/sbin /usr/local/bind-jail/ # mv /tmp/dns/lib /usr/local/bind-jail/ # mv /tmp/dns/man /usr/local/bind-jail/ # mv /tmp/dns/include /usr/local/bind-jail/ # mkdir -p /usr/local/bind-jail/var/named/ # chown bind:bind /usr/local/bind-jail/var/named/
- グループ・ユーザーの作成 / passwordファイルの作成
# /usr/sbin/groupadd bind # /usr/sbin/useradd -d /home/bind -s /bin/false -g bind -u 16 bind # grep bind /etc/passwd >> /usr/local/bind-jail/etc/passwd # grep bind /etc/shadow >> /usr/local/bind-jail/etc/shadow # grep bind /etc/group >> /usr/local/bind-jail/etc/group
- 共有ライブラリのコピー
使用しているライブラリの確認# ldd /usr/local/bind-jail/sbin/named libnsl.so.1 => /lib/libnsl.so.1 (0x4001d000) libc.so.6 => /lib/libc.so.6 (0x40034000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
上記ライブラリをコピー# cp -ip /lib/libnsl.so.1 /usr/local/bind-jail/lib/ # cp -ip /lib/libc.so.6 /usr/local/bind-jail/lib/ # cp -ip /lib/ld-linux.so.2 /usr/local/bind-jail/lib/
- デバイスファイルの作成
# mknod /usr/local/bind-jail/dev/null c 2 2 # chmod 666 /usr/local/bind-jail/dev/null # mknod /usr/local/bind-jail/dev/zero c 2 3 # chmod 666 /usr/local/bind-jail/dev/zero
SOAレコードの考察 †
項目 | 内容 | RFC1537推奨値 |
default TTL | キャッシュ有効時間 | |
serial | ゾーンのシリアル番号 | |
refresh | スレーブサーバがゾーンデータの最新性をチェックする間隔 | 24時間 |
retry | スレーブサーバがマスターサーバにアクセスできなかった場合、再アクセスを試みるまでの時間 | 2時間 |
expiry | スレーブサーバがこの時間分マスターサーバにアクセスできないとゾーンデータを無効化する | 30日 |
negative TTL | ヒットしない情報のキャッシュ有効時間 | 4日 |
トランザクション署名(TSIG) †
- 鍵の作成方法
/usr/local/bind-jail/sbin/dnssec-keygen -a HMAC-MD5 -b 128 -n HOST abc.test.jp.
これによりカレントディレクトリにKabc.test.jp.+157+20385.privateというファイルとオプション サンプル a 鍵のアルゴリズム HAMC-MD5 b 鍵の長さ 128bit n 鍵のタイプ HOST 鍵の名前 abc.test.jp
Kabc.test.jp.+157+20385.keyという2つのファイルが生成される。
- 鍵の登録方法
named.confに下記のエントリーを追加する。xxxxxxは鍵の生成によって出力されたBASE64でエンコードされた内容を指定する。key abc.test.jp. { algorithm "hmac-md5"; secret "xxxxxxxxxxxxxxx"; };
- 鍵の命名方法
rndc †
RNDCはネットワーク経由でnamedをコントロールする機能である。rndcにはtsigで述べた共通鍵をnamed.confとrndc.confに登録する。
- 鍵の登録
- named.confへの登録
namedがrndcからリクエストを許可する鍵を登録するcontrols { inet 127.0.0.1 port 1111 allow { localhost; } keys { skeleton_key; }; };
- named.confへの登録
- rndc.confへの登録
rndcがnamedにリクエストを送信する際に送付される鍵を指定するkey skeleton_key { algorithm "hmac-md5"; secret "生成した鍵"; }; options { default-server localhost; default-key skeleton_key; };
- rndcの利用方法
- 設定ファイルの再読込
# rndc reload
- スレーブゾーンの再確認
マスターサーバのゾーンが更新されていないか強制的に確認し、更新がある場合はゾーン転送を行う。# rndc refresh ゾーン名 IN ビュー名 # rndc refresh test.jp IN external
- 設定ファイルの再読込
Dynamic DNS †
- 動的更新を行うゾーンの登録
動的更新はデフォルトのACLで許可されていないためupdate-policyかallow-updateを用いてACLを追加する。zone "test.jp" in { type master; file "master/test.jp.zone"; allow-query { trusted; }; allow-transfer { trusted; }; update-policy { grant abc.test.jp. self abc.test.jp. CNAME; }; };
- ACLの登録方法
- レコードのupdate方法
実際にゾーンの内容を更新するにはnsupdateコマンドを利用する。TSIGを利用する場合は、-kオプションでTSIGの鍵の生成で出力された鍵の名前を指定する。/usr/local/bind-jail/bin/nsupdate -k Kabc.test.jp.+157+20385.private
カレントディレクトリに対応する鍵ファイルが存在しない場合は、下記のように指定する。/usr/local/bind-jail/bin/nsupdate -k /var:Kabc.test.jp.+157+20385.private
nsupdateを起動するとプロンプトが「>」となりupdateするためのコマンドを入力する。abc.test.jp.というCNAMEレコードを更新する一例を下記に示す。> server 127.0.0.1 > prereq yxrrset abc.test.jp. CNAME > update delete abc.test.jp. CNAME > update add abc.test.jp. 300 IN CNAME host2.test.jp. > send
また、これらのコマンドの内容が記述されたテキストファイルを作成し、nsupdateのオプションに指定することで実行することが可能である。(temp.lstというファイルに記述した場合)$ /usr/local/bind-jail/bin/nsupdate -k /var:Kabc.test.jp.+157+20385.private temp.lst
- DynamicDNS対応ゾーンの手動更新
動的に更新可能なゾーンに対して手動でレコードを更新する場合は、namedを停止・起動が必要になる。(rndc reload では読み込まれない)
BIND 9.3.x はrndcコマンドにより動的更新の受付開始・停止が可能であるため、namedを稼働させたまま手動更新が可能である。- 動的更新の受付停止
# rndc freeze
- 動的更新の受付開始
# rndc unfreeze
- 動的更新の受付停止
ゾーンの変更通知(DNS NOTIFY) †
ゾーンを変更した際に、スレーブサーバに変更を通知する機能である。通常、notifyをonにすると該当ゾーンのNSレコードに登録されているすべてのDNSサーバに通知が送信される。
- すべてのゾーンに対して通知機能を無効にする場合
optionsに登録されているnofityの挙動よりも、各ゾーンに登録されているnotifyが優先される。options { notify no };
- 特定のゾーンに対して通知機能を有効にする場合(マスターサーバ)
notifyをonにした場合、NSレコードに登録されてるすべてのDNSに通知が通知されてしまうため、特定のサーバに限定する場合はnotifyをexplicitと指定し、also-notifyに通知するサーバを指定する。zone "test.jp" { type master; file "test.jp.zone"; notify explicit; also-notify { 192.168.1.1; }; };
- 通知を受け入れる設定
notifyの通知を受け入れるかはマスターサーバに登録されているDNSサーバであるかどうかを元に行われる。マスターサーバ以外からのNotify受け入れはallow-notifyで指定する。
[1] http://www.isc.org/sw/bind/
[2] http://www.atmarkit.co.jp/flinux/index/indexfiles/bind9index.html
[3] http://www5d.biglobe.ne.jp/%7Estssk/rfc2136j.html
Counter: 5902,
today: 1,
yesterday: 0