FreeBSD 9.3 RELEASE - BIND - 基本設定

 クラウディア
1. /etc/resolv.conf、/etc/host.conf、/etc/hosts 設定
2. キー生成と設定
3. /etc/namedb/named.conf 設定
4. ローカルアドレス定義ファイル作成
5. グローバルアドレス定義ファイル作成
6. パーミッションの変更
7. BIND 起動
8. 動作確認

1.  /etc/resolv.conf、/etc/host.conf、/etc/hosts 設定

 仮に、以下のような環境でDNSサーバ設定を行うものとします。
 項目   ローカル   グローバル 
ネットワークアドレス 192.168.0.0/24 xxx.yyy.zzz.0/29
ルータアドレス 192.168.0.1 xxx.yyy.zzz.1
サーバアドレス 192.168.0.2 xxx.yyy.zzz.2
ドメイン名 hogehoge.ne.jp local.hogehoge.ne.jp
サーバ名 ns.hogehoge.ne.jpns.local.hogehoge.ne.jp
 以下のファイルを変更します。以前は、/etc/hosts.conf も変更していましたが現在は、変更しません。
/etc/resolv.conf    DNSへの問い合わせ先としてリゾルバが使用する
/etc/hosts          ホスト名とアドレスの変換ファイル
 /etc/resolv.conf は以下のように記述します。

domain  hogehoge
nameserver      127.0.0.1
nameserver      xxx.yyy.zzz.2
nameserver      aaa.bbb.ccc.ddd
 ここで、127.0.0.1 はループバックアドレスですから、どもマシンも同じ値を記述します。  xxx.yyy.zzz.2 は、サーバのグローバルアドレスです。  aaa.bbb.ccc.ddd は、上位のプロバイダから与えられた、セカンダリDNSサーバのアドレスです。  /etc/hosts は以下のように編集します。

::1                    localhost.hogehoge.ne.jp localhost
127.0.0.1              localhost.hogehoge.ne.jp localhost
192.168.0.2            ns.hogehoge.ne.jp ns
192.168.0.2            ns.hogehoge.ne.jp.
 3行目の「ns.hogehoge.ne.jp.」のところは、最後に「.」(余談:ドットあるいはポチといいますわたしはポチの言い方が可愛くて好きなのですが) がついているところが
みそ
なので忘れずにつけてください。

2. キー生成と設定

 BIND9 では、ゾーンの再読み込み(reload)や更新(refresh)を行うには rndc (Remote Name server Daemon Control) というコマンドを使用します。  rndc コマンドを利用するにはセキュリティー設定として、キーの生成と設定が必要になります。  キーの生成は以下のコマンドを使用します。

> rndc-confgen -a -b 512 -k rndckey
wrote key file "/etc/namedb/rndc.key"
 出力の通り、/etc/namedb/rndc.key というキーファイルが生成されます。/etc/namedb/ というディレクトリは、/var/named/etc/namedb にシンボリックリンクがはられていますので、実際には /var/named/etc/namedb/rndc.key が生成されます。  FreeBSD5.2-RELEASE 以降の標準の設定では BIND は
/var/named に chroot されています
。この項以降に述べる、ゾーンファイルの定義やログファイルの出力先についても影響を受けていますので、注意が必要です。  /var/named/etc/nameb/rndc.key は

key "rndckey" {
        algorithm hmac-md5;
        secret キーコード;
};
 となっています。  次に /etc/namedb/rndc.conf ファイルを作成します。

> rndc-confgen -b 512 -k /etc/namedb/rndc.key > /etc/namedb/rndc.conf
 中身は

# Start of rndc.conf
key "rndc.key" {
	algorithm hmac-md5;
	secret キーコード;
};

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 "
(キーコード)
"; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc.key"; }; # }; # End of named.conf
 となっていますが、「#」で始まる行は「3.」の処理が終わったら不要ですので「3.」の処理が終わったらセキュリティのためにも削除します。

3. /etc/namedb/named.conf 設定

 /etc/namedb/named.conf にはデフォルトである程度書き込まれています。DNS 最上位サーバの定義等は、そのまま残します。  最初に、ゾーン転送受付先(通常はプロバイダより提供されるDNSサーバ)として、また、自分の転送先としてゾーンの受け渡しを行うサーバの IP アドレスを設定します。  デフォルトで

    listen-on { 127.0.0.1; };
 と記述してある行の前に

    allow-transfer
    {
        ここに受け渡しを行う自信以外のサーバのIPアドレスを記述します。
        末尾に「;」セミコロンをつけます。複数ある場合、改行して記述していきます。
    };
 次に

    listen-on { 127.0.0.1; };
 の定義は、自身が問い合わせを受け付ける IP アドレスを記述していますが、ループバックアドレスのみの記述だと他のクライアントから一切問い合わせを受け付けませんので、ここに IP アドレスを列挙します。  ローカルIP・グローバルIPがある場合、複数の NIC を実装している場合等、受付を行う IP アドレスのみを記述していきます。  次に、最下行に移って以降の記述を追加していきます。  キーの設定として、/etc/namedb/rndc.conf作成の際の最下行を記述します。

