BINDだよん。 9.2も動きました。

     

次回はMTAとかほざいてた割にはDevToolの件でへこたれてしまって結局BINDを先にやることにしました。こいつは最初から入っているので楽勝ですな。けど面倒・・・
多分いつか解説するMTAを動かしているサーバーのアドレスを後述する正引きのレコード(MXレコード)に追加してやればメールは飛びます。そりゃぁもうたくさん。あふれんばかりに。
あたりまえの話ですがインターネット上のサーバーとして動かすのならば上位のDNSに登録されてないとだめです。

MacOSXについてるDNSサーバーはBIND(named)ですが、通常あるはずの/etc/named.confがありません。なめてますね。頭にきた私はとりあえずいきなりnamedを起動してみます。
[macosx:/etc] root# named
can't open '/etc/named.conf'
・・・つまり自分で書け。ということですね。書ける分けないですね。
というわけで盗んできました。ムフフ。ごらんあれ。こんなもんはガンガンコピーしていいんですよ。黄色の字のところだけ変更してください。下記の設定は内側からしか参照されることのない寂しいDNSサーバーの設定になってます。

数個ある設定ファイルをZIP硬めの刑にして置いておきます。

BINDの前に
ファイル "/private/etc/hostconfig" の
HOSTNAME=-AUTOMATIC-
の行を
HOSTNAME=ホスト名(例:server)
に変更して再起動をかけてください。Terminalにホスト名が出ます。

/etc/named.conf

// ---------------------------------------------------------------------------
// Access Control Lists
// ---------------------------------------------------------------------------
acl local-area {
192.168.1.0/24;
127.0.0.1;
};
// acl hogehogeでも何でも適当に名前を付けていいです。
// 括弧の中のIPはそのDNSサーバーを参照することのできるホストを制限するために使います。


// ---------------------------------------------------------------------------
// Options
// ---------------------------------------------------------------------------
options {
directory "/etc/DNS";
allow-transfer {
local-area;
};
};
// /etc/DNSはnamedが作業するディレクトリを指定しています。mkdir /etc/DNSで作成しました。
// allow-transfer の括弧の中はさっきのlocal-areaと同じ名前にします。IP指定もできますけど。


// ---------------------------------------------------------------------------
// Root Servers
// ---------------------------------------------------------------------------
zone "." {
type hint;
file "/etc/DNS/named.root";
};
// 自分の知らないドメインのホストを聞かれたときにこのルートサーバーに聞きにいくことで名前解決を行います。下記のアドレスに最新版のルート−サーバーリストがあるので拾ってきましょう。
// ftp://ftp.nic.ad.jp/mirror/internic/rs/domain/named.root
// この中身を一つのファイルにしてfileで指定したディレクトリにnamed.rootという名前で保存します。


// ---------------------------------------------------------------------------
// macosx-bind.com zone
// ---------------------------------------------------------------------------
zone "macosx-bind.com" {
type master;
file "/etc/DNS/macosx-bind.zone";
};
// ドメイン名と正引き用のファイルを指定します。typeはプライマリDNSの場合がほとんどでしょうからマスターでOK。
// /etc/DNS/macosx-bind.zoneのサンプルを見る


// ---------------------------------------------------------------------------
// 1.168.192.in-addr.arpa zone
// ---------------------------------------------------------------------------
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/DNS/192.168.1.rev";
};
// 逆引き用。IPが逆さまになってることに注意
// /etc/DNS/192.168.1.rev のサンプルを見る


// ---------------------------------------------------------------------------
// localhost
// ---------------------------------------------------------------------------
zone "localhost" {
type master;
file "/etc/DNS/localhost.zone";
};
// /etc/DNS/localhost.zone のサンプルを見る

zone "0.0.127.in-addr.arpa" {
type master;
file "/etc/DNS/127.rev";
};
// /etc/DNS/127.rev のサンプルを見る
// ローカルホスト逆引き用

起動用スクリプト

最後に起動時のスクリプトを作成します。方法は二つあります。moroさん教えていただきました。どーもです。
てっとりばやくやるには
/System/Library/StartupItems/DirectoryServices/DirectoryServices の一番下に「lookupd」ってのがぽつんとありますのでその下にでも
named
の行を追加します。

