トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS


  • 追加された行はこの色です。
  • 削除された行はこの色です。
|RIGHT:100|LEFT:410|c
|~ソフトウェア|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して稼働する方法を述べる
-----------------------------------------------------------------------------

#contents
***BIND9のインストール [#ub26af4a]
-用意したもの
--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のコンパイル
 # ./configure --prefix=/
 # make

--作業用ディレクトリにインストール
 # 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
 # mknod /usr/local/bind-jail/dev/random c 1 8
 # chmod 666 /usr/local/bind-jail/dev/random

***SOAレコードの考察 [#p698cc67]
,項目,内容,RFC1537推奨値
,default TTL,キャッシュ有効時間,
,serial,ゾーンのシリアル番号,
,refresh,スレーブサーバがゾーンデータの最新性をチェックする間隔,24時間
,retry,スレーブサーバがマスターサーバにアクセスできなかった場合、再アクセスを試みるまでの時間,2時間
,expiry,スレーブサーバがこの時間分マスターサーバにアクセスできないとゾーンデータを無効化する,30日
,negative TTL,ヒットしない情報のキャッシュ有効時間,4日




***トランザクション署名(TSIG) [#b9f40ba1]
-鍵の作成方法
 /usr/local/bind-jail/sbin/dnssec-keygen -a HMAC-MD5 -b 128 -n HOST abc.test.jp.
,オプション,,サンプル
,a,鍵のアルゴリズム,HAMC-MD5
,b,鍵の長さ,128bit
,n,鍵のタイプ,HOST
, ,鍵の名前,abc.test.jp
これによりカレントディレクトリにKabc.test.jp.+157+20385.privateというファイルと
Kabc.test.jp.+157+20385.keyという2つのファイルが生成される。

-鍵の登録方法
named.confに下記のエントリーを追加する。xxxxxxは鍵の生成によって出力されたBASE64でエンコードされた内容を指定する。
 key abc.test.jp. {
        algorithm "hmac-md5";
        secret "xxxxxxxxxxxxxxx";
 };

-鍵の命名方法


***rndc [#h4c611f1]
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; };
 };

--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 [#vac920a6]
-動的更新を行うゾーンの登録
動的更新はデフォルトの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) [#hedebc12]
ゾーンを変更した際に、スレーブサーバに変更を通知する機能である。通常、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