このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

BINDの設定方法がわかりません。

発言者:まえばし
( Date Thursday, September 27, 2001 16:34:23 )


はじめまして。まえばしともうします。

DNSサーバーをOSXで作りたいのですが、うまくいきません。
OSXどころか、UNIXも初心者なのですが、詳しい方がいれば
いろいろと教えていただきたいです。

症状としては、
[node001:~] maebashi% ndc start
って打つと、
ndc: error: name server has not started (yet?)
とか言われてしまいます。

また、nslookup を使うと
;; connection timed out; no servers could be reached
とでてしまいます。

一応、named.confで、正引き・逆引きを設定したつもりな
のですが。
どこら辺に問題があるのかよく分かりません。
まず、どのあたりをどうしたらいいのか教えていただけれ
ばと思います。

※最初、BIND8がOSXに入っているとは知らず、9.1.3, 9.2.0
 rc3 などを入れてしまいました。
 そのあと9の解説が少なかったので、「8でやり直そう」
 と思って8をインストールしたのですが、それはうまく
 いってないようです。
 現在の所、9.2が入っているようです。
 (OS10.1がでた際には、インストールするついでに、BIND
    8に戻ればと思っていますが。)

重松修 さんからのコメント
( Thursday, September 27, 2001 16:56:53 )

まず、bind がまともにインストールされているか、
調べるのが先決ではないでしょうか?
もし、よくわからないなら、もう一度、OS ごと入れ直した方が
早いかも知れません。

また、named.conf を設定したつもり、といわれても、
正しく設定できているのか、そうでないのか、全く推測することが
できません。

当然ですが、bind が動かなければ、nslookup で動作を確認する
ことはできませんから、bind が動いてるか、ps で
プロセスを確認するとか、順番を追って、問題を整理してください。

まえばし さんからのコメント
( Thursday, September 27, 2001 17:26:28 )

重松さん どうもありがとうございます。

まえばしです。
まともにインストールされているかですが、正直不安です。
[node001:~] maebashi% /usr/sbin/named -v
named 8.2.3-REL Fri Feb 16 19:48:20 PST 2001
[node001:~] maebashi% /usr/local/sbin/named -v
BIND 9.2.0rc3
とか出てきました・・・。
OSX10.1が出るまで待とうと思っていましたが、早速差し替えてみます。

ProcessViewerで見ると、一応Namedは実行中になっていました。
(しかし、今の状況ではダメってことですね?。
 それとも、動作しているってことは一応OKでnamed.confか
 ゾーンファイルに問題があるってことでしょうか?。)

いろいろ分からないことばかりですが、早速のご連絡ありがとう
ございました。

重松修 さんからのコメント
( Friday, September 28, 2001 09:30:50 )

Linux だと、/etc/resolve.conf にどの DNS を使うか、
っていうのが書いてあるんですが、Darwin の場合はどこに
書いてあるんでしょうね。すみません、不勉強で。
これが、ちゃんと localhost なり、自分になっているか、
確認してみてください。また、DHCP client になってたりしないですよね。
一応、nslookup は (Linux の場合は) どの DNS 使うか指定もできます。
なので、自分自身を使うようにして、まずは自分以外のドメインが
引けるか、試してみてはいかがでしょうか。

また、差し障りのない範囲で、named.conf なんかもどうなっているか、
提示していただければコメントできる「かも」知れません。
あと、Linux HowTo のページに bind の長くて詳しいのがありました。
Linux だろうと、Darwin だろうと、bind は bind だと思いますので、
確認してみてください。

まえばし さんからのコメント
( Friday, September 28, 2001 20:23:59 )

たびたびどうもありがとうございます。>重松さん。

今日、試してみましたらnslookupで自分以外は引けるようです。
ただ、今日気が付いたのですが、ルーターの設定がまずくて
外から見えないようになっているかもしれません。
(これと、BINDが使えないのと関係しているのか分かりません
 が、とりあえず、セカンダリDNSを入れて外から見えるか
 確認中です。)

named.confは、特に差し障りないです。
(っていうか、本当はあるのかもしれませんが、もともと
 ほったらかしになっていたドメインですので・・・(笑)。)
後日、メールに記載してご教示いただくかもしれません。
(その際は、よろしくお願いします。m(__)m.)

まえばし さんからのコメント
( Tuesday, October 02, 2001 16:15:01 )

お世話になっております。

上記を始める前に、下記タイトルの件で詰まってしまっておりました。
(ようやく、いろいろアドバイスを頂き解決できました。)
「Web共有を開始しています...」のまま停止
( Date Monday, October 01, 2001 16:09:58 )