[macosx:~] root# tail /System/Library/StartupItems/DirectoryServices/DirectoryServices
ConsoleMessage "Starting name resolver"

lookupd
named


上記の方法で構いませんが、「/System以下はいじりたいくない。」というあなたは
コレ (/Library/StartupItems/BIND/BIND)

コレ (/Library/StartupItems/BIND/StartupParameters.plist)
を/Library/StartupItems/BIND/ に置きましょう。

で、最後にスクリプトに実行属性を与えます。

chmod 755 /Library/StartupItems/BIND/BIND
chmod 644/Library/StartupItems/BIND/StartupParameters.plist

/etc/hostconfigに下記の行を追加
[macosx:~] root# vi /etc/hostconfig
NAMED=-YES- <<これを追加

これで再起動をかけてもnamedが勝手に動き出します。2番目の方法でやるとブート時にメッセージが出てきたりなにやらかっこいいことになってます。書き換えればほかのサーバー用にも使えるので非常に有用なスクリプトだと思います。UNIXっぽくてかっこいいのでこちらを推奨します(笑)。

BINDの動作確認

で、BINDを動かしてみた。
[macosx:/etc] root# ps x | grep named
346 ?? Ss 0:00.00 named

ちなみにDNSはローカルのOSXだけ。(OSXのIPは192.168.1.2)
[macosx:/etc] root# cat /etc/resolv.conf
nameserver 192.168.1.2

設定ファイルはこんな感じ。
[macosx:/etc] root# cat /etc/DNS/macosx-bind.zone
;もちろん専用線があるわけでもないので、ローカルでしか使えないドメイン。
;macosx-bind.comのネームサーバーはこれ
IN NS mac.macosx-bind.com.
;macosx-bind.comのメールサーバーはこれ
IN MX 10 mac.macosx-bind.com.
;macosx-bind.comのホスト一覧はこれ
win IN A 192.168.1.1
mac IN A 192.168.1.2
linux IN A 192.168.1.254

試しにpingなんか打ってみる。
[macosx:/etc] root# ping win.macosx-bind.com
PING win.macosx-bind.com (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=128 time=1.388 ms

[macosx:/etc] root# ping mac.macosx-bind.com
PING mac.macosx-bind.com (192.168.1.2): 56 data bytes
64 bytes from 192.168.1.2: icmp_seq=0 ttl=255 time=0.217 ms

[macosx:/etc] root# ping linux.macosx-bind.com
PING linux.macosx-bind.com (192.168.1.254): 56 data bytes
64 bytes from 192.168.1.254: icmp_seq=0 ttl=255 time=0.339 ms
完璧。
一度引いたドメイン名はキャッシュされるので再起動するまでひくのは速くなります。
この状態でYahooとかにつなぐいでみたら一度目は激しく遅かったけど、二度目からはキャッシュされているのでひじょーに速くなりんした。

MXレコードを引いてみる。
[macosx:~] root# nslookup -q=mx macosx-bind.com
Server: mac.macosx-bind.com
Address: 192.168.1.2

macosx-bind.com preference = 10, mail exchanger = mac.macosx-bind.com
macosx-bind.com nameserver = mac.macosx-bind.com
mac.macosx-bind.com internet address = 192.168.1.2

Sendmailの話はこちら。

2002/2/1更新しました。BIND9.2も動きました。

     
BIND9.2もお約束パターンでいけますね。なんの問題もなく。
解凍してディレクトリ移動して./configure;make;make install;でOKです。installする時に前のやつどうなんだろう?と思いつつもやってみたら別ディレクトリに行ってくれたようなのでパスを変えればしっかり動きます。 (多分)

以前のBINDはここにありますが、
[macosx:/Users/Shared/bind-9.2.0] root# /usr/sbin/named -v
named 8.2.3
-REL Sun Sep 2 19:46:11 PDT 2001

ディレクトリが変わったようです。
[macosx:/Users/Shared/bind-9.2.0] root# /usr/local/sbin/named -v
BIND 9.2.0

8.*と9.*の構築手順の違いについてはここが詳しいです。
http://www.aso.ecei.tohoku.ac.jp/~dais/misc/migration.html

9.*のconfはここにありますね。一応うちのTipsにも追加しておきます。
http://www1.sphere.ne.jp/unix/bind.html

分からない点があれば掲示板に書き込んでみてください。

24383 Hits

戻る