Top / Installmemo / BIND

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

ソフトウェア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
RedHat Linux AS 2.1
マシンxSerires x235
RS/6000 44P-170, 7044-270
pSerires 6H1
ドキュメント2002/11/27 001

BIND9をchrootして稼働する方法を述べる


DNS関連情報

BIND9のインストール

  • インストール ()
    • bindのコンパイル
      # ./configure --prefix=/  --with-openssl=/usr/local
      # 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

BIND設定

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.
    オプションサンプル
    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

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

  • 動的更新を行うゾーンの登録
    動的更新はデフォルトの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で指定する。

DNSキャッシュのdump取得

  • DUMP取得先設定
    named.confのoptionsのセクションに指定します。jailしている場合は、chroot先のディレクトリになります。
    options {
      中略
           dump-file               "/home/bind/named.dump";
      中略
    };
  • DUMPの取得
    # rndc dumpdb
  • DUMPファイルの確認
    DUMPファイルはテキストファイルです。
    # less /usr/local/bind-jail/home/bind/named.dump
    ;
    ; Start view external-in
    ;
    ;
    ; Cache dump of view 'external-in'
    ;
    $DATE 20100614125338 
    ; authanswer
    .                       179722  IN NS   a.root-servers.net.
                            179722  IN NS   b.root-servers.net.
                            179722  IN NS   c.root-servers.net.
                            179722  IN NS   d.root-servers.net.
                            179722  IN NS   e.root-servers.net.
    〜 中略 〜
    ; Address database dump
    ;
    ;
    ; Unassociated entries
    ;
    ; Dump complete

dig

digによるゾーン転送

$ dig @dns_server zone_name axfr


[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: 5923, today: 1, yesterday: 0