不良少年 » FreeBSD »

内部向けDNSの設定

Atom RSS

内部向けDNSの設定

 「ネットワークの設定」では /etc/hosts ファイルを編集して、ホスト名をIPアドレスに紐付けました。
 これだけでもLAN内部からホスト名指定でサーバへアクセスできるんですが、クライアントPCを増やすごとに同じ設定を書くのも面倒です。
 というわけで、今回は bind9 で内部向けDNSを構築してみます。

暗号鍵ファイルの生成

 SSH に引き続き、bind9 でも暗号鍵が必要になってきます。
 rndc-confgen コマンドを使うと自動で暗号鍵付きの設定ファイルを生成できるので楽ですが、ここではあえて自力で設定することにします。
 最初に、dnssec-keygen コマンドで暗号鍵を生成します。

# cd /etc/namedb
# dnssec-keygen -a hmac-md5 -b 512 -n user rndc
Krndc.+157+63181
# ls
Krndc.+157+63181.key      named.conf                 working/
Krndc.+157+63181.private  named.root
dynamic/                  rndc.conf
master/                   slave/

 「Krndc.+157+*****.private」と「Krndc.+157+*****.key」 (***** は5桁の数値) というファイルが生成されたはずです。
 ファイル名から想像がつくと思いますが、「Krndc.+157+*****.private」は秘密鍵、「Krndc.+157+*****.key」は公開鍵が保存されています。
 今回はこの2つのファイルをもとに、設定ファイルを作成します。

rndc.key の編集

 公開鍵の設定ファイルは /etc/namedb/rndc.key です。
 先ほど作った「Krndc.+157+*****.key」の中身は、以下のようになっているはずです。

Krndc.+157+*****.key

rndc. IN KEY 0 3 157 rRsw1dx/fJzZnY6tJRAk5VR5VTeQxuEu2/hKRqD6uLr0tnE5xc7PjWDQ vou00VTfAfR74/udYnohlv/FVK738w==

 「rndc. IN KEY 0 3 157」の部分は鍵の種別設定なので、何度作り直しても同じ値です。
 ここで必要になるのはその後に続く「rRsw1dx/fJzZnY6tJRAk5VR5VTeQxuEu2/hKRqD6uLr0tnE5xc7PjWDQ vou00VTfAfR74/udYnohlv/FVK738w==」の部分です。 (値はランダム)
 この値をコピーしてください。
 コピーしたら rndc.key ファイルを編集します。

/etc/namedb/rndc.key

key "rndc-key"
{
    algorithm   hmac-md5;
    secret "ここに Krndc.+157+*****.key の値を貼り付けてください。";
};

rndc.conf の編集

 同じように秘密鍵設定ファイル /etc/namedb/rndc.conf も編集します。
 「Krndc.+157+*****.private」の中身は以下のようになっているはずです。

Krndc.+157+*****.private

Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: rRsw1dx/fJzZnY6tJRAk5VR5VTeQxuEu2/hKRqD6uLr0tnE5xc7PjWDQvou00VTfAfR74/udYnohlv/FVK738w==
Bits: AAA=

 ここでも重要なのは「Key: 」以降の部分です。この値をコピーしてください。
 コピーしたら rndc.conf を編集します。

/etc/namedb/rndc.conf

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

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

key "rndc-key"
{
    algorithm       hmac-md5;
    secret "ここに Krndc.+157+*****.private の値を貼り付けてください。";
};

オーナーの変更

 rndc.key、rndc.conf ファイルを編集したら、「Krndc.+157+*****.private」と「Krndc.+157+*****.key」は不要です。削除してしまいましょう。

# rm -f Krndc.+157+*.*

 bind9 は bind ユーザーで実行させるのが基本です。(他のユーザーで実行させてもいいですが)
 暗号鍵ファイルは実行ユーザー以外が読める状態だとエラーになるので、所有権とパーミッションの設定を行います。

# chown bind:wheel rndc.*
# chmod 400 rndc.*

ゾーンファイルの編集

 DNS正引き、逆引き用のゾーンファイルを作成します。
 私は正引きゾーンファイル名はいつも「ドメイン名.db」、逆引き用は「IPアドレス.db」というふうにしてますが、取り決めがあるわけではないので好きなように付けてください。

/etc/namedb/master/kanow.jp.db

; kanow.jp.db: kanow.jp 正引きファイル
;
$ORIGIN kanow.jp.
$TTL    86400
@       IN  SOA works.kanow.jp. root.works.kanow.jp. (
            2010092900  ; serial number
            3600        ; refresh 1Hour
            900         ; retry 15min
            604800      ; expiry 1week
            86400       ; min 24Hour
)
            IN  NS      works.kanow.jp.
            IN  MX  10  mail.kanow.jp.

