FreeBSD-5.2.1

FreeBSD-5.2.1に、DNSサーバであるBIND-9を導入します

FreeBSD-4.10については、DNS(BIND-9)の導入 - FreeBSD4編 に記載しています

構築する環境

ネットワーク192.168.0.0/24
ドメイン名example.com
ホスト名host1.example.com(192.168.0.224)
Aliaswww,ftp,mail

Recommend Book

bind構築時のお供に。頼りになります

build環境の整備

make時に、

PORT_REPLACES_BASE_BIND9=yes

のオプションを指定します。

以後、忘れない様に、/etc/make.confに

PORT_REPLACES_BASE_BIND9=yes

を追記しておきます

また、/usr/local/etc/pkgtools.confに、

MAKE_ARGS = {
    'net/bind9' => 'PORT_REPLACES_BASE_BIND9=yes',
}

と指定しておきます。

導入

Bind9を導入します

make install

rootで以下を実行します

# cd /usr/ports/dns/bind9
# make PORT_REPLACES_BASE_BIND9=yes install clean

なお、/etc/make.confに PORT_REPLACES_BASE_BIND9=yes が定義されていれば

# make install clean

でよいです。

キーの生成

/etc/namedb/rndc.confの作成

以下の様にして、/etc/namedb/rndc.confファイルを作成します。

# mv /etc/namedb/rndc.conf.sample /etc/namedb/rndc.conf
# chmod 400 /etc/namedb/rndc.conf
# chown root:wheel /etc/namedb/rndc.conf

/etc/namedb/rndc.keyの作成

以下の様にして、/etc/namedb/rndc.keyファイルを作成します。

# /usr/sbin/rndc-confgen -a -b 512 -r /dev/urandom -u bind
# chmod 400 /etc/namedb/rndc.key
# chown bind:bind /etc/namedb/rndc.key

/etc/namedb/rndc.confの修正

先ほど作成した/etc/namedb/rndc.confを以下の部分

key "key" {
        algorithm       hmac-md5; 
        secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
};

をコメントにし、その下にinclude文を追加します。

###key "key" {
###        algorithm       hmac-md5;
###        secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
###};
include "/etc/namedb/rndc.key";

また、

options {
        default-server  localhost;
        default-key     "key";
};

の default-key 行を

default-key     "rndc-key";

と変更し、更に

server localhost {
        key     "key";
};

の key 行を

key     "rndc-key";

と変更します。

結果として、以下の様になります。

options {
        default-server  localhost;
###        default-key     "key";
        default-key     "rndc-key";
};

server localhost {
###        key     "key";
        key     "rndc-key";
};

###key "key" {
###        algorithm       hmac-md5;
###        secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
###};
include "/etc/namedb/rndc.key";

追記

# /usr/sbin/rndc-confgen > rndc.conf

で、rndc.confの雛型が作成できます。

なお、できたファイルの後半部分に、named.confに対するrndcの設定のサンプルがついてきます。

ちなみに、rndc-confgenで生成される内容は以下です。

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "kOxFvFWweF9Ib6fpwSe7VA==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "kOxFvFWweF9Ib6fpwSe7VA==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

localhost-v6.rev,localhost.revファイルの作成

/etc/namedb下にある、make-localhost スクリプトを実行して作成します。

# cd /etc/namedb
# sh make-localhost

これで、/etc/namedb下に、

  • /etc/namedb/localhost-v6.rev
  • /etc/namedb/localhost.rev

が作成されます

"example.com"ゾーンの正引き・逆引きファイルの作成

正引きファイル

生成するファイルは、/etc/namedb/example.com.zone

ファイルの中身は以下です。

$TTL    86400
@               IN      SOA      tesst1.example.com. root.test1.example.com. (
                        2004092701              ; serial
                        3600                    ; refresh 1Hour
                        900                     ; retry 15min
                        604800                  ; expiry 1w
                        86400                   ; min 24Hour
)

                IN              NS              test1.example.com.
                IN              MX      10      test1.example.com.

localhost       IN              A               127.0.0.1
test1            IN             A               192.168.0.224
mail            IN              CNAME           test1
ftp             IN              CNAME           test1
www             IN              CNAME           test1

逆引きファイル

生成するファイルは、/etc/namedb/example.com.rev

ファイルの中身は以下です。

$ORIGIN 0.168.192.IN-ADDR.ARPA.
$TTL    86400
@               IN      SOA      test1.example.com. root.test1.example.com. (
                        2004092501              ; serial
                        3600                    ; refresh 1Hour
                        900                     ; retry 15min
                        604800                  ; expiry 1w
                        3600                    ; minimum 24Hour
)

                IN              NS              test1.example.com.