key "rndc.key" {
algorithm hmac-md5;
secret "キーコード";
};

controls {
    inet 127.0.0.1 port 953
    allow { 127.0.0.1; } keys { "rndc.key"; };
};
 最初が、ローカルアドレスの正引きファイル定義、ローカルアドレスの逆引きファイル定義、グローバルアドレスの正引きファイル定義、グローバルアドレスの逆引きファイル定義を記述します。

zone "local.hogehoge.ne.jp" {
    type master;
    file "/etc/namedb/master/local.zone";
    allow-transfer {
        127.0.0.1;
        xxx.yyy.zzz.0/29;
        192.168.0.0/24;
    };
    allow-query {
        127.0.0.1;
        xxx.yyy.zzz.0/29;
        192.168.0.0/24;
    };
};

zone "0.168.192.in-addr.arpa" {
    type master;
    file "/etc/namedb/master/local.rev";
    allow-transfer {
        127.0.0.1;
        xxx.yyy.zzz.0/29;
        192.168.0.0/24;
    };
    allow-query {
        127.0.0.1;
        xxx.yyy.zzz.0/29;
        192.168.0.0/24;
    };
};

zone "hogehoge.ne.jp" {
    type master;
    file "/etc/namedb/master/hogehoge.zone";
    allow-update   { none; };
    allow-transfer { any; };
    allow-query    { any; };

};

zone "0.zzz.yyy.xxx.in-addr.arpa" {
    type master;
    file "/etc/namedb/master/hogehoge.rev";
    allow-update   { none; };
    allow-transfer { any; };
    allow-query    { any; };
};

4. ローカルアドレス定義ファイル作成

 ローカルアドレス定義ファイル /etc/namedb/master/local.zone、/etc/namedb/master/local.rev を作成します

;   local.zone

$TTL    3600

@   IN  SOA ns.hogehoge.ne.jp. root.hogehoge.ne.jp.  (
                2001010101  ; Serial
                3600        ; Refresh
                900         ; Retry
                3600000     ; Expire
                3600 )      ; Minimum
    IN  NS  ns.hogehoge.ne.jp.
    IN  NS  "セカンダリ".ne.jp.
    IN  MX  10 mail.hogehoge.ne.jp.

ns      IN  A   192.168.0.2

rt      IN  A   192.168.0.1
pc01    IN  A   192.168.0.3
pc02    IN  A   192.168.0.4
pc03    IN  A   192.168.0.5
pc04    IN  A   192.168.0.6
 IN NSと書いてある行は、DNS サーバとして使用するサーバとしてns.hogehoge.ne.jpを使用するということです。  
セカンダリ
.ne.jp.と記述しているのは、プロバイダから与えられたセカンダリのDNSサーバ名です。  IN MXと書いてある行は、メールサーバとして、mail.hogehoge.ne.jp を使用すると定義しています。10 と記述してあるのは、メールサーバの優先順位であり、複数のメールサーバを使用する場合は、10 とか20 とか複数行書いてその優先順位を分けます。この例では、メールサーバは1台しか使用しません。その場合は、10 を入れておいてください。  その後に続く、IN Aの行は、ns はアドレスとして、192.168.0.2 を使用するという意味です。  重要なのは、名称の最後につける、「.」(ドット)です。BINDの定義ファイル内での名称は最後に「.」がつけば絶対名称であり、つかなければ相対名称という意味があります。下位の行で、ns とかpc01 とか書いてある名称は、「.」がついていませんね。つまりこれは相対名称で、その絶対名称は、後ろにそのゾーン名がつくことになります。もともと、named.conf でこのファイルは、local.hogehoge.ne.jp を定義してあるものですから ns は、ns.local.hogehoge.ne.jp のことであり、pc01は、pc01.local.hogehoge.ne.jp という絶対名称を持つということになります。  逆引きファイル /etc/namedb/
local.rev

; local.rev

$TTL    3600

@   IN  SOA ns.hogehoge.ne.jp. root.hogehoge.ne.jp  (
        20010101    ; Serial
        3600        ; Refresh
        900         ; Retry
        3600000     ; Expire
        3600 )      ; Minimum
    IN  NS  ns.hogehoge.ne.jp.
    IN  NS  セカンダリ.ne.jp.
    IN  MX  10 mail.hogehoge.ne.jp.

1   IN  PTR r1.local.hogehoge.ne.jp.
2   IN  PTR ns.local.hogehoge.ne.jp.
3   IN  PTR pc01.local.hogehoge.ne.jp.
4   IN  PTR pc02.local.hogehoge.ne.jp.
5   IN  PTR pc03.local.hogehoge.ne.jp.
6   IN  PTR pc04.local.hogehoge.ne.jp.
 IN NS と IN NXの行は、正引きファイルと同様です。  その後ろに続く IN PTRの行は、アドレスを名称に変換するための記述です。ここでもアドレスが省略形(相対アドレス)で記述されています。1、2、3 ・・・というのは、行番号ではありません。正引きファイルのときがそうであったように、このファイルは、192.168.0 を定義するものですから

