ライン

ポイント:プライマリサーバを動作させる

ライン

 はじめに

ネームサーバの設定

 FreeBSD 9.1-RELEASE版に入っている物をそのまま使います。
IPv4のみを使い、セカンダリを最低1台と連携するように設定します。

 DNSの設定

設定

 まず、/etc/rc.conf の設定。

named_enable="YES"
named_flags="-4 -c /etc/namedb/named.conf"

 ディレクトリの確認。

# cd /etc/namedb
# ll
total 36
total 40
drwxr-xr-x  2 bind  wheel    512 Dec  4 18:32 dynamic/
drwxr-xr-x  2 root  wheel    512 Dec  4 18:34 master/
-rw-r--r--  1 root  wheel  14328 Dec  4 18:34 named.conf
-rw-r--r--  1 root  wheel   3135 Dec  4 18:34 named.root
-rw-------  1 bind  wheel     97 Dec 15 23:39 rndc.key
drwxr-xr-x  2 bind  wheel    512 Dec  4 18:32 slave/
drwxr-xr-x  2 bind  wheel    512 Dec 19 21:07 working/
# rndc-confgen -a -b 512 -u bind
wrote key file "/etc/namedb/rndc.key"

 ゾーンファイルはmasterのディレクトリに作成するので、そこも確認。

# cd master/
# ll
total 12
-rw-r--r--  1 root  wheel  239 Dec  4 18:34 empty.db
-rw-r--r--  1 root  wheel  261 Dec  4 18:34 localhost-forward.db
-rw-r--r--  1 root  wheel  329 Dec  4 18:34 localhost-reverse.db

 では、/etc/namedb/named.conf を編集。
最初に

acl my-network {
                192.168.1.0/24;
};

 のように、自分のネットワークを追加。

 グローバル側のネットワークも忘れずに記述します。

 optionsの設定にはいくつかを追加します。
recursionの有効化とlisten-onのアドレス範囲を列挙します。

recursion yes ;

listen-on 
                          { 127.0.0.1;
                          192.168.1.0/24;  };

allow-transferには、セカンダリに加えているアドレスを追加。
allow-query には、ユーザとしてDNSを利用させるアドレス帯を追加。
blackholeは、問い合わせに正常に回答させたくない先?を記述しました。

version "";

allow-transfer {];
allow-query {};
blackhole {};

logging には、出力させたいログの内容を加えます。

logging {
        channel bind_log        {
        file    "/var/log/named.log" versions   3 size  2m;
        severity        dynamic;
        print-time      yes;
        print-category  yes;
        print-severity  yes;
        };
        category        xfer-out        {
                                bind_log;
                        };
        category        update  {
                                bind_log;
                        };
};

 その他は、ドメインごとのゾーンファイルの設定を記述します。

zone    "example.jp" {
        type master;
        file "/etc/namedb/master/example.jp.zone";
        notify yes;
        allow-query { any ; };
        allow-transfer {
                        (セカンダリサーバのIPアドレス;
                        サーダリサーバのIPアドレス;};
};

必要個数分を書いていきます。masterのディレクトリの下に example.jp.zone というファイルを書くことになります。

ZONEファイルを作成していきます。

$TTL 86400
@       IN      SOA     ns.example.jp. postmaster.example.jp. (
                                2012123100 ; Serial
                                3600    ; Refresh
                                900     ; Retry
                                604800  ; Expire
                                1800 )  ; Minimum
                IN      NS      (DNSのマスターのFQDN.)
                IN      NS      (DNSのセカンダリのFQDN.)
                IN      NS      (DNSのサーダリのFQDN.)
                IN      A       (メールサーバのIPアドレス)
                IN      MX      10      (メールサーバのFQDN.)
;
ns             IN      A       (メールサーバのIPアドレス)
                IN      MX      10      (メールサーバのFQDN.)
;
www          IN      CNAME   ns
ftp             IN      CNAME   ns
mail           IN      CNAME   ns

 イメージとしてはこんな感じ作成しておきます。

# chown bind:bind *.zone
# chmod 640 *.zone

上記のようにパーミッション等をそろえて管理します。

 セカンダリを対向側のサーバには記述するものになりますが、そちらのnamed.conf には、

zone    "example.com"  {
        type    slave;
        file    "slave/example.com.bak";
        masters {
                (DNSのマスターのIPアドレス);
                (DNSのセカンダリのIPアドレス);
                };
        allow-query     {       any;    };
};

のように記述するのみです。
slave のディレクトリには、自動的に転送されたものが入って来るので、特に準備は不要です。

namedが落ちると名前が引けなくなるので、他への影響があります。
プロセス監視をどのようにするかは自由ですが、私は単純にcronにより一定間隔でプロセスを見るようにして再起動できるようにしています。

#!/bin/sh
#*****************************
#*namedchk.sh                             *
#*****************************
ps -ax|grep sbin/named|grep -v grep
if [ $? -eq 0 ]; then
        echo -n ''
else
        /etc/rc.d/named start
fi

上記例のようにして、/etc/crontab で、

*/15    *       *       *       *       root    /bin/sh /usr/local/etc/namedchk.sh > /dev/null 2>&1 /dev/null

とすることで、15分毎には落ちている状態を解消できると思います。
最近では、プロセス落とされるようなごときには遭遇していませんので、これにより起動されたことはありませんが。

後は、/etc/resolv.conf に設定を入れれば完了。

# Generated by resolvconf
nameserver 192.168.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4

動作できなかったら、GoogleのDNSを引くように書いていますが、この辺りは適当にみてください。

 named.rootのメンテナンス

D.ROOT-SERVERS.NETが更新

 …ということで更新。
以前どこかのページからいただいたスクリプトが残っていたので、これを今回も利用することにしました。

#!/bin/sh
#*****************************
#*chg_cache.sh                             *
#*generated by pmobiuse               *
#*****************************
/usr/bin/dig @a.root-servers.net . ns >/etc/namedb/named.root.new 2>&1

case `cat /etc/namedb/named.root.new` in
*NOERROR*)
         # It worked
         ;;
*)
         echo "The root.hints file update has FAILED."
         echo "This is the dig output reported:"
         echo
         cat /etc/namedb/named.root.new
        exit 0
        ;;
esac

echo "The root.hints file has been updated to contain the following infomation:"
cat /etc/namedb/named.root.new

chown root:wheel /etc/namedb/named.root.new
chmod 644 /etc/namedb/named.root.new
rm -f /etc/namedb/named.root.old
mv -f /etc/namedb/named.root /etc/namedb/named.root.old
mv -f /etc/namedb/named.root.new /etc/namedb/named.root
/etc/rc.d/named restart
echo "The nameserver has been restarted to ensure that the update is complete."
echo "The previous root.hints file is now called /etc/namedb/named.root.old"
exit 0

ほんの気持ち程度修正していますが、これで問題はないはず。


【改訂履歴】作成:2012/12/31 更新:-

【リンク】


デル株式会社

Copyright © 1996,1997-2006,2007- by F.Kimura,