localhost   IN  A       127.0.0.1

@           IN  A       192.168.0.11 ; kanow.jp
works       IN  A       192.168.0.10 ; このサーバ
www         IN  CNAME   @            ; www.kanow.jp -> kanow.jp
ns          IN  CNAME   works        ; ns.kanow.jp -> works.kanow.jp
mail        IN  A       192.168.0.12 ; MX レコードは A レコードでないとダメなので、IPを割り振る
:
:
(以下、必要なだけ記述)

/etc/namedb/master/192.168.0.db

; 1921.168.0.db: 192.168.0.1 ~ 192.168.0.255 逆引きファイル
;
$ORIGIN 0.168.192.IN-ADDR.ARPA.
$TTL    86400
@       IN  SOA works.kanow.jp. root.works.kanow.jp. (
            2010092900  ; serial number
            3600        ; refresh 1Hour
            900         ; retry 15min
            604800      ; expiry 1week
            86400       ; min 24Hour
)
        IN  NS      works.kanow.jp.
        IN  MX  10  mail.kanow.jp.

10      IN  PTR     works.kanow.jp.
11      IN  PTR     kanow.jp.
12      IN  PTR     mail.kanow.jp.
:
:
(以下、必要なだけ記述)

bind9 設定ファイルの編集

 次に bind9 本体の設定を行います。

/etc/namedb/named.conf

/*
 * named.conf: bind9 設定ファイル
 */

/*
 * キーファイルの読み込み
 */
include "/etc/namedb/rndc.key";

/*
 * キーの設定
 */
controls
{
    inet 127.0.0.1 allow { 127.0.0.1; } keys { "rndc-key"; };
    inet ::1       allow { ::1; }       keys { "rndc-key"; };
};

/*
 * 動作設定
 */
options
{
    directory       "/etc/namedb";
    pid-file        "/var/run/named/pid";
    dump-file       "/var/dump/named_dump.db";
    statistics-file "/var/stats/named.stats";

    allow-query
    {
        127.0.0.1;
        192.168.0.0/24;
    };

    allow-recursion
    {
        127.0.0.1;
        192.168.0.0/24;
    };

    allow-transfer
    {
        127.0.0.1;
        192.168.0.0/24;
    };

    forwarders
    {
        プロバイダのプライマリDNSのIPアドレス;
        プロバイダのセカンダリDNSのIPアドレス;
    };
};

/*
 * ゾーンファイルの設定
 */

// ルート
zone "."
{
    type hint;
    file "named.root";
};

// 正引き: ローカルホスト
zone "localhost"
{
    type master;
    file "master/localhost-forward.db";
};

// 逆引き: ローカルホスト
zone "127.in-addr.arpa"
{
    type master;
    file "master/localhost-reverse.db";
};

// 正引き: *.kanow.jp
zone "kanow.jp"
{
    type master;
    file "master/kanow.jp.db";
};

// 逆引き: 192.168.0.1 ~ 192.168.0.255
zone "0.168.192.in-addr.arpa"
{
    type master;
    file "master/192.168.0.db";
};

起動スクリプトの編集

 起動時に自動で bind9 を起動できるよう、/etc/rc.conf に以下の行を追加します。

/etc/rc.conf

# bind9: ドメインネームサーバ
named_program="/usr/sbin/named"
named_flags="-u bind -c /etc/namedb/named.conf"
named_enable="YES"

設定ファイルの確認

 最後に設定ファイルにミスがないか、構文チェックを行います。

# named-checkconf
# named-checkzone kanow.jp /etc/namedb/master/kanow.jp.db
zone kanow.jp/IN: loaded serial 2010092900
OK
# named-checkzone 0.168.192.in-addr.arpa /etc/namedb/master/192.168.0.db
zone 0.168.192.in-addr.arpa/IN: loaded serial 2010092900
OK

起動 / 再読込

 bind9 を起動するには、サーバを再起動するか以下のコマンドを実行します。

# /etc/rc.d/named start

 各IPアドレスの追加、変更などを行った場合は、以下のコマンドで再読込を行います。

# rndc reload

 これで内部向けDNSの設定は完了です。
 後はクライアントPCのDNS問い合わせ先をこのサーバに設定するか、DHCP機能を持つルータのDNSにサーバのIPアドレスを指定すれば、「www.kanow.jp」などのホスト名でLAN内部のサーバへアクセスできるようになります。

関連記事

トラックバック

コメント

コメントはまだありません。

コメント投稿フォーム

※ スパム防止の為、コメント内に2個以上のリンクがあった場合、サイト管理者 (かのう神路) が承認するまで表示されません。

ページの先頭に戻る