BINDの導入(5)

自動起動の準備
元々FreeBSDの初期インストール時にbindがインストールされていたためBIND用ユーザーが存在するか確認

# grep bind /etc/passwd
bind:*:53:53:Bind Sandbox:/:/usr/sbin/nologin

# grep bind /etc/group
bind:*:53:

自動起動用にrc.confに下記を追加

# ee /etc/rc.conf
named_enable=”YES”
named_program=”/usr/local/sbin/named”
named_flags=”-u bind”
named_pidfile=”/var/run/named/named.pid”

pidファイルの場所を変更(記述なしだと/var/run/直下)
# ee /etc/named.conf
pid-file “/var/run/named/named.pid”;

既存bindの残骸を削除
# rm -rf dev
# rm -rf etc
# rm -rf var
# rm -rf /etc/namedb

BINDはrootではなく専用ユーザー(bind)で使用するためパーミッションの問題を解決する
# mkdir /var/run/named
# chown bind:bind /var/run/named

これで行けるかと思ったら、全く起動の気配なし、さらに/etc/rc.d/namedを発見。
これは既存BINDの物だった為削除して作り直し

#!/bin/sh
case “$1” in
‘start’)
/usr/local/sbin/named -u bind
;;
‘stop’)
kill `cat /var/run/named/named.pid`
rm -f /var/run/named/named.pid
;;
*)
echo “Usage: $0 { start | stop }”
exit 1
;;
esac
exit 0

ここで何度rebootしてもbindが起動しない。/var/log/messages見ても起動かけた形跡すらなし。

このBINDはソースコンパイル物なので/usr/local/etc/rc.d/named.shとしての導入が正解でした。
/etc/rc.d/namedだと何度試みても起動しないのでハマった。この辺の仕組みが良くわからないなぁ。

ここで追試としてrc.confでNOにしてrebootしたらどうなるのだろうか?

# ps -aux | grep named
bind 504 0.0 2.6 4076 3224 ?? Is 4:05AM 0:00.03 /usr/local/sbin/named -u
root 556 0.0 0.2 348 228 p0 R+ 4:06AM 0:00.00 grep named

起動しましたー!!!えぇ!?何それ!?rc.confの意味無さすぎ…。

BINDの導入(4)

早速起動してみます。

# named

次にプロセスの確認を行う。

# ps -aux | grep named

もし、プロセスが見つからないときは起動に失敗しているのでシステムログで確認。

# less /var/log/messages

この後、設定が正しいかdig,host,nslookupのどれかを使いDNSサーバーを指定して確認をします。
私はよくnslookupを使いますが、ここは好みで。
この後自動起動の設定を行うので一旦停止します。

# ps -aux | grep named
root 32927 0.0 2.2 4156 2712 ?? Is 10:27AM 0:00.55 named

# kill -9 32927

# find / -name named.pid
/var/run/named.pid

# rm /var/run/named.pid

BINDの導入(3)

BIND用各種設定ファイルを書きます。

BINDを起動したときに読み込むファイル。
ここで各ゾーンファイルのパスを設定します。

# ee /etc/named.conf

options {
directory “/var/named”;
};
zone “.” {
type hint;
file “named.root”;
};

zone “localhost” {
type master;
file “local.zone”;
};

zone “0.0.127.IN-ADDR.ARPA” {
type master;
file “0.0.127.rev”;
};

zone “hogehoge.net” {
type master;
file “hogehoge.net.zone”;
};

zone “100.168.192.IN-ADDR.ARPA” {
type master;
file “100.168.192.in-addr.arpa.rev”;
};
named.rootファイルはこちらからダウンロード。
これはルートサーバーの情報になります。
ftp://rs.internic.net/domain/named.root

# mv named.root /var/named/named.root

ローカルホストの正引き設定
# ee /var/named/local.zone

$ORIGIN localhost.
$TTL 1d
@ IN SOA localhost. root.localhost. (
2006032800 ;
3h ;
1h ;
1w ;
1d ) ;
IN NS localhost.
IN A 127.0.0.1
ローカルホストの逆引き設定
# ee /var/named/0.0.127.rev

$ORIGIN 0.0.127.in-addr.arpa.
$TTL 1d
@ IN SOA localhost. root.localhost. (
2006032800 ;
3h ;
1h ;
1w ;
1d ) ;
IN NS localhost.
1 IN PTR localhost.
hogehoge.netの正引き設定
# ee /var/named/hogehoge.net.zone

$ORIGIN hogehoge.net.
$TTL 1d
@ IN SOA ns.hogehoge.net. root.hogehoge.net. (
2006032800 ;
3h ;
1h ;
1w ;
1d ) ;
IN NS ns.hogehoge.net.
IN MX 10 mail.hogehoge.net.
IN A 192.168.100.10
ns IN A 192.168.100.10
www IN A 192.168.100.10
mail IN A 192.168.100.10
pop IN A 192.168.100.10
game IN A 192.168.100.10
server IN A 192.168.100.10
db IN A 192.168.100.10

上記でホスト名を割り当ててないAレコードがありますが、これはhttp://hogehoge.net/等で接続を実現するための設定です。

hogehoge.netの逆引き設定
# ee /var/named/100.168.192.in-addr.arpa.rev

$ORIGIN 100.168.192.in-addr.arpa.
$TTL 1d
@ IN SOA ns.hogehoge.net. root.hogehoge.net. (
2006032800 ;
3h ;
1h ;
1w ;
1d ) ;
IN NS ns.hogehoge.net.
10 IN PTR www.hogehoge.net.

Class-D以下のネットワークの場合は設定が少し複雑になります。私の場合は逆引きが認められていないのでこの設定は今回使用しません。
各設定ファイルの詳細については後ほど