BIND9 の使い方 ---------------------------------------------------------------------- メニュー 1)作業環境 2)BIND のインストールと設定 インストール BIND プロセスを起動するユーザーの変更 rndc の設定 DDNS 関連の設定 3)rndc の使い方 4)ログの取り方 6)named.conf の読み方 7)zone ファイルの読み方 ---------------------------------------------------------------------- ■1)作業環境 FreeBSD BIND 9.2.0(src->make) ---------------------------------------------------------------------- ●2)BIND のインストールと設定  ▼インストール   http://www.isc.org/products/BIND/bind9.html   こっから source code を拾ってきて、   適当な場所(/src 以下とか)に展開して、   ./configure -> make -> make install   (make test は結果が良いのか悪いのかよく分からん)  ▼BIND プロセスを起動するユーザーの変更   BIND がインストールされた時点で user と group に bind というのが作成されている。   セキュリティ上 BIND はこの user で起動する事にする。   (BIND が乗っ取られてもすぐに root を取られないようにする為)   ・/etc/namedb のオーナーの変更    # chown -R bind:bind /etc/namedb   ・named の引数で起動するユーザーを指定する。    #/usr/local/sbin/named -u bind -c /etc/namedb/named.conf       rc.conf に記述する場合は以下のように    # named    named_enable="YES"    named_program="/usr/local/sbin/named"    named_flags="-u bind -c /etc/namedb/named.conf"  ▼rndc の設定   ・rndc 用の鍵の作成    # dnssec-keygen -r /dev/urandom -a HMAC-MD5 -b 512 -n USER rndc    カレントディレクトリに     Krndc.+157+04353.key     Krndc.+157+04353.private    といったファイルが作成される。(共有鍵暗号方式用みたい)        ※中に書かれている鍵は基本的に同じ。     たまにどっちかの鍵内に ' ' スペースが入っている事がある。    ※ちなみに MD5 以外を選択すると     dnssec-keygen: failed to generate key rndc/DSA: built with no crypto support     とか言われて作成できず。   ・rndc.conf の作成    Krndc.+157+04353.key の中身はこんな感じ     rndc. IN KEY 0 2 157 FlEOwC/IR/PshY5OlVKk3U6QQq/zLGQ511qOvUPhyBB1rzfG8uIJqS/nC80QiglPH9usVM1Zen3H9B6GmKLPLg==    "rndc. IN KEY 0 2 157 "より後ろの部分が実際の鍵なのでこれを登録する。    # vi /etc/rndc.conf   〜〜〜〜〜〜〜〜〜〜 ここからファイルの中身 〜〜   options {   default-server localhost;   default-key RNDC_KEY;   };     server localhost{   key RNDC_KEY;   };     Key RNDC_KEY {   algorithm "hmac-md5";   secret "FlEOwC/IR/PshY5OlVKk3U6QQq/zLGQ511qOvUPhyBB1rzfG8uIJqS/nC80QiglPH9usVM1Zen3H9B6GmKLPLg==";   };   〜〜〜〜〜〜〜〜〜〜 ここまでファイルの中身 〜〜   ・named.conf の修正(/etc/namedb/named.conf)    下記設定を付け足す。   〜〜〜〜〜〜〜〜〜〜 ここからファイルの中身 〜〜   controls {   inet ::1 allow { ::1; }   keys { RNDC_KEY; };   inet 127.0.0.1 allow { 127.0.0.1; }   keys { RNDC_KEY; };   };     //Krndc.+157+04353.key   key RNDC_KEY {   algorithm "hmac-md5";   secret "FlEOwC/IR/PshY5OlVKk3U6QQq/zLGQ511qOvUPhyBB1rzfG8uIJqS/nC80QiglPH9usVM1Zen3H9B6GmKLPLg==";   };   〜〜〜〜〜〜〜〜〜〜 ここまでファイルの中身 〜〜 ---------------------------------------------------------------------- ●3)rndc の使い方  とりあえず、root で。  ・変更した設定を反映させる。   (zone ファイルの変更を行った場合は各 zone ファイル内のシリアル番号の更新も必ず行う事)   # rndc reload   # tail /var/log/messages   でエラーが出ていない事を確認する。   構文エラーとかだったら、対象ファイルと行番号が出てると思うので、   そこを修正して、もう一度 rndc reload  ・BIND のプロセスを終了する。   # rndc stop   ※ ps で kill しても問題ないと思うけど... ---------------------------------------------------------------------- ●4)ログの取り方   ・named.conf (/etc/namedb/named.conf)に下記設定を付け足す。   〜〜〜〜〜〜〜〜〜〜 ここからファイルの中身 〜〜 logging { channel MY_FILE { file "named.log"; // /etc/namedb/named.log というログファイルが作成される。 severity dynamic; print-category yes; // ファイル内のログフォーマット print-severity yes; print-time yes; }; category default { default_syslog; MY_FILE; }; // 一般的情報をsyslogとnamed.logに出力 //category panic { default_syslog; MY_FILE; }; //category packet { MY_FILE; }; //category eventlib { MY_FILE; }; //category queries { MY_FILE; }; };   〜〜〜〜〜〜〜〜〜〜 ここまでファイルの中身 〜〜   ・category は BIND8 系列 と BIND9 系列で結構違うので、BIND9 の man か    最新の動物本を参照の事。   ・この設定だとそんなにファイルサイズは大きくならないが、    それでもほっておくと、どんどん大きくなる一方なので    適度にファイルを作り直してやる事。      ※ログファイルが出力されていないようなら    # tail /var/log/messages    でエラーが出ていないかチェック。    もしかしたら、    # touch /etc/namedb/named.log    しとかないと駄目かも。 ---------------------------------------------------------------------- ●5)IPv6 の DNS パケットを受け付ける。   IPv6 で名前解決を提供するには、   named.conf (/etc/namedb/named.conf)を下記のように編集。   〜〜〜〜〜〜〜〜〜〜 ここからファイルの中身 〜〜 options { ・ ・ ・ allow-query { any; }; listen-on-v6 { any; }; };   〜〜〜〜〜〜〜〜〜〜 ここまでファイルの中身 〜〜 ---------------------------------------------------------------------- ●6)named.conf の読み方 # more /etc/namedb/named.conf ※コピペしても使えないので注意 // // named.conf for alma.jp // options { directory "/etc/namedb"; ※zone ファイルとかの在りか //allow-query { localhost; 10.21.0/21; 10.21.254/24; 10.21.32/24; 10.21.64/24; }; allow-query { any; };  ※名前解決問い合わせを受け付けるセグメントを記述する。   限定したいなら上のコメント行のように記述する。(IPv6 は全てはねてる)   IPv6 のセグメントの記述方法がわからなかったのでとりあえず any allow-transfer { localhost; 10.21.0/21; 10.21.32/24; 10.21.34/24; 10.21.64/24; };  ※ZONE ファイルの転送を許可するセグメントを記述する。 listen-on-v6 { any; };  ※IPv6 のクエリーを受け付ける。 query-source address * port 53; auth-nxdomain yes; pid-file "/etc/namedb/run/named.pid"; }; logging { ※ログ関連、上記 ●4)ログの取り方 を参照 ・ ・ }; controls { ※rndc 関連、上記 ●2)BIND のインストールと設定 を参照 ・ }; //Krndc.+157+04353.key key RNDC_KEY { ※rndc 関連、上記 ●2)BIND のインストールと設定 を参照 ・ }; zone "." { ※root domain の参照ファイル、default のまま type hint; file "named.root"; }; zone "0.0.127.IN-ADDR.ARPA" { ※IPv4 ループバック の設定 type master; file "db.127.0.0"; ※下記 ●7)zone ファイルの読み方 を参照 }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" { ※IPv6 ループバック の設定 type master; file "db.0000-0000-0000-0000"; ※下記 ●7)zone ファイルの読み方 を参照 }; zone "local.alma.jp" { ※local.alma.jp の正引設定 type master; ※この DNS がオリジナルの設定を持つ事を示す file "db.local.alma.jp"; ※各ホストの正引ファイル、下記 ●7)zone ファイルの読み方 を参照 }; zone "64.21.10.in-addr.arpa" { ※10.21.64/24 の逆引設定 type master; file "db.10.21.64"; ※IPv4逆引ファイル、下記 ●7)zone ファイルの読み方 を参照 }; zone "0.0.0.2.a.0.1.0.5.4.2.0.2.0.0.2.IP6.INT" { ※2002:245:10a:2000::/64 の逆引設定 type master; file "db.2002-0245-010a-2000"; ※IPv6逆引ファイル、下記 ●7)zone ファイルの読み方 を参照 }; zone "sub.alma.jp" { ※sub.alma.jp の正引ファイル type slave; ※別の DNS がオリジナルの設定を持つ事を示す。 file "bak/db.sub.alma.jp"; ※/etc/namedb/bak/db.sub.alma.jp というファイルが勝手にできる。 masters { 10.21.32.11; ※sub.alma.jp のオリジナルの設定を持つ DNS のアドレス }; }; zone "32.21.10.in-addr.arpa" { type slave; file "bak/db.10.21.32"; masters { 10.21.32.11; }; } ---------------------------------------------------------------------- ●7)zone ファイルの読み方 ▼IPv4 ループバック # more /etc/namedb/db.127.0.0 ; ; IPv4 localhost ; $TTL 8H ;--------------------------------------------------------------------------- @ IN SOA pixie.alma.jp. dnsmaster.alma.jp. ( ※前半部分の pixie.alma.jp. はこの zone でもっとも権威を持つ DNS  後半部分の dnsmaster.alma.jp. はこの zone の連絡先 E-mail アドレス  最初の . を @ に読み替えてやる。 2001070600 ; Serial Number ※シリアルは日付+シーケンスで構成されている。(私の趣味)  zone ファイルを編集した場合は必ず、ことの値を 更新日+シーケンス に修正しておく事  これが修正されていないと正しく slave に zone が転送されなくなる。 3H ; Refresh (secondary refresh interval) 30M ; Retry (secondary retry interval) 7D ; Expire (secondary expire time) 1D ) ; Min TTL for each record (default) IN NS pixie.alma.jp. ;--------------------------------------------------------------------------- 1.0.0.127.IN-ADDR.ARPA. IN PTR localhost. ▼IPv6 ループバック # more /etc/namedb/db.0000-0000-0000-0000 ; ; IPv6 localhost ; $TTL 8H ;--------------------------------------------------------------------------- @ IN SOA pixie.alma.jp. dnsmaster.alma.jp. ( 2001070600 ; Serial Number 3H ; Refresh (secondary refresh interval) 30M ; Retry (secondary retry interval) 7D ; Expire (secondary expire time) 1D ) ; Min TTL for each record (default) IN NS pixie.alma.jp. ;--------------------------------------------------------------------------- 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR localhost. ▼local.alma.jp の正引ファイル # more /etc/namedb/db.local.alma.jp ※ヘッダ部分は同じなので省略    ・    ・ alice00 IN A 10.21.64.12 IN AAAA 2002:245:10a:2000:2a0:c9ff:fe8b:da5b ※以下二行は同義 IN AAAA 2002:245:10a:2000:0:0:a15:4033 IN AAAA 2002:245:10a:2000:0::10.21.64.51    ・    ・ ; ; DHCP 10.21.7.*/21 ; local.alma.jp ; $INCLUDE include.dhcp.local.alma.jp ※別ファイルの設定を読み込める ▼dhcp セグメントの正引ファイル # more /etc/namedb/include.dhcp.local.alma.jp ※ヘッダ情報は記述せず、各ホストの設定のみ記述する。 ; ; DHCP 10.21.7.*/21 ; local.alma.jp ; dhcp001 IN A 10.21.7.1 dhcp002 IN A 10.21.7.2    ・    ・    ・ ▼10.21.64/24 の逆引ファイル # more /etc/namedb/64.21.10.in-addr.arpa ※ヘッダ部分は同じなので省略    ・    ・ 12 IN PTR alice00.local.alma.jp. ※ IPv4 アドレスの最終桁のみ記述、ホスト名は最後の . を忘れずに。    ・    ・ ▼2002:245:10a:2000::/64 の逆引ファイル # more /etc/namedb/0.0.0.2.a.0.1.0.5.4.2.0.2.0.0.2.IP6.INT ※ヘッダ部分は同じなので省略    ・    ・ ;2002:245:10a:2000:2a0:c9ff:fe8b:da5b b.5.a.d.b.8.e.f.f.f.9.c.0.a.2.0 IN PTR alice00.local.alma.jp. ※ IPv6 アドレスを逆から記述、ホスト名は最後の . を忘れずに。    ・    ・