BIND

MacOSXについてるDNSサーバーはBIND(named)です。

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
 

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

戻る
-----------------------------------------------------------------------

options {
directory "/var/named"; namedが参照するファイルの置き場所を指定します。
allow-query { 192.168.1.0/24; 192.168.0.0/24; localhost; }; 内部ネットワークとローカルホストを除き私のドメイン以外への問い合わせを禁止します。
allow-recursion { 192.168.1.0/24; 192.168.0.0/24; localhost; }; 内部ネットワークとローカルホストを除き再帰的な問い合わせを禁止します、キャッシュ汚染攻撃の危険性を減らします。
};

//
zone "." {
   type hint;
   file "named.root"; ルートサーバーを記述したファイル、named.caをリネームします。
};

zone "0.0.127.in-addr.arpa" {
   type master; プライマリネームサーバーとして稼働します。
   file "zone/0.0.127.in-addr.arpa"; ローカルホストの読み込みゾーンファイルの場所とファイル名を指定をします。
};

zone "home.yamakiya.net" { ドメインhome.yamakiya.netのゾーン
   type master;
   notify no; テスト段階で変更を通知しない設定をします。
   file "zone/home.yamakiya.net";
};

zone "1.168.192.in-addr.arpa" { home.yamakiya.netの逆引きゾーン
   type master;
   notify no;
   file "zone/1.168.192.in-addr.arpa";
};

zone "yamakiya.net" { ドメインyamakiya.netのゾーン
   type master;
   notify no;
   file "zone/yamakiya.net";
   allow-query { any; };どこからでもyamakiya.netへの問い合わせを許可します。
   allow-transfer {
      205.166.226.38; };yamakiya.netの内容はセカンダリネームサーバー205.166.266.38のみに送ります。
};

zone "186.125.207.61.in-addr.arpa" { yamakiya.netの逆引きゾーン
   type master;
   notify no;
   file "zone/186.125.207.61.in-addr.arpa";
   allow-query { any; };
   allow-transfer {
      205.166.226.38; };
};
テストが問題なく終了したら、各ゾーンのnotify no; の先頭に/を入れて「通知しない」を無効にしてください。

/  notify no: