13-7. BIND 8,9 系列での設定 (1) 先ずは BIND 4 からの変更 `21/03 * 簡単に説明 BIND 4 系列の named や BIND 8 の古いのには、セキュリティ・ホ−ルが見つかっている。 root 権限を奪取されるとか結構クリティカルなバグのようである。 できるだけ新しいも のにバ−ジョンアップしておいた方が無難なようである。http://www.isc.org/ から最新 の BIND 8.x.x をダウンロ−ドし、Solaris 2.6 にインスト−ルする。つまりこのよい子 のWWWホストで稼働している BIND 4 系列の named を置き換える。 同じくインスト− ルされた DNS 制御ファイルの変換ソフト named-bootconf を用いて、named.boot ファイ ルから named.conf を作る。BIND 4 と 8 で基本的に異なるのは、このファイルの書式だ けである。Solaris 2.6 でそのままコンパイルしてできた named は /usr/local/etc/ を 見に行くようになっていた。とりあえず、これでマシンをリブ−トすればOKだろう。 /etc/rc2.d/S72inetsvc WWWホストで稼働している named デ−モン ------------------------------------------------------------------------------ |#!/bin/sh |sleep 5 |/usr/sbin/ifconfig -auD netmask + broadcast + | こっちはコメントにして。 |#if [ -f /usr/sbin/in.named -a -f /etc/named.boot ]; then |# /usr/sbin/in.named; echo "starting internet domain name server." |#fi | こっちを使うようにする。 |if [ -f /usr/local/sbin/named -a -f /usr/local/etc/named.conf ]; then | /usr/local/sbin/named; echo "starting DNS Server, BIND8." |fi | | |/usr/sbin/route add net 202.241.128.0 192.168.10.1 1 静的経路の記述。 /etc/named.hosts, named.rev, named.local, named.ca はこれまでのをそのまま使えば いい。シリアル番号はとりあえずそのままで、いろいろテストして確認した後で、上げた 方がいいだろう。それでプロバイダの2次DNSサ−バにも反映される。 * BIND 4 から BIND 8 系列のDNS制御ファイル BIND 8 に入っている B-Shell スクリプトの named-bootconf を用いて、これまで使って きた BIND 4 の named.bootファイルから BIND 8 用の named.conf を作成する。 BIND 8 用といっても、そんなにややこしい書式になっている訳でもない。自分で記述していって も全然構わない。見かけ、たくさんの記述になっているようだが、そう見えるだけである。 # cd /etc;ls named* << これまでの DNS 制御ファイルです。 named.boot named.ca named.hosts named.rev named.local # cd /usr/local/sbin;ls dnskeygen named named-xfer irpd named-bootconf ndc # cd /usr/local/etc << ディレクトリが無ければ作っておく。 # cp /etc/named.boot . # /usr/local/sbin/named-bootconf < named.boot > named.conf /etc/named.boot --------------------------------------------------------------- |;domain nix.co.jj |primary nix.co.jj /etc/named.hosts |cache . /etc/named.ca |primary 128.241.202.in-addr.arpa /etc/named.rev |primary 0.0.127.in-addr.arpa /etc/named.local /usr/local/etc/named.conf ----------------------------------- |options { |}; | |# type domain source file or host |# |zone "nix.co.jj" { 正引 この named.hostsファイルの中では | type master; hostA.nix.co.jj は 202.241.128.3 | file "/etc/named.hosts"; である。 |}; | |zone "." { ル−ト | type hint; | file "/etc/named.ca"; |}; | |zone "128.241.202.in-addr.arpa" { 逆引 | type master; | file "/etc/named.rev"; |}; | |zone "0.0.127.in-addr.arpa" { ロ−カル | type master; | file "/etc/named.local"; |}; * モデル・ネットワ−クでの設定 << BIND 8.2.3 の named で >> 10.10.10.1 □hostZ □ .2 プロバイダによる | | DNS2次 / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\ ………… \_____________/ |hostA'| : ………… □ Router |.3 仮想IP |.1 ----------*------------------------------------------- 202.241.128.0 | hostA□ named DNS1次 | |.1 hostG□----------- 192.168.2.0 | ------------------------------------------------------ 192.168.1.0 | 内部ネットワ−ク ------------------------------------- 192.9.201.0 [ hostA の DNS サ−バのアクセス制限の設定 ] /usr/local/etc/named.conf ------------------------------------- |options { | directory "/usr/local/etc"; | allow-transfer { 10.10.10.1; << 2次ネ−ムサ−バのIPアドレスである。 | 10.10.10.2 }; | allow-query { 192.168.1.0/24; << hostA の named に問い合わせできるネッ | 192.9.201.0/24 }; トワ−クのIPアドレスを列挙する。 |}; | 以下、上のに同じ DNS のゾ−ン転送できるホストを、自ドメインの2次ネ−ムサ−バになってもらっている ホストだけ、できるように制限する allow-transfer の設定。 このように DNS の設定で やってもいいし、hostG ファイアウォ−ルのソフトでパケットフィルタリングのル−ルを 設定してもいいだろう。 FireWall-1 で 10.10.10.1 と 10.10.10.2 のIPアドレスだけ 202.241.128.3 に 53/TCP パケットのアクセスを許可する。 (2) BIND 8.2.3 のインスト−ル * ISC( Internet Software Consortium )の BIND http://www.isc.org/ から BIND 8.2.3 January 26,2001 をダウンロ−ドする。以下では 3つのファイルを取ってきたが、bind-src.tar.gz だけでもいい。named のプログラム本 体は bind-src.tar.gz に入っている。Cコンパイラは gcc version 2.95.2 19991024 を 使った。インスト−ルによって何か上書きしてしまうのがないか心配だったが、特になさ そうだった。レゾルバのライブラリを上書きするとかなると、困ることが起きるのだ。 # /bin/csh # setenv PATH /usr/local/bin:/usr/ccs/bin:$PATH # cd /usr/local/source # mkdir bind.8.2.3 # cd bind.8.2.3; ls -al bind* -rw-r--r-- 1 root other 3108088 .. bind-contrib.tar.gz -rw-r--r-- 1 root other 1486379 .. bind-doc.tar.gz -rw-r--r-- 1 root other 1313049 .. bind-src.tar.gz # zcat bind-src.tar.gz | tar xvf - # ls -F Makefile bind-src.tar.gz src/ # cd src; ls -F CHANGES LICENSE_RSA SUPPORT conf/ tests/ DNSSEC Makefile TODO include/ INSTALL OLD/ Version lib/ LICENSE* README bin/ port/ # make depend # make # make -n install << 何がどこに入るか、既存のファイルを上書きしないか調べてお # make install く。/usr/local/sbin, bind ディレクトリが新たにできた。 * 追加されたファイル # ls /usr/local/sbin dnskeygen named named-xfer irpd named-bootconf ndc # ls /usr/local/bin addr dig dnsquery host mkservdb nslookup nsupdate # ls /usr/local/bind/lib libbind.a libbind_r.a << /etc/resolv.conf が見るレゾルバのプログラムはここ に入っている訳である。動的と静的ライブラリかな?。 # ls -F /usr/local/bind/include arpa/ irp.h isc/ res_update.h sys/ hesiod.h irs.h netdb.h resolv.h # ls /usr/local/lib nslookup.help * ftp でも取って来られるがWWWで取る方が分かりやすい # ftp ftp.isc.org 220 ProFTPD 1.2.0 Server (ISC FTP Server) [ftp.isc.org] ftp> ls isc drwxrwxr-x 5 716 isc 8192 Jun 20 2000 bind << BIND 4 と 8 系列。 drwxrwxr-x 25 10120 isc 8192 Feb 13 02:27 bind9 << BIND 9 系列。 drwxrwxr-x 2 716 isc 8192 Feb 4 2000 cron drwxrwxr-x 5 1029 isc 8192 Feb 23 00:41 dhcp << ISC開発の DHCP サ−バ。 drwxrwxr-x 3 716 isc 8192 Mar 3 1999 dns << testingというディレク drwxrwxr-x 7 1364 9002 8192 Jan 14 21:37 inn トリがあった。 ftp> ls bind/src/4.9.8 ↓BIND 4 系列の最終版 lrwxrwxrwx 1 0 9996 27 May 16 2001 bind-4.9.8-REL.tar.gz -> ../DEPRECATED/readme.tar.gz * 他いろいろ中身 # cd /usr/local/source/bind.8.2.3/src/bin/named-bootconf; ls -l | -rwxr-xr-x 1 root other 7446 2月 23日 13:11 named-bootconf -rw-rw-r-- 1 716 root 7446 11月 3日 12:22 named-bootconf.sh # cd /usr/local/source/bind.8.2.3/src/conf/recursive; ls -F keep-running* named.conf.rfc1918-stubs root.cache named-res1.conf pri/ named-res1.conf --------------------------------------------------------- |options { | directory "/var/named"; | listen-on { 204.152.184.67; 127.0.0.1; }; << BIND 8からは同じマシンに | query-source address 204.152.184.67 port 53; 複数のネ−ムサ−バを立ち | pid-file "/var/run/named-res1.pid"; 上げることができる。どち |}; らを使うか listen-onで指 | 定するということ。 |controls { | unix "/var/run/ndc-res1" perm 0600 owner 0 group 0; |}; | | * doc を展開してみた # zcat bind-doc.tar.gz | tar xvf - # ls -F Makefile bind-src.tar.gz src/ bind-doc.tar.gz doc/ # ls -F doc bog/ html/ man/ misc/ notes/ old/ rfc/ tmac/ * contrib を展開してみた # zcat bind-contrib.tar.gz | tar xvf - # ls -F Makefile bind-doc.tar.gz contrib/ bind-contrib.tar.gz bind-src.tar.gz src/ # ls -F contrib README getkeyby/ nextstep/ srv/ adm/ host/ ninit/ tplb/ arlib/ hostmaint/ nslint-1.5.1/ trnamed/ cider2named/ inaddrtool/ nutshell/ ucsd/ ckdns/ lamers/ old/ umich/ decwrl/ manyhosts/ os2-emx/ updatehosts-1.1.0/ dns_signer/ mdnkit/ query-loc-0.0.1/ yaddas/ dnsp/ misc/ resparse-1.3/ z0ne/ dnsparse/ multizdb/ rfc1101/ dnswalk/ named-lint/ snoof/ doc/ netadm/ sqlbind-8/ ※mdnkitディレクトリは mDNkit( Multilingual Domain Name evaluation Kit )、多言語 ドメイン名評価キットというフリ−ソフトである。 これは JPNIC が2000年4月に 開発を始めたプロジェクトで 2000/10/18 に Version 1.0を正式リリ−スしている。そ して BIND の contribution に含まれることになった。 mdnkit の最新の情報や開発履 歴などは http://www.nic.ad.jp/jp/research/idn/index.html#mdnkit を見られたい。 * BIND 8 の named のオプション # cd /usr/local/sbin/ # named -h /usr/local/sbin/named: illegal option -- h Usage: named [-d #] [-q] [-r] [-v] [-f] [-p port] [[-b|-c] configfile] [-u (username|uid)] [-g (groupname|gid)] [-t directory] ※-u, -g で指定のユ−ザ、グル−プの権限で named を実行することができる。これまで は root 権限でしか実行できなかった。セキュリティ的には root 権限で実行しない方 が安全である。named にバグがあってクラッカ−にアクセスされると、稼働しているユ −ザの権限で他のコマンドが実行できたりすることになる。 # named -d 1 & << デフォルトでは /usr/local/etc/ に named.conf があること。 # cat /usr/local/etc/named.run Debug level 1 Version = named 8.2.3-REL 2001年02月23日 (金) 13時40分34秒 JST root@mmm:/usr/local/source/bind.8.2.3/src/bin/named conffile = /usr/local/etc/named.conf | # named -v << バ−ジョン表示。昔の named にはこのオプションはなかった。 named 8.2.3-REL 2001年02月23日 (金) 13時40分34秒 JST root@mmm:/usr/local/source/bind.8.2.3/src/bin/named (3) BIND 8 系列の特徴とオプション * 概要 純粋に BIND 4.x 系のセキュリティホ−ルはなんだったか。ともかく安全確保ということ で BIND 8.x 系に変更しとかないけない。 BIND 8 は初め1997年5月にリリ−スされ てしばらく問題はなかったが、ここ何年か立て続けにセキュリティホ−ルが見つかってい る。Distributed Dos( 分散型サ−ビス運用妨害、DDos ) 攻撃の踏台にされるとか。詳し くは下記のところを見られたい。 BIND 8 での設定の参考資料はインタ−ネットの多くの サイトにおいてある "短い時間でDNS管理者になる方法"。 先ずはこれをしっかり読ん でみよう。 DNS 制御ファイルの options のオプションについてはあまり書かれていない。 そこは BIND 8 のドキュメントを見ることにしよう、英文だけど。ちらっと見たら、何と オプションの数は54もあった。 http://www.isc.org/products/BIND/bind8.html > BIND-8.2.2 にセキュリティホ−ル '99/11/10。リモ−トからの DoS 攻撃、 スタックオ−バ−フロ−による権利の横取り。8.2.2pl5 以前は危険。 http://www.jpcert.or.jp/ > 1998-06-04 のアナウンス− BIND 8.1.2 にしてくれ。 2001-03-09 のアナウンス− BIND 8.2.3, BIND 9.1.0 の最新にしてくれ。 http://www.linux.or.jp/JF/JFdocs/DNS-HOWTO.html > Version 3.1, 2001-01-31 短い時間でDNS管理者になる方法/日本語訳。 ISC Press Releases 2004/04/20 付け、ISC( Internet Systems Consortium )。商用サポ −トを開始。電話とメ−ルによるサポ−ト。メニュ−は3種類あって、最低年額5000 ドル。この時点、BIND は世界のDNSの75%で用いられているとのこと。 * BIND 8.x の特徴 BIND 4.x と BIND 8.x では、named.boot ファイルが named.conf という名前に変わって 書式も変わった。他の制御ファイルの書き方は、ほぼ同じである。 BIND 8 はデフォルト は /usr/local/etc/named.conf を読む。 named.conf ではコメントの扱いが変わっている。 BIND 4 では ; がコメント扱いだった が、BIND 8 では # か // か /* .. */ とすること。 呼び名が変わったのがある。ル−トキャッシュファイルを BIND 8 では、ヒントファイル というようになった。セカンダリサ−バという呼び方は、スレ−ブサ−バになった。 named を root 以外の権限で実行できるようになった。ゾ−ン転送を制限する、不正利用 から守ることができる。セキュリティの配慮がなされた。 RFC2136 の Dynamic DNS( DDNS )が BIND 8.1 以降でサポ−トされた。DHCPによるIPア ドレスを動的に割り振るネットワ−クで使える。Windows 2000 Professional に Dynamic DNS のクライアント機能が入っている。 Dynamic DNS はクライアントからの要求によるゾ−ンデ−タの動的更新機能である。デフ ォルトは動的更新はしない。allow-update { 192.168.9.1; };、で許可するクライアント を指定できる。コマンド nsupdate で、レコ−ドを手作業で追加/削除ができる。 差分ゾ−ン転送。BIND 8.2βから完全にサポ−トした。BIND 9ではデフォルトで差分ゾ− ン転送するようになっている。Dynamic DNS で追加/削除されたレコ−ドだけ、スレ−ブ にコピ−するということである。無効にするには option { request-ixfr no; }; とする。 ラウンドロビンDNSがサポ−トされた。BIND 4 系列でも 4.9.3 からできる。WWWサ −バの複数のホストのIPアドレスを、Aレコ−ドに列挙しておけばよい。 新規 Notify プロトコル。マスタ−からスレ−ブに変更のあったことを知らせる機能が追 加された。これまではスレ−ブがマスタ−に変更があったか定期的にチェックしに行った。 BIND 8 からかな?、SOA の値に H:時間、D:日数、W:週が使える。アクル指定もできるよ うになった、IPアドレスの範囲を名前付けできる。acl name { ホストIPアドレス };、 他指定できるのはネットワ−クIPアドレス, any, none, localhost, localnets。 ------*------- localhost ---*---*-----*----------- localnets | の範囲 | | | の範囲 ■ □ □ ■ □ □ | | | | ------*------- -------------*---*---*--- * DNS の細かな制御を options 設定する options { directory "/usr/local/etc"; listen-on { 192.168.10.1; 127.0.0.1; }; query-source address 192.168.10.2 port 53; allow-transfer { 10.10.10.1;10.10.10.2 }; allow-query { 192.168.1.0/24; 192.9.201.0/24 }; allow-recursion { 192.168.1.0/24; localhost; }; notify yes; pid-file "/var/run/named-res1.pid"; }; directory : 指定したディレクトリ /usr/local/etc/ を見てみれば分かる。 いろいろテ ストした後に見たら named.pid, named.run, named_dump.db, ndc.d/ というファイ ルやディレクトリができていた。 listen-on : ゲ−トウェイのホストで named を外向けと、 内向け用に稼働させる場合な どに使う。インタ−フェ−ス、ポ−ト番号による問い合わせの制限を行うことができ る。一般的には設定する必要はないと思う。 BIND 8 では同じホストで複数の named を稼働させることができるので、その安全のためのオプションである。 query-source address : query-source address * port 53; こんな表記もできる。一般的にはこれも設定する 必要はないのじゃないか。説明を読むと、 この DNS サ−バが答えを知らなかったら 他のネ−ムサ−バに問い合わす。この時の問い合わせ先のIPアドレスとポ−ト番号 を指定する。しかし DNS の問い合わせは UDP/53 番なんだから当り前なんだけど?。 allow-transfer : ゾ−ン転送を制限する。 2次ネ−ムサ−バを引き受けてくれているホ ストのIPアドレスだけ書いておけばいい。named 記載の個々のホストのIPアドレ スを知られるのが嫌な場合に使う。よい子ではインタ−ネット接続の最小限のIPア ドレスしか DNS に記載してないので知られるのは、別に問題はない。 しかし関係の ないところにゾ−ンの情報を出す必要はそもそもない。 allow-query : この DNS サ−バに問い合わせができる、 レゾルバのクライアントのIP アドレスを列挙する。古い named では DNS クライアントは、 どこの DNS サ−バの IPアドレスでも指定して使うことができた。自社ネットワ−クのホストIPアドレ スからしか使うことができないようにできる。allow-query { any; }; とするとどこ からでも、この DNS サ−バに問い合わせができる。 pid-file : named デ−モンのプロセスIDを書き込むファイルの名前。 named をル−ト 権限以外で稼働させる場合。そのユ−ザが書き込みできるようにパ−ミッションを変 更しておくこと。しかし、特に named をル−ト以外の UID で稼働させるまでもない と思うが。そりゃセキュリティ的にはより安全になるには違いないが。 allow-recursion : 指定したホストだけに再帰的な問い合わせを許す。内部ネットワ−ク のホストとロ−カルホストだけできるようにしておけばいい。再帰的問い合わせとい うのは、他のドメインのゾ−ン情報を検索するということである。これで、他のドメ インのユ−ザには、自分とこのネ−ムサ−バを使わせないようにできる。セキュリテ ィ的にはキャッシュ汚染攻撃( cache poisoning attack ) から守ることができる。 notify : マスタ−がスレ−ブに変更を直ちに知らせる。デフォルトはyes。スレ−ブはこ れまでは SOA の Refresh 時間毎にマスタ−に変更があったかチェックしに行く、こ の機能はそのまま BIND 8 でも働く。従来の仕組みに加えて機能するようになってい る。このオプションはマスタ−がスレ−ブに変更があったことを知らせ、スレ−ブが マスタ−の Serial 番号を見て上がっていればゾ−ン転送をする。 * オプション設定の有効 オプションの allow-query、allow-transfer、notify、allow-recursion は zone ステ− トメント中でも指定できる。 options で設定したのは全体指定、zone は個別指定である。 zone で設定したのが優先される。 /usr/local/etc/named.conf ------------------------------------------------ |options { | allow-transfer { 10.10.10.1; 10.10.10.2; }; << ここで allow-transfer {}; |}; とすると全部禁止となる。下 | の zone で許可するのを書く。 |zone "nix.co.jj" { | allow-transfer { 10.10.10.2; }; << こっちが優先される。10.10.10.1 はアク | allow-query { 192.168.1.0/24;}; セスできない。ゾ−ン転送は許さない。 | type master; | file "/etc/named.hosts"; |}; * BIND 8 の ndc ユ−ティリティ・コマンド # /usr/local/sbin/ndc start << named デ−モンを起動する。停止するには # ndc stop。 new pid is 1770 現在の状態を表示するには # ndc status。 # ndc dumpdb << ndc start やってからのこと。optionsで指定したディ Database dump initiated. レクトリに named_dump.db ファイルができる。 # ndc reload << 制御ファイルを修正したような場合、再読み込みする。 Reload initiated. # ls /usr/local/etc named.conf named.pid named.run named_dump.db ndc.d * BIND 8 の dig コマンド `23/11 nslookup より dig コマンドの方が、キャッシュ情報の扱いが分かり易いということなの だがどうもおかしい。挙動不審である。any 指定で出て来る情報がどうもよく分からない。 先に axfr 指定を取り上げよう、これは特に問題ないようである。 named-xfer コマンド でゾ−ンデ−タを転送する内容が表示されると見ていいようである。つまりその namedサ −バが管理する named.hosts, named.rev, named.local ファイルの内容である。さてany 指定はこの内容に加え、他の named サ−バに問い合わせて、 保存しておいた情報も表示 するように思う。 それがゾ−ン情報の SOA レコ−ドに NS と MX レコ−ドについてしか 出て来ない。この様子は下の付録を見て頂きたい。named サ−バがたった今、 どんな情 報をキャッシュしているのか、 中身を正確に知りたければ # kill -INT named-pid とや って named_dump.db ファイルを吐き出した方がいい。 # dig @ネ−ムサ−バのホスト名かIPアドレス 知りたいドメイン名 知りたい内容 # dig @192.10.10.1 nix.co.jj. MX << MX レコ−ドについてのみ出してくれ。 # dig @192.10.10.1 nix.co.jj. any << 全部の情報を出せ。他 A,SOA,NS 指定あり。 # dig @ns.nix.co.jj nix.co.jj. axfr << このゾ−ンが持つ情報を全部出せ。 # dig @192.10.10.1 nix.co.jj. any +norec << +norec は再帰的に検索しない。 ※nslookupコマンドも、"[no]recurse - ask for recursive answer to query" とヘルプ で出て来る。norecurse とすると、そのネ−ムサ−バそのものが持つ情報だけから探し て下さいという事である。デフォルトでは dig も nslookup も再帰的検索をする、 つ まり他のネ−ムサ−バに尋ねに行くようになっている。 (4) DNS のマスタ−とスレ−ブ * かつて BIND 4.x でのゾ−ン転送の動き /etc/named.hosts や named.rev DNS制御ファイル ---------------------------------------------------- |@ IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | 1996040101 ; Serial | 3600 ; Refresh | 300 ; Retry | 3600000 ; Expire | 360000 ; Minimum TTL( Time To Live ) |) | ____Expire_____ | | Refresh Refresh |Retry Retry Retry | Refresh / ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄\/ ̄\/ ̄\/ ̄\/ ̄\/ ̄ ̄ ̄ ̄\ スレ−ブ |---------------*----------------------------------*---------------- マスタ−へ | | マスタ−のゾ−ン 問い合わせ ↓ ↓ デ−タを消去する。 反応あり 反応なし マスタ− |--------------------×--------------------------------- マスタ−停止 ここまでデ−タ変わらず デ−タは変更された / ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄\/ ̄ ̄ ̄ ̄\ スレ−ブ |------------------------------------------------------- | |↑ゾ−ン ↓ ↓|転送 反応あり:マスタ−が稼働していて、かつ Serial 番号がアップしていた。 マスタ− |--------------------○--------------------------------- Serial 番号 マスタ−・デ−タ変更で 1996040101 Serial 番号 1996040201 * BIND 8 以降のマスタ−とスレ−ブの形態 オリジナルの情報をもつネ−ムサ−バのマスタ−は、特にプライマリ・マスタ−と呼ばれ る。スレ−ブのネ−ムサ−バはマスタ−からゾ−ン情報のファイルをコピ−して持つ。そ のスレ−ブをマスタ−として、他のネ−ムサ−バが更にスレ−ブとなることも可能である。 正引ファイルと逆引ファイルをスレ−ブに持ってもらえばいい。ル−トファイルやロ−カ ルファイルは、スレ−ブになってもらっているネ−ムサ−バで記述されていて、既に持っ ていれば、内容は一緒なので持ってもらう必要はない。 プライマリ・マスタ− スレ−ブ ------- ------- ------- ------- 正規なスレ−ブではな | | <------ | | <----- | | | | いがゾ−ン情報を持つ ------- ------- ------- ------- ネ−ムサ−バ。 マスタ− スレ−ブ ステルス [ その1 ] 192.168.1.1 192.168.1.2 マスタ− named.conf □ □ --------------------------------- |master |slave |zone "nix.co.jj" { ----------------------- | type master; | file "/etc/named.hosts"; マスタ−はどこのネ−ムサ−バからのゾ−ン転送 |}; の要求を受け付ける。制限なし。 /etc/named.hosts ------------------------------------------------- |$ORIGIN nix.co.jj. |$TTL 86400 |@ IN SOA ns1.nix.co.jj. admin.ns1.nix.co.jj. ( | 2002121901 86400 21600 2419200 1200 ) | IN NS ns1.nix.co.jj. << master 192.168.1.1。 | IN NS ns2.nix.co.jj. << slave 192.168.1.2。 |ns1 IN A 192.168.1.1 |ns2 IN A 192.168.1.2 スレ−ブ named.conf --------------------------------- |zone "nix.co.jj" { | type slave; | masters 192.168.1.1; ファイルはマスタ−の named.conf に書いてある |}; /etc/named.hosts ファイル名にコピ−される。 [ その2 ] マスタ− named.conf --------------------------------- |zone "nix.co.jj" { | type master; | allow-transfer { 192.168.10.1; }; マスタ−は 192.168.10.1 のネ−ムサ−バか | file "/etc/named.hosts"; らだけゾ−ン転送の要求を受け付ける。 |}; /etc/named.hosts ----------------------------- | | | IN NS ns1.nix.co.jj. << master 192.168.1.1。 | IN NS ns2.provider.jj. << slave 192.168.10.1。 |ns1 IN A 192.168.1.1 スレ−ブ named.conf --------------------------------- |zone "nix.co.jj" { | type slave; | file "/etc/named.hosts.bak"; ファイルは指定した /etc/named.hosts.bak とい | masters 192.168.1.1; う名前でコピ−される。 |}; [ その3 ] スレ−ブ named.conf --------------------------------- 他のネ−ムサ−バから見れば、マスタ−であると |zone "nix.co.jj" { かスレ−ブであるとかは関係ない。このネ−ムサ | type slave; −バ自体にも他のネ−ムサ−バからゾ−ン転送の | allow-transfer { none; }; 要求が来ることだってある。このネ−ムサ−バは | file "/etc/named.hosts.bak"; どこからもゾ−ン転送の要求を受け付けないよう | masters 192.168.1.1; に制限した。allow-transfer {}; でも同じ意味。 |}; [ その4 ] named.conf --------------------------------- ネ−ムサ−バのマスタ− nix.con が、nix.co.jj |zone "nix.con" { のスレ−ブにもなっている。こういう形態がスレ | type master; −ブの普通の形態だろう。 | file "/etc/named.hosts"; |}; 192.168.1.1 192.168.10.1 | □ □ |zone "nix.co.jj" { | | | type slave; ----------- ---------- | masters 192.168.10.1; nix.co.jj nix.con の master |}; の master nix.co.jj の slave [ その5 ] BIND 8 から入ったマスタ−の変更をスレ−ブに知らせる機能。 マスタ−に書かれている ゾ−ンの NS レコ−ドのIPアドレスに Notify メッセ−ジを送る。スレ−ブはマスタ− の Serial 番号を見て、アップしていればゾ−ンファイル(DNS制御ファイル)をとって くる。Notify メッセ−ジをスレ−ブが受けてからの動作は従来と同じである。 マスタ− named.conf %ndc reload でマスタ−のゾ−ンファイルを読込 --------------------------------- みし直しても、Notifyを実行する。スレ−ブに変 |zone "nix.co.jj" { 更しましたとメッセ−ジを送る。ここでの例では | type master; 2ヵ所、192.168.1.1 と 192.168.10.1 へ送る。 | notify yes; | file "/etc/named.hosts"; |}; 192.168.1.1 192.168.10.1 (ns2.nix.co.jj) □ □ /etc/named.hosts |master |slave ----------------------------- --------- ----------- | | ns1.nix.co.jj ns2.provider.jj | IN NS ns1.nix.co.jj. | IN NS ns2.nix.co.jj. |ns1 IN A 192.168.1.1 |ns2 IN A 192.168.10.1 << slave の安全な記述の仕方。スレ−ブのIP アドレスは自分で指定する。 スレ−ブ named.conf --------------------------------- 「DNS再入門」"Internet Week 2002/DNS DAY"、 |zone "nix.co.jj" { PDF ファイル、41ペ−ジの20ペ−ジ目に書か | type slave; れていること。JPNICには nix.co.jj のネ−ムサ | file "/etc/named.hosts.bak"; −バの登録は、ns1.nix.co.jj と ns2.nix.co.jj | masters 192.168.1.1; とする。スレ−ブの情報は全面的には信用しない |}; 方がいいかも。改竄されているかも知れない。 ※Notify の RFC1996、August 1996 A Mechanism for Prompt Notification of Zone Changes (DNS NOTIFY) [ その6 ] マスタ− named.conf 192.168.20.1 はスレ−ブサ−バではない。 でも --------------------------------- nix.co.jj のゾ−ン情報を持つことを特別に許す |zone "nix.co.jj" { ということ。ステルスサ−バと呼ばれる。 | type master; | notify yes; 192.168.1.1 192.168.10.1 192.168.20.1 | file "/etc/named.hosts"; □ □ □ | also-notify { 192.168.20.1; }; |master |slave |stealth |}; --------- ---------- ---------- (5) BIND 9 系列の特徴と設定 `27/12 * BIND 9 の特徴 BIND 8 では外向けと社内向けで named を2つ起動させて、listen-on で分けた。BIND 9 では named は1つでよく、view で振り分けることができる。view "local" とか"world" とかの記述は何でもいい。先に書いた方から評価されるということ。 view の中で記述で 切ること。listen-on-v6 { none; }; を view 内に書くと named の起動はエラ−になる。 BIND 8 の ndc。BIND 9 では rndc( remote name daemon control )になった、ndcとはコ マンドの中身は異なる。rndc.conf を rndc-confgen コマンドで作る。 rndc それに dig, nsupdate コマンドはDNSサ−バでないホストから実行できる。 つまりリソ−スレコ− ドの追加や削除を BIND 9 ではリモ−トから操作ができるようになった。 オプションの notify 指定は、セカンダリDNSにすぐに変更を知らせる機能、従来はセ カンダリの方から指定時間間隔で変更があったかチェックしていた。この時間間隔をへた に長く書いてしまったら、いつまでたってもセカンダリに伝わらない。 notify yes 指定 すればゾ−ンファイルを記述変更して、Serial 番号を上げ直ちにセカンダリに反映する。 recursion はyes がデフォルト、このDNSサ−バ以外の情報も検索しに行く、再帰検索 という。view "NAKA" は社内のホストのDNSのクライアントが見るゾ−ン情報、それに インタ−ネットにアクセスできるようにするため、recursion yes にする。 view "SOTO" は社外のDNSクライアントが見る情報、再帰検索はしない。このDNSサ−バがもって いるゾ−ン情報しか返さない。でもこのDNSサ−バが既にキャッシュした情報は返す。 view の役割について。view "NAKA" は内部の人が使う情報だから、 DNSの2次サ−バ はその情報を、そもそも持つ必要はないはずである。view "SOTO" は外部の人が使う情報 だから、DNSの2次サ−バにも持つ必要がある。外の人はDNSの1次または2次のど ちらかを見に来る。allow-transfer { 10.10.10.1; 10.10.10.2; }; を view "SOTO"に記 述して、2次サ−バが情報を取って行くことを許可した。 /etc/named.conf << BIND 9 の named はデフォルトで /etc/named.conf を読む。 ---------------------------------------- |options { | directory "/usr/local/bind/etc"; | listen-on-v6 { none; }; << IPv6 は見にいかない。 | version "henomohe"; << 安全のため BIND のバ−ジョン名を適当な名前にした。 |# empty-zones-enable no; << これも有効にした方がいいかも。'#' はコメント。';' |}; はだめ。ゾ−ンファイルでは '#' はだめ、';'のこと。 | |view "NAKA" { | match-clients { 127.0.0.1; ..; }; 社内のクライアントだけが、この view 内の | allow-query { 127.0.0.1; ..; }; ゾ−ン情報を利用できて、他のDNSサ−バ | recursion yes; の情報も検索できる。... の所は社内のIP | allow-recursion { 127.0.0.1; ..; }; アドレスなんかを記述する。127.0.0.1 がな | allow-transfer {}; いと、このホストから nslookup も効かなく | なる、mailコマンドでテストでメ−ルも出せ | zone "nix.co.jj." { ない。アクセス許可の制御は match-clients | type master; の記述だけでいいのでないか。 allow-query | file "nix.co.jj.zone"; と allow-recursionの記述は無くてもいいの | }; でないか。一応念のため書いてはみたが。 | | |}; view を記述する場合は match-clients も記 | 述すること。スコ−プを指定するのに必要!。 |view "SOTO" { | match-clients { any; }; この view 内の情報は、どこのホストからでも使えるとい | allow-query { any; }; うこと。但し他のDNSサ−バまで検索しに行かない。こ | recursion no; のDNSサ−バが管理している情報のみ問い合わせに返す。 | allow-transfer { 10.10.10.1; 10.10.10.2; }; |# notify yes; << この2つ、プロバイダがBIND 9 にしてないと意味を成 |# also-notify { 10.10.10.1; 10.10.10.2; }; さない。とりあえずコメントでいいか。 | | zone "nix.co.jj" { DNSの2次サ−バが持つゾ−ン情報という | type master; のは、match-clients { any; }; に合致する | file "nix.co.jj.zone"; view "SOTO" の情報だと思う。 view "NAKA" | }; には、match-clients に2次サ−バのIPア | | ドレスは書かないので、2次サ−バは"NAKA" |} を素通りして "SOTO" を見ることになる。 | |以下2つの記述はなくても named の起動には問題ない。意味がよく理解できなけば、な |しにしても構わない。その場合は rndc コマンドは使えないので、直接 named プログラ |ムをスタ−トさせたり、キルしたりすること。 | |key "rndc-key" { \ | algorithm hmac-md5; |これら view の外に記述する | secret "xaUIShkhAjjkk328JDksaa=="; |こと。中に書くとエラ−にな |}; ↑ |り起動しない。そもそもこれ | 秘密鍵 |ら2つの記述がないと、rndc |controls { |コマンドは有効ではない。 | inet 127.0.0.1 port 953 | | allow { 127.0.0.1; } keys { "rndc-key"; }; / ↑ |}; | # cd /usr/local/bind/sbin view の中に書いた場合はダメ、named は起動しない。 # ./rndc reload rndc: connect failed: 127.0.0.1#953: connection refused # ./rndc reload view の外に書けば先でも後でもOK、named は起動。 server reload successful マイナ−バ−ジョンによってもサポ−トされているオプションが異なっている。リリ−ス ノ−トを見て自分で利用できるオプションを確認すること。次は BIND 9.4.2 にてコンパ イルした際のオプション。# ./configure --disable-empty-zone --disable-ipv6 いろい ろやっていた。--disable-ipv6 で IPv6 は見ないようにしている。empty-zone って何な のかな。制御ファイルでも empty-zones-enable no; とか disable-empty-zone "."; と か記述する。内部ネットのホストからの問い合わせに、とりあえず空で答えるとか。 * リモ−トアクセスによる制御 # /usr/local/sbin/rndc-confgen > rndc.conf カレントディレクトリにファイルができ る。ファイル名は rndc.conf としたが別になんでもいい。 生成されたファイルの記述の 内、コメントになっている key "rndc-key" と controls の所をnamed.conf に書く。key "rndc-key"に秘密鍵ができる、同じマシンで rndc-confgen をやっても毎回、値は異なる。 rndc コマンドはリモ−トから named の操作ができる。リソ−スレコ−ドの追加や削除を、 DNSサ−バでないホストから実行できる。BIND 9 の dig, nsupdate コマンドもできる。 図1は hostY でDNSの操作ができるほか、hostX でもできることを示す。 図1 rndc rndc.conf named named.conf rndcコマンドはデフォルト hostX□ hostY□ rndc.conf で /etc/rndc.conf を読む。 |.1 |.2 マスタ− ---------------------------- 192.168.1.0 マスタ−:DNS1次。 図2 rndc rndc.conf named named.conf named スレ−ブ:DNS2次。 hostX□ hostY□マスタ− hostZ□スレ−ブ hostX はただのホスト。 |.1 |.2 |.3 ------------------------------------------------ 192.168.1.0 hostX で # rndc -s 192.168.1.3 refresh nix.co.jj をやると、 スレ−ブがマスタ−の Serial番号を見にいって、上がっていればゾ−ン転送をする。スレ−ブがマスタ−のゾ− ン情報を取って来る。refresh を transfer にすると、Serial番号は関係なくゾ−ン転送 をする。これは結構、危険なことである。スレ−ブでは rndc コマンドを受け付けるIP アドレスを named.conf に書いて制限できる。これはマスタ−に書くのではない、ゾ−ン 転送はスレ−ブからマスタ−に要求することだから。named.confの中で allow-update {} に許可するIPアドレスを書く。zone, view, controls の優先順で可否が決まる。 * BIND 9 についてその他 BIND 9 は IPv6 にデフォルトで対応している。IPv6ではAレコ−ドをAAAAレコ−ドという。 DNSの正引きファイルには www.nix.con. IN AAAA 2001:240:501::204:23ff:fecb:8908 というように記述すればいい。この IPv6 アドレスは「NETWORK MAGAZINE」`27/12, P.74 〜,"IPv4枯渇はすぐそこに!今すぐ知りたい IPv6 Q&A"、から取らせてもらった。 DNS 登録情報の改竄チェックとデジタル署名 DNSSEC( DNS Security Extentions )がサポ −トされた。1999年暮れ頃登場した BIND 9 でサポ−トされた。ただし標準ではサポ −トはされていない。configure --with-openssl とコンパイルし直すこと。 PKIの仕 組みを使う。atmarkit の "連載:実用BIND 9 で作るDNSサ−バ 2004/2/24" に詳しい。 Dynamic Update を利用している時は、rndc stop とやって named を停止させること。こ れで動的に変更されたゾ−ン情報をファイルに反映させるようにする。rndc halt だと反 映せずにいきなりサ−バを止める。 Dynamic Update ではゾ−ン情報を変更した所など最 新状態はメモリ内にある。Dynamic Update は Dynamic DNS とか DDNS とも言われる。 * 使用するポ−ト番号について `28/08 従来はDNSサ−バ同士は UDP/53 ポ−トを双方使用して通信する。それが BIND 8.1 で は非特権ポ−トをデフォルトで使うように変更された。つまり発信元ポ−トは 1024 番以 上の任意ポ−トを使うようになった。ただし任意ポ−トがランダムなポ−ト番号になるの かは不明。2008年7月に発覚した BIND の脆弱性への対策では、ランダムなポ−トは BIND 8 はそもそも対応できないので、BIND 9 にあげることとある。 例えば BIND 9.4.2 ではデフォルトで、発信元がランダムなポ−トになるようになってい る。しかし発信元 1024番以上の任意ポ−トの実装が不十分なようだった。named.conf で は特に設定しないと、デフォルトで query-source port *; が有効になっている。発信元 ポ−ト番号を以前のまま 53 番にしたければ query-source port 53; と記述する。 しか し前に調べて上記で書いた query-source の意味と少し違う気がしないでもないが。 BIND 9.4.2ではこちらから問い合わせする度、異なる発信元ポ−ト番号を使うようになっ ている。普通はそう思うだろう。実はそうはなっていなくて、1024番以上の任意ポ−トの 特定の番号を常に使うようになっている。これは snoopコマンドで何度も確かめた。コン パイルした際に決められるのか、 どうもそのできた named 固有の値を常に使うようなの だ。発信元ポ−ト番号は毎回、例えば 32964 で同じということである。 BIND 9.4.2-P1 パッチをかけると、今度は 1024 番以上の任意ポ−トの特定の番号から問 い合わせの度に1ずつ番号を上げていくらしい。インタ−ネットで調べていてそんな記事 を見た。BIND 9.4.2-P1 パッチをかけると、これで毎回 1024 番以上の任意ポ−トを発信 元に使うようになる。P1 は2008年7月9日リリ−ス、P2 は8月4日リリ−スである。 なんて分かりにくい話。JPNIC か JPRS でここら辺りのこと平易に解説して欲しい。 * BIND 9.3.2 の場合のこと `2g/06/s 追記 Sun Solaris9 のマシンでメ−ルリレ−の予備機を作ってみた。 本番機は BIND 9.4.2 の named が動いている。DNS制御ファイル、sendmail.cf ファイルをそのままコピ−して みた。コピ−先は /usr/loca/bind/etc/etc/ とした。 /etc/named.conf はシンボリック リンクを張り、/usr/loca/bind/etc/named.conf を見るようにした。 BIND 9.3.2 の実行 モジュ−ルは /usr/local/bind932/ 内にある。nslookup, dig は ../bind932/bin/ にも ある。OSに最初から入っている nslookup コマンドで動作確認をしてもいい。 # cd /usr/loca/bind/etc # ln -s /usr/loca/bind/etc/named.conf /etc/named.conf # ls -l /etc/named.conf lrwxrwxrwx 1 root other ... /etc/named.conf -> /usr/loca/bind/etc/named.conf # cd /usr/local/bind932/sbin ※リンクを解除するには #cd /etc;#rm named.conf。 # ./named -v BIND 9.3.2 # ./named 一応 named デ−モンは動いた。/etc/resolv.conf は 127.0.0.1。 # ../bin/nslookup どこを見ているのか。おかしな情報を出してきた。 上の named は > set type=any /usr/local/bind932/etc/named.conf を見たということ。 > nix.co.jj こんな警告が出ていた。rndc は使ってないけど。 # tail /var/adm/messages ... /usr/local/bind932/etc/rndc.key: file not found # ./named -c /etc/named.conf DNS制御ファイルを指定して起動した。 # tail /var/adm/messages こんなオプションは知らないと出た。 ... /etc/named.conf:5: unknown option 'empty-zones-enable' /usr/loca/bind/etc/named.conf ------------------------------------ BIND 9.4.2 の named で設定した制御ファイ |options { ルを BIND 9.3.2 に動かしたら、対応してな | directory "/usr/local/bind/etc"; いオプションがあったということ。 | listen-on-v6 { none; }; | version "1.1.1.1"; | empty-zones-enable no; << コメントにした。# を前に付けた。 |}; |view "INTERNAL" { << 先には view "NAKA" と書いた、何でもいい。 | | /etc/rc2.d/S72inetsvc 関係するところのみを記載した。 ------------------------------------------------------------------------ |if [ -f /etc/named.conf ] && [ -f /usr/local/bind932/sbin/named ]; then | echo 'starting internet domain name server.' | /usr/local/bind932/sbin/named -c /etc/named.conf & |fi * BIND 9.3.2 での問題 `2h/05/S /etc/rc2.d/S72inetsvc 関係するところのみを記載した。 ------------------------------------------------------------------------ |if [ -f /etc/named.conf ] && [ -f /usr/local/bind932/sbin/named ]; then | echo 'starting internet domain name server.' | /usr/local/bind932/sbin/named -c /etc/named.conf & |fi /usr/loca/bind/etc/named.conf /etc/named.conf にリンクされている。 ------------------------------------ |options { | directory "/usr/local/bind/etc"; | | | empty-zones-enable no; << このオプションが癖者だった。 # cd /usr/local/bind932/sbin # ./named << 起動しなかった。このバ−ジョンの named はデフ ォルトで /etc/named.conf を見るはず。 # ./named -C /etc/named.conf << 起動したが、何分かしたら無くなっていた?。オプ ション -C 大文字でないといけないのか。 正引きファイルに ppp 192.168.1.1 などと追記してみた。 ppp.nix.co.jj を記述したの が # ./named -C /etc/named.conf で反映されるのか試した。 このマシンで # nslookup にて ppp.nix.co.jj と叩いてIPアドレスが出るか。出なかった。おかしい。 named.conf の empty-zones-enable no; を # を前に付けてコメントにした。BIND 9.3.2 ではこのオプションがあると named が起動しないことを、以前体験していた。 この章の 記事を見つけてそうだったと思い出した。named は起動して正常な動作になった。 /etc/rc2.d/S72inetsvc の named -c /etc/named.conf & のところ -C に変更した。これ でしばらく様子をみた。知らない内に午後2時から夜12時頃まで7回ぐらいマシンは再 起動してた。翌日 # ps -ef | grep named やったら小文字の -c だった。 ということは named の制御ファイルの記述に問題なく、 named が正常に起動した場合は -C でも -c でも構わないということか。おかしいと #./named -C /etc/named.conf をや ったりしてDNS2次サ−バの情報が真っ白になったのでないか。不可解な現象が起きた。 "23-7. メ−ルとDNSサ−バの維持を" の "[ 付録 ] メ−ルリレ−予備機の作成" と関 係する。メ−ルリレ−で動かしてきた Sun のマシンがダウンして、 予備機に替えたのだ がちゃんと稼働するまで、朝出社して気付いてから7時間ぐらいかかった。 * 参考 「UNIX MAGAZINE」`25/07, P.57〜65, "連載ネットワ−ク・ミニ実験室7, ホストの名前解 > 決"。/etc/hosts から始まり NIS、そしてDNS。利用可能なネ−ムサ−ビスの見分け 方、共有ライブラリ。この号以降、引き続き実験した詳細な記事が連載されている。 「UNIX MAGAZINE」`26/02, P.97〜108,"連載ネットワ−ク・ミニ実験室14, rndc プログラ > ム"。rndc reload で named.conf 再読込み or kill -HUP named_ID。rndc stopで停止。 rndc stats で状態を named.stats に書き出す。rndc status でサ−バの状態を表示。 「UNIX MAGAZINE」`26/03, P.47〜56,"連載ネットワ−ク・ミニ実験室15, BIND9のDynamic > Update"。ネットワ−クでゾ−ン情報を変更する nsupdate コマンド、allow-update で 許可するホストを記載。メモリからジャ−ナルファイル、そしてゾ−ンファイルに反映。 「UNIX MAGAZINE」`26/04, P.48〜66,"連載ネットワ−ク・ミニ実験室16, BIND9のDynamic > Update (2)"。ゾ−ン情報の整合性、PKIの仕組みでより安全に Dynamic Updateを利 用する。TSIG( Transaction SIGnature )、dnssec-keygenコマンドで秘密鍵を生成する。 「日系コミュニケ−ション」`2a/09, P.60〜61, "Monthly Report: 2011年に利用始ま > る DNSSEC、自社でDNSを運用する企業は要注意"。プロバイダでも対応はこれからで あるとの記事。キャッシュポイズニング攻撃ヘの防御。電子署名により本物確認。 「Solaris 9 システム管理ハンドブック」は BIND 8 の話が載っている。BIND 8 から実際 BIND 9 に変更しようとした際、ホスト名解決が遅い。 それで急遽、自腹購入した技術評 論社の「BIND 9によるDNSサ−バ構築」には view のことは書いてなかった。DNSの 1、2次が BIND 8 と BIND 9 で違う場合について知りたいのだが、書かれてなかった。 Sun のマシンの日本語ドキュメントが http://docs.sun.com/app/docs/doc/... ここにあ る。Sun Microsystems Documentation。かなり詳しいというか、製品用のちゃんとしたド キュメントだ。パ−トΠDNSの設定と管理、第3章DNSの設定と管理(リファレンス)。 Solaris 10 オペレ−ティングシステムには、BIND 9.x DNSサ−バが付属しています。 ------------------------------------------------------------------------------------ [ 付録 ] BIND のいろいろ * リンクはいったん消してから張り直すこと /usr/local カレントディレクトリ # ls -l lrwxrwxrwx ... 18 Oct 29 15:33 bind -> /usr/local/bind941 drwxr-xr-x ... 512 Dec 18 11:36 bind941 drwxr-xr-x ... 512 Dec 18 11:18 bind942 # ln -s /usr/local/bind942 /usr/local/bind # ls -l lrwxrwxrwx ... 18 Oct 29 15:33 bind -> /usr/local/bind941 drwxr-xr-x ... 512 Dec 18 11:37 bind941 drwxr-xr-x ... 512 Dec 18 11:18 bind942 # ls -l bind941 何でこんなリンクになった?。おかしい。 lrwxrwxrwx .. 18 Dec 18 11:37 bind942 -> /usr/local/bind942 # ls -l lrwxrwxrwx 1 root other 18 Oct 29 15:33 bind -> /usr/local/bind941 drwxr-xr-x 9 root other 512 Dec 18 11:39 bind941 drwxr-xr-x 9 root other 512 Dec 18 11:18 bind942 # rm bind いったんリンクを消してみる。 # ls -l drwxr-xr-x 9 root other 512 Dec 18 11:39 bind941 drwxr-xr-x 9 root other 512 Dec 18 11:18 bind942 # ln -s /usr/local/bind942 /usr/local/bind リンクを付け直した。 * Sun Fire V210 Solaris 9 に入れた BIND-9.2.4 # /usr/local/sbin/named -help usage: named [-c conffile] [-d debuglevel] [-f|-g] [-n number_of_cpus] [-p port] [-s] [-t chrootdir] [-u username] # ls /usr/local/sbin dnssec-keygen dnssec-signzone named-checkconf rndc-confgen dnssec-makekeyset lwresd named-checkzone dnssec-signkey named rndc # ls /usr/local/bin/ns dig host nslookup nsupdate * Sun Solaris 9 での BIND-9.4.2 のコンパイルとインスト−ル `27/12 # cd /usr/local/source/bind-9.4.2 # ./configure --prefix=/usr/local/bind942 --disable-ipv6 # make # make install # ln -s /usr/local/bind942 /usr/local/bind # ls /usr/local/bind942/sbin dnssec-keygen named named-compilezone dnssec-signzone named-checkconf rndc lwresd named-checkzone rndc-confgen * INDY IRIX5.3 での BIND 9 のコンパイル BIND 8 系列、8.2.3 や 8.4.4 でもコンパイルしようとしたがエラ−が出てできなかった。 /src/port/irix/noop.c で /usr/include/sys/sysctl.h と /usr/include/net/if_dl.hと いうヘッダ−ファイルがないためだった。どうやら CIDR に関係するみたいである。多分 IRIX 6.x ならだいじょうぶな気がする。だめ元で BIND 9 をコンパイルしたらできた。 % ftp ftp.isc.org ftp> cd /isc/bind9/9.2.4rc2 ftp> ls -rw-r--r-- 1 10132 9996 31500 Apr 16 04:52 9.2.4rc2 -rw-r--r-- 1 10132 9996 4494389 Apr 16 04:01 bind-9.2.4rc2.tar.gz -rw-r--r-- 1 10132 9996 187 Apr 16 04:01 bind-9.2.4rc2.tar.gz.asc ftp> get bind-9.2.4rc2.tar.gz 4494389 bytes received in 10.16 seconds (431.90 Kbytes/s) << ADSL でダウンロ− ドした、速いバイ。 % zcat bind-9.2.4rc2.tar.gz | tar xvf - % ls -F bind-9.2.4rc2/ bind-9.2.4rc2.tar.gz % cd bind-9.2.4rc2;ls -F CHANGES bin/ contrib/ ltmain.sh COPYRIGHT config.guess doc/ make/ FAQ config.h.in docutil/ mkinstalldirs Makefile.in config.h.win32 install-sh* version README config.sub isc-config.sh.in win32utils/ acconfig.h configure* lib/ aclocal.m4 configure.in libtool.m4 % configure --disable-threads << IRIX 5.3 はマルチスレッドをサポ−トしてない。 % make << GNU make 使用。 % ls -F bin Makefile check/ dnssec/ nsupdate/ tests/ Makefile.in dig/ named/ rndc/ win32/ * ユ−ティリティ・ソフトのヘルプ # /usr/local/bin/dig -help usage: dig [@server] [domain] [q-type] [q-class] {q-opt} {d-opt} [%comment] where: server, domain are names in the Domain Name System q-class is one of (in,any,...) [default: in] q-type is one of (a,any,mx,ns,soa,hinfo,axfr,txt,...) [default: a] q-opt is one of: -x dot-notation-address (shortcut to in-addr.arpa lookups) -f file (batch mode input file name) -T time (batch mode time delay, per query) -p port (nameserver is on this port) [53] -b addr[:port] (bind to this tcp address) [*] -P[ping-string] (see man page) -t query-type (synonym for q-type) -c query-class (synonym for q-class) -k keydir:keyname (sign the query with this TSIG key) -envsav,-envset (see man page) -[no]stick (see man page) d-opt is of the form ``+keyword=value'' where keyword is one of: [no]debug [no]d2 [no]recurse retry=# time=# [no]ko [no]vc [no]defname [no]search domain=NAME [no]ignore [no]primary [no]aaonly [no]cmd [no]stats [no]Header [no]header [no]ttlid [no]cl [no]qr [no]reply [no]ques [no]answer [no]author [no]addit pfdef pfmin pfset=# pfand=# pfor=# notes: defname and search don't work; use fully-qualified names. this is DiG version 8.3 $Id: dig.c,v 8.44 2000/12/23 08:14:31 vixie Exp $ # /usr/local/bin/host host: usage error (missing host argument) Usage: host [-adlrwv] [-t querytype] [-c class] host [server] -a is equivalent to '-v -t *' -c class to look for non-Internet data -d to turn on debugging output -l to turn on 'list mode' -r to disable recursive processing -s recursively chase signature found in answers -t querytype to look for a specific type of information -v for verbose output -w to wait forever until reply * dig コマンドの出力例 /etc/named.boot -------------------------------------- |cache . /etc/named.ca |primary nix.co.jj /etc/named.hosts /etc/named.ca -------------------------------------------------- |. 9999999 IN NS hostA.nix.co.jj. |hostA.nix.co.jj. 9999999 IN A 192.10.10.1 /etc/named.hosts -------------------------------------------------------------- |@ IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( | 1 3600 3600 3600 600 ) ; | IN NS hostA.nix.co.jj. |localhost. IN A 127.0.0.1 |hostA IN A 192.10.10.1 |hostB IN A 192.10.10.2 |hostC IN CNAME hostB # dig @192.10.10.1 nix.co.jj. axfr ; <<>> DiG 8.3 <<>> @192.10.10.1 nix.co.jj. axfr ; (1 server found) $ORIGIN nix.co.jj. @ 10M IN SOA hostA katou.hostA ( 1 ; serial 1H ; refresh 1H ; retry 1H ; expiry 10M ) ; minimum 10M IN NS hostA hostA 10M IN A 192.10.10.1 hostB 10M IN A 192.10.10.2 hostC 10M IN CNAME hostB hostA 10M IN A 192.10.10.1 @ 10M IN SOA hostA katou.hostA ( 1 ; serial 1H ; refresh 1H ; retry 1H ; expiry 10M ) ; minimum ;; Received 7 answers (7 records). ;; FROM: kato to SERVER: 192.10.10.1 ;; WHEN: Tue Nov 25 15:13:41 2003 # dig @192.10.10.1 nix.co.jj any ; <<>> DiG 8.3 <<>> @192.10.10.1 nix.co.jj any ; (1 server found) ;; res options: init recurs defnam dnsrch ;; got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; QUERY SECTION: ;; nix.co.jj, type = ANY, class = IN ;; ANSWER SECTION: nix.co.jj. 10M IN SOA hostA.nix.co.jj. katou.hostA.nix.co.jj. ( 1 ; serial 1H ; refresh 1H ; retry 1H ; expiry 10M ) ; minimum nix.co.jj. 10M IN NS hostA.nix.co.jj. ;; ADDITIONAL SECTION: hostA.nix.co.jj. 10M IN A 192.10.10.1 ;; Total query time: 14 msec ;; FROM: kato to SERVER: 192.10.10.1 << # hostname は kato ということ。 ;; WHEN: Tue Nov 25 15:14:02 2003 ;; MSG SIZE sent: 27 rcvd: 105