そして、BINDの設定に再びチャレンジしているのですが、やはりうまく
動かないので、なにかアドバイス頂ける方がいたらご教示頂ければと
思います。
現状は、[localhost:/Users/maebashi] root# named
って打っても動いてくれません。

とりあえず、named.confを下記させていただきます。
(なんかまずいかな?。と思ったところはアスタリスクで消しました
 が、「これじゃわかりません。」と言う場合は値をいれます。
 (そんなに大事そうなサーバーでもないので。。(^^;)))

***********************************
// This BIND 8.2 Config File was installed by Apple Remote Admin.

controls {
//  unix "/var/run/ndc" perm 0600 owner 0 group 0;
inet 127.0.0.1 port 54 allow {any; };
};

options {
  directory "/var/named";
  //secondary DNS
  allow-transfer{
    143.90.***.57
  };
  notify yes;
  statistics-interval 1;
  //stats-file "named-stats";
};

//mac-rescue.net
zone "****.co.jp" in {
type master;
file "db.mac-rescue.zone";
};


// Network Address (Sakasa)
zone "33.***.8.211.in-addr.arpa" in {
type master;
file "db.mac-rescue.zone.rev";
};

zone "0.0.127.in-addr.arpa" in {
type master;
file "db.localhost.rev";
};

zone "." in {
type hint;
file "db.cache";
};

どなたか、何かアドバイス頂ければうれしいです。

重松修 さんからのコメント
( Tuesday, October 02, 2001 16:30:33 )

確認ですけど、最終的に、bind のバージョンは 8.2 なんでしょうか?
9.2 なんでしょうか?

これによって、確か、/var/named 以下においておくファイルの
書式が微妙に異なったはずです。

具体的には、

$TTL    3D

みたいに、TTL から始まらないといけなかった気がします。

それ以外に、気になるのは、allow-transfer ですが、普通は、

        // ゾーン転送を許可するホスト
        allow-transfer {
                192.168.1.0/24; // 同じセグメント
                127.0.0.0/8; // ループバック
                111.222.333.444; // 自分自身のグローバル IP
                222.333.444.555; // セカンダリ
        };

みたくなるかと思います。
# ただし、あくまでもここに指定がないと、ゾーン転送できないだけです。

あと、

options{
        // これまでの設定
        version ""; // バージョンを隠す
};

のように追加すると、bind のバージョンを隠せ、特定のバージョンに
依存する攻撃を回避できる可能性が増えるかも知れない、と思います。

あと、もし、9.x を使っているならば、内向け、外向けを分けた方がいい
かと思います。view というのでできます。こうすることで、外からの
アクセスに対して、再帰問い合わせを禁止でき、キャッシュ汚染攻撃を
回避できます。

zone "." in {
type hint;
file "db.cache";
};

ですが、ちゃんと新しいものですよね?

重松修 さんからのコメント
( Tuesday, October 02, 2001 16:35:29 )

ふと思いましたが、IP は「一つだけ固定」ですか?
だったら、こんな感じなるはずです。

options {
        directory "/var/named";
        allow-query { any; }; // ローカルに制限すべき?

        // ゾーン転送を許可するホスト
        allow-transfer {
                192.168.1.0/24;
                127.0.0.0/8;
                211.8.xxx.33;
                211.8.zzz.1; // セカンダリ -- プロバイダに聞いてください
        };
        version ""; // バージョンを隠す
};

view "internal" {
        match-clients { 192.168.1.0/24; 127.0.0.0/8; }; // 内部アドレス
        recursion yes;

        // 正引き設定
        zone "." {
                type hint;
                file "named.root"; // 定期的にメンテナンスする必要あり
        };

        zone "localhost" {
                type master;
                file "in/localhost";
        };

        zone "yourdomain.com" {
                type master;
                file "in/yourdomain.com";
        };

        // 逆引き設定
        zone "0.0.127.in-addr.arpa." {
                type master;
                file "in/127.0.0";
        };

        zone "1.168.192.in-addr.arpa." {
                type master;
                file "in/192.168.1";
        };
};

view "external" {
        match-clients { any; };
        recursion no; // 再帰問い合わせ禁止 キャッシュ汚染攻撃防止

        // 正引き設定
        zone "yourdomain.com" {
                type master;
                file "ex/yourdomain.com";
        };

        // 逆引きは委譲されていないので未設定
};

まえばし さんからのコメント
( Tuesday, October 02, 2001 17:51:32 )

重松さん、たびたびありがとうございます。

上記の説明でnamed.conf の仕組みがだんだん分かってきました(^^)。
ありがとうございます。
BINDは8.2だと思います。
TTLは何も書いていなかったので、入れてみました。