2   IN  PTR ns.local.hogehoge.ne.jp.
 の行は、192.168.0.2のアドレスは ns.local.hogehoge.ne.jp を意味することを定義しているのです。

5. グローバルアドレス定義ファイル作成

 グローバルアドレス定義ファイル /var/namedetc/namedb/master/hogehoge.rev、/var/namedetc/namedb/master/hogehoge.rev を作成します  グローバルアドレスの定義ファイルも基本は、ローカルアドレスの定義ファイルと同様です。名称とアドレスが異なるだけです。

$TTL    3600

@   IN  SOA ns.hogehoge.ne.jp. root.hogehoge.ne.jp. (
        2001010101  ; Serial
        3600        ; Refresh
        900         ; Retry
        3600000     ; Expire
        3600 )      ; Minimum
    IN  NS  ns.hogehoge.ne.jp.
    IN  NS  "セカンダリ".ne.jp.
    IN  MX  10 mail.hogehoge.ne.jp.

ns      IN  A   xxx.yyy.zzz.2
mail    IN  CNAME   ns
www     IN  CNAME   ns
ftp     IN  CNAME   ns

r1      IN  A   xxx.yyy.zzz.1

pc01    IN  A   xxx.yyy.zzz.3
pc02    IN  A   xxx.yyy.zzz.4
pc03    IN  A   xxx.yyy.zzz.5
pc04    IN  A   xxx.yyy.zzz.6
 local.zone と記述方法が異なるのは、IN CNAME の行だけです。  これは、1台のサーバをDNSサーバ、メールサーバ、WEBサーバ、ftpサーバとして使用するので、そのためにニックネームを使用しているということなのです。

mail    IN  CNAME   ns
 と記述している行は、mail.hogehoge.ne.jp は、ns.hogehoge.ne.jp の別名ですよという定義を行っているのです。  逆引きファイル /etc/namedb/
hogehoge.rev

$TTL    3600

@   IN  SOA ns.hogehoge.ne.jp. root.hogehoge.ne.jp. (
        2001012501  ; Serial
        3600    ; Refresh
        900 ; Retry
        3600000 ; Expire
        3600 )  ; Minimum
    IN  NS  ns.hogehoge.ne.jp.
    IN  NS  "セカンダリ".ne.jp.
    IN  MX  10 mail.hogehoge.ne.jp.

2   IN  PTR ns.hogehoge.ne.jp.
1   IN  PTR r1.hogehoge.ne.jp.

3   IN  PTR pc01.hogehoge.ne.jp.
4   IN  PTR pc02.hogehoge.ne.jp.
5   IN  PTR pc03.hogehoge.ne.jp.
6   IN  PTR pc04.hogehoge.ne.jp.
 グローバルアドレス定義ファイルとローカルアドレス定義ファイルで異なるのは、ローカルの場合自分で使用するアドレスだけ定義しておけばよいということです。グローバルアドレスは、プロバイダから与えられたアドレスを全部定義しておきましょう。与えられたグローバルアドレスの空間は全部定義する義務があるのです。  もちろん、xxx.zzz.yyy.0/29 の場合、ネットワークアドレスである xxx.yyy.zzz.0 とブロードキャストアドレスである xxx.yyy.zzz.7 は定義できません。

6. パーミッションの設定

 ファイルの所有者とパーミッションを変更します。以下の要領で、今までに編集したファイルを含め、BIND で使用するファイルをすべて bind デーモン以外から読み書きできないようにします。

> chown bind:bind /etc/namedb/named.conf
> chmod 0400      /etc/namedb/named.conf

7. BIND 起動

 定義ファイルの設定が終わりましたので、/etc/rc.conf を編集して、BIND を起動します。  /etc/rc.conf には以下の 1行を記述します。

named_enable="YES"
 これで、BIND の起動が可能です。以下のコマンドで起動します。

> /etc/rc.d/named start

8. 動作確認

 BIND を起動したら、以下のコマンドで動作確認します。

> rndc status
 動作していれば

version: "バージョン番号"
CPUs found: 1
worker threads: 1
number of zones: 101
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is ON
recursive clients: 0/0/1000
tcp clients: 0/100
server is up and running
 最後の行で server is up and running と出力されていれば、少なくとも起動して動作していることはわかります。  ゾーンファイルや、named.conf を書き換えてリロードする際のコマンドは

> rndc reload
 です。rndc を使って、停止やリスタートも出来ます。

> rndc
 で、使用方法が出力されますので、いろいろ試してみてください。
earthcar(アースカー)
損保との違い
【usus ウズウズ】
葬送のフリーレン Prime Video