224             IN              PTR             test1.example.com.

/etc/namedb/named.confファイルの変更

rndc.keyのインクルード

named.confの先頭に、rndc.keyをインクルードする記述を行う。

include "/etc/namedb/rndc.key";

controlsの追加

controls {
        inet 127.0.0.1 port 953 allow { localhost; } keys { rndc-key; };
};

allow-transferの追加

optionsに以下を追加する。

allow-transfer {
        192.168.0.0/24;
};

"example.com"ゾーンを追加する。(逆引きも)

named.confの最下行に以下を追加する。

zone "example.com" IN {
        type master;
        file "example.com.zone";
};
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "example.com.rev";
};

最終的に、named.confは以下の様に内容となります。

include "/etc/namedb/rndc.key";

controls {
        inet 127.0.0.1 allow { localhost; } keys { rndc-key; };
        inet ::1 allow { localhost; } keys { "rndc-key"; };
};

options {
    directory "/etc/namedb";
    pid-file "/var/run/named/pid";

       allow-transfer {
               192.168.0.0/24;
       };

// In addition to the "forwarders" clause, you can force your name
// server to never initiate queries of its own, but always ask its
// forwarders only, by enabling the following line:
//
//      forward only;

// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below.  This will make you
// benefit from its cache, thus reduce overall DNS traffic in the Internet.
/*
    forwarders {
        127.0.0.1;
    };
*/
    /*
     * If there is a firewall between you and nameservers you want
     * to talk to, you might need to uncomment the query-source
     * directive below.  Previous versions of BIND always asked
     * questions using port 53, but BIND 8.1 uses an unprivileged
     * port by default.
     */
    // query-source address * port 53;

    /*
     * If running in a sandbox, you may have to specify a different
     * location for the dumpfile.
     */
    // dump-file "s/named_dump.db";
};

// Note: the following will be supported in a future release.
/*
host { any; } {
    topology {
        127.0.0.0/8;
    };
};
*/

// Setting up secondaries is way easier and a rough example for this
// is provided below.
//
// If you enable a local name server, don't forget to enter 127.0.0.1
// first in your /etc/resolv.conf so this server will be queried.
// Also, make sure to enable it in /etc/rc.conf.

zone "." {
    type hint;
    file "named.root";
};

zone "0.0.127.IN-ADDR.ARPA" {
    type master;
    file "localhost.rev";
};

// RFC 3152
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" {
    type master;
    file "localhost-v6.rev";
};

// RFC 1886 -- deprecated
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
    type master;
    file "localhost-v6.rev";
};

// NB: Do not use the IP addresses below, they are faked, and only
// serve demonstration/documentation purposes!
//
// Example secondary config entries.  It can be convenient to become
// a secondary at least for the zone your own domain is in.  Ask
// your network administrator for the IP address of the responsible
// primary.
//
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
// (This is named after the first bytes of the IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended.)
//
// Before starting to set up a primary zone, make sure you fully
// understand how DNS and BIND works.  There are sometimes
// non-obvious pitfalls.  Setting up a secondary is simpler.
//
// NB: Don't blindly enable the examples below. :-)  Use actual names
// and addresses instead.
//
// NOTE!!! FreeBSD can run bind in a sandbox (see named_flags in rc.conf).
// The directory containing the secondary zones must be write accessible 
// to bind.  The following sequence is suggested:
//
//  mkdir /etc/namedb/s
//  chown bind:bind /etc/namedb/s
//  chmod 750 /etc/namedb/s

/*
zone "domain.com" {
    type slave;
    file "s/domain.com.bak";
    masters {
        192.168.1.1;
    };
};

zone "0.168.192.in-addr.arpa" {
    type slave;
    file "s/0.168.192.in-addr.arpa.bak";
    masters {
        192.168.1.1;
    };
};
*/
zone "example.com" IN {
        type master;
        file "example.com.zone";
};
zone "0.168.192.in-addr.arpa" IN {
        type master;
        file "example.com.rev";
};

bind9起動の為の設定

マシン起動時に自動起動する様に、/etc/rc.confに以下を追加する

named_enable="YES"
named_program="/usr/sbin/named"
named_flags="-c /etc/namedb/named.conf -u bind"
named_pidfile="/var/run/named/pid"
named_chrootdir=""
named_chroot_autoupdate="YES"
named_symlink_enable="YES"

/etc/resolv.confの設定

nameserverとして、本マシンを使用する様に、/etc/resolv.confに以下を設定します。

nameserver 127.0.0.1

bind9の起動/停止/リスタート

# /etc/rc.d/named start
# /etc/rc.d/named stop
# /etc/rc.d/named restart
  • rndcによるリロード
    # rndc reload
    

関連ページ