しくみは分かってきたのですが、現状nslookupを打つと↓のように
表示されてしまいます。

[localhost:/Users/maebashi] root# nslookup www.****.co.jp

Server:         211.8.***.34
Address:        211.8.***.34#53

** server can't find www.****.co.jp: SERVFAIL

*.zone ファイル等の設定に何かミスがあるのでしょうか?。

それと、IPはすべて固定させて使おうと思っています。
また、NATとかは使っていません。
(使いたいのですが、うまく行きませんでした。)

稲垣 さんからのコメント
( Tuesday, October 02, 2001 18:09:33 )

 ええと、nslookupをした時にはシステム環境設定-ネットワークにて設定
されているサーバにアクセスをします。その設定は自分のアドレスになっ
ていますか?

 ある程度UNIX系のコマンドになれているという前提で書きますが・・・。

 namedは確かroot権限でないと起動しないはずですので、rootにsuすする
か、sudoにて起動してください。
 また、named.confの設定やnozeファイルの設定がおかしいときには、
systemlogに書き出されますので、その辺を確認したほうが良いかと思い
ます。「/var/log/system.log」が該当のファイルになります。
#Linux系の「/var/log/messages」に該当します。

 

重松修 さんからのコメント
( Tuesday, October 02, 2001 18:12:24 )

nslookup 以外に dig というツールもあります。
こちらでもう少し状況を把握してみてください。
それから、which nslookup としてみてください。
標準で OS X に入っているものと、bind を入れたときにインストール
されたものともしかしたら複数はいっていて、見当違いなものが
使われているのかも知れません。。。

それから、bind だけに関していえば、基本的に、Linux も OS X も
(多分) 関係ありませんので、http://www.linux.or.jp/JF/ などを
活用されると良いかと思います。

とりあえず、以下にまとまった文章を示します。
ここで dig の使い方なんかわかると思います。

後一息だと思うので、がんばって下さい。

→  JF DNS HOWTO

重松修 さんからのコメント
( Tuesday, October 02, 2001 18:53:10 )

[localhost:/Users/maebashi] root# nslookup www.****.co.jp
                            ~~~~
なので、root で作業をしていると思いこんでます。。。
# 最初インストールしたときに root のパスワードがわからず、参った。

念のため書きますと、root になるには、まず、sudo で
root のパスワードを変更してください。その後、su - で
root になります。

稲垣 さんからのコメント
( Tuesday, October 02, 2001 18:58:57 )

 はい、私も書き込みをした後に、気が付きました。

 プロンプトのところにrootとあったのでその点はクリアできているのかな。
後は、syslogでのメッセージが分かればどこが悪いのか分かるでしょうね。

まえばし さんからのコメント
( Tuesday, October 02, 2001 20:46:50 )

稲垣さん、重松さんどうもありがとうございます。
今日は、前の会社の鍵とカードを返しに出かけて、帰宅して
しまいました。
(↑しばらく(やろうと思えば)使いたい放題だったので、
 セキュリティも何もあったもんじゃないです(^^;))

system.logとdig、何かわかりそうな気がしてます。
上記、さっそく明日試してみようとおもいます。
(応援までいただき、ありがとうございました。)

まえばし さんからのコメント
( Wednesday, October 03, 2001 09:21:12 )

おはようございます。
早速昨日頂いた事柄を確認してみました。

> 標準で OS X に入っているものと、bind を入れたときにインストール
> されたものともしかしたら複数はいっていて、見当違いなものが
> 使われているのかも知れません。。。

どうやらこの可能性があります。
コマンドを打つと
; <<>> DiG 9.2.0rc3 <<>>
と出ています・・。

本日は、OSX10.0とアップグレートCDを持ってきたので、再インストール
出来るのですが、BINDをアンインストールするには、どれを消したらよ
いのでしょうか?。
どこまでがBINDのツールなのかというのがよく分からないので、消して
しまっていいものか少々不安です。

重松修 さんからのコメント
( Wednesday, October 03, 2001 12:58:35 )

bind 9.x では都合は悪いんでしょうか?
もう一度、tar ball から 9.x をインストールし直してみると良いかも知れません。

重松修 さんからのコメント
( Wednesday, October 03, 2001 14:37:07 )

確認してみたところ、10/1 に rc5 がでたようです。>bind 9.2.0
ご存じとは思いますが、9.2.x は「β版」なので、運用するならば、9.1.2 の方が
良いのではないかと思います。

あと、rc5 の Makefile.in をみたら、アンインストールは用意されていないようです。

とりあえず、

[root@linux /root]# which named

のようにどこに named があるのか、調べてみてください。ここで、見つからないならば、
パスが通っていないか、インストールがキチンと行えていない可能性があります。

[root@linux /root]# find / -name named -type f

のようにして、バイナリの所在を突き止めてみてください。

そうして、

[root@linux /root]# named -v

とすると、

BIND 9.1.2

のようにバージョンを調べることができます。

また、以下の文章は、bind を root 権限で実行せず、セキュリティが破られても、
被害を最小限で食い止めるための、「chroot jail」内で実行するための、
インストール手順書です。

bind は sendmail とならんで、バグ・セキュリティーホールの雨霰なので、
少しでも安全に運用するためのヒントになれば幸いです。

# 私は、sendmail ではなくて、qmail をつかっています。:-)
# DJB さんの DNS サーバもあるようで、これもセキュリティが売りのようです。


→  Chroot-BIND-HOWTO

micky さんからのコメント
( Wednesday, October 03, 2001 17:40:13 )

こんにちは、mickyです。
どんな状況で、何をされたいのかがわかりませんが、Mac OS X 10.1環境下で
デフォルトの8.2.3でも9.2.0rc5でもちゃんと動きますし、アンインストールも
必要ありません。
設定ファイルがおかしいかどうかは稲垣さんが書かれているようにsystem.log
を見るのが早いですから、UtilitiesフォルダにあるConsole.appで
/var/log/system.logを開いてモニタリングしてみればちゃんとエラーを出し
てくれます。結構8.xと9.xとで違うことがわかると思います。で、デフォルトの
8.2.3を動かしたいならばndc startで、9.xを動かしたいならば、デフォルト
インストールなら/usr/local/sbin/namedで動くと思います。
なにはともあれsystem.logのモニタリングが先決かと思います。

まえばし さんからのコメント
( Wednesday, October 03, 2001 19:09:22 )

いろいろありがとうございます。>みなさま。

今日は、午後データを移した後、フォーマットした上で再
インストールしていました。
その間に、重松さんやmickyさんからいろいろアドバイスを
もらっていたのに先ほど気がつきました。

とりあえず、8.2.3になったので、これで明日作ってみよう
かとおもいます。
今まで頂いた情報をあわせたら、なんとか作れそうな気が
してきました(^^)。
がんばります。

まえばし さんからのコメント
( Thursday, October 04, 2001 21:21:43 )

お世話になっております。>みなさま。

今朝、妙なことに気がつきました。
再起動したら、Dockが出ないのです。。。

OSX 10.1インストール時に、初期化してインストールするチェック
ボタンを押してインストールすると、問題が起こります。
2回目以降の起動で、メニューバーとDockが消えます。
デスクトップをクリックすると、メニューだけは出てくるんですが
Dockはインストールして再起動すると出なくなってしまいます。
Appleに電話したら、「初期化のボタンはチェックしないで
ください。」だって。(←だったらボタンつけないでください(^^;))

そのような理由で、再インストールを繰り返したり、問い合わせを
しているうちに、今日が終わってしまいました(--;)。

でも目標としては、明日中にはなんとか完成させたい(だめだった
ら連休中に出て作りたい)です。

ところで、いまさら基礎的な質問ですが、教えていただけるでしょ
うか?。
ZONE ファイルの初めの部分にある、
@                       IN     SOA    dns.maebashi.net. 
root.maebashi.net. (

の"dns"とか"root"の部分ってPCのどこかに登録する必要があるんで
しょうか?
今のところよくわからないので、"dns"の部分は
書類の 
プライマリDNS  dns.****.co.jp   211.8.***.34
とか書いてある部分をそのまま入れてみました。
"root"の部分は、メールサーバーとかは特に作っていないので
root.***.co.jp.
とそのまま書いてしまいましたが、これではまずいのでしょうか?。

しあわせのツボ さんからのコメント
( Thursday, October 04, 2001 23:24:24 )

Dockについては私も食らいました。
どうやらログインの際にFinder.appが一度こけて再起動し、
その際にDockの起動がスキップされるようです。
/System/Library/CoreServices/Dock.app を起動してやれば
普通に使えるので、そのシンボリックリンクをDesktopに置いて
対処しています。
もしくは再度10.1を上書きしてやると一時的に直ります。

BINDはよく知らないので、詳しい方お願いします
(ということで撤退(^^;)

J.浅倉 さんからのコメント
( Friday, October 05, 2001 08:14:49 )

はまってます。が、こっちは上書きのアップデートです。
04時代のゴミのためかと思ってましたが、違うんですね。

再起動で無く、単純にログアウトして、再度ログインすると
動きますが、起動項目のいくつかが起動せず残ります。

たまちゃん さんからのコメント
( Friday, October 05, 2001 10:10:59 )

djbdns を Mac OS X (Server) で動かしている方はおられるでしょ
うか。

まえばし さんからのコメント
( Friday, October 05, 2001 11:55:47 )

こんにちは。
まえばしです。

上記のDNSサーバーですが、
ローカルを試しにnslookupで確認してみたのですが、下記のようになって
プライマリがうまく使えていないようです。。

[localhost:/Users/maebashi] root# nslookup 127.0.0.1
*** Can't find server name for address 211.8.***.34: Server failed
Server:  dns2.odn.ne.jp
Address:  143.90.***.57

Name:    localhost
Address:  127.0.0.1

ちなみに、system.log は下記のようになっています。
Oct  5 11:29:44 localhost su: maebashi to root on /dev/ttyp2
Oct  5 11:29:56 localhost named[373]: sysquery: nlookup error on ?
Oct  5 11:31:38 localhost named[373]: sysquery: nlookup error on ?
Oct  5 11:31:58 localhost named[373]: sysquery: nlookup error on ?
Oct  5 11:36:19 localhost su: maebashi to root on /dev/ttyp3
Oct  5 11:37:52 localhost named[373]: sysquery: nlookup error on ?
Oct  5 11:38:13 localhost last message repeated 2 times
Oct  5 11:42:12 localhost named[373]: sysquery: nlookup error on ?

どこらへんを直せば、プライマリDNSが正常に動作するのでしょうか?。
どなたか御存知の方、ご教示いただければと思います。

********************
> もしくは再度10.1を上書きしてやると一時的に直ります。

これ、ホントに一時的ですね(^^;)。
上書きの後、再起動したら、出なくなってしまいました。

> /System/Library/CoreServices/Dock.app を起動してやれば
> 普通に使えるので、そのシンボリックリンクをDesktopに置いて
> 対処しています。

↑情報ありがとうございます。>しあわせのつぼさん。
勉強になりました。
うーん、OSX10.1...いろいろありますね。


まえばしです。 さんからのコメント
( Friday, October 05, 2001 12:03:30 )

追:

やはり、
> まえばし さんからのコメント
>( Thursday, October 04, 2001 21:21:43 )

で書いた、ホスト名(あるいはpostmaster)の設定のところが
まずいのでしょうか?。

micky さんからのコメント
( Friday, October 05, 2001 14:05:41 )

こんにちは、mickyです。
system.logですが、BINDの起動時のログを提示していただかないと
設定にかんして判断できません。提示していただいたものは、単純に
プライマリの設定ができていないということしかわかりません。
sudo kill -HUP `cat /var/run/named.pid`
でBINDを再起動してやってその時にでるログを見てください。
それと、設定しようとしているマシンはプライマリDNSでの設定です
よね?

まえばし さんからのコメント
( Friday, October 05, 2001 14:25:41 )

お世話になっております。>micky さん。

おそらく、起動時のログだと思われる場所を下記いたします。
(違っていたら、れんらくください。)

> それと、設定しようとしているマシンはプライマリDNSでの設定です
> よね?

はい。その通りです。
(そうなっているかは分からないのですが。。(^^;))

Oct  5 14:13:12 localhost named[369]: starting (/etc/named.conf).  named 8.2.3-REL Sun Sep  2 19:46:11 PDT 2001  root@diopter:/private/var/tmp/bind/bind-6.obj~71/bin/named
Oct  5 14:13:12 localhost named[369]: /etc/named.conf:2: syntax error near allow-transfer
Oct  5 14:13:12 localhost named[369]: bind(dfd=20, [127.0.0.1].53): Address already in use
Oct  5 14:13:12 localhost named[369]: deleting interface [127.0.0.1].53
Oct  5 14:13:12 localhost named[369]: bind(dfd=20, [211.8.160.34].53): Address already in use
Oct  5 14:13:12 localhost named[369]: deleting interface [211.8.160.34].53
Oct  5 14:13:12 localhost named[369]: not listening on any interfaces
Oct  5 14:13:12 localhost named[369]: Forwarding source address is [0.0.0.0].49164
Oct  5 14:13:12 localhost named[370]: Ready to answer queries.
Oct  5 14:13:12 localhost named[370]: sysquery: nlookup error on ?
Oct  5 14:14:17 localhost named[368]: No root nameservers for class IN
Oct  5 14:14:17 localhost named[368]: sysquery: nlookup error on ?
Oct  5 14:18:29 localhost named[368]: sysquery: nlookup error on ?

いろいろとありがとうございます。
よろしくお願いします。