- 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.jp | ns.local.hogehoge.ne.jp |
以下のファイルを変更します。
/etc/resolv.conf DNSへの問い合わせ先としてリゾルバが使用する
/etc/host.conf DNSをどのような順序で使うか指定する
/etc/hosts ホスト名とアドレスの変換ファイル
/etc/resolv.conf は以下のように記述します。
domain hogehoge.ne.jp
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/host.conf は「ホスト名⇔アドレス変換」のときに /etc/hosts と DNS をどのような順序で使うかを指定するものです。
以前読んだ参考書では、『通常DNSを使う場合は、hosts を使う必要はなく、逆に hosts を使うことはトラブルの元になりかねない。従って、host.conf を以下のように修正してDNSによる変換を優先させる。』と書いてあり、bind を優先させるような設定方法が記述してあったのですが。参考書の記述どおりに編集すると何故か、アドレス検索できなくなります。それで、本ページでは、デフォルトのまま変更しないことをおすすめして、あえて記述例は、お見せしません。
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 が生成されます。
FreeBSD8.2-RELEASE の標準の設定では BIND9 は /var/named に chroot されています。この項以降に述べる、ゾーンファイルの定義やログファイルの出力先についても影響を受けていますので、注意が必要です。
中身をみてみると
key "rndckey" {
algorithm hmac-md5;
secret "(キーコード)";
};
となっています。
次に /etc/namedb/rndc.conf ファイルを作成します。
rndc-confgen -b 512 -k 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 には標準である程度書き込まれています。編集する際は、最下行から書き加えます。
キーの設定として、/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.1.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/仮名.zone";
allow-update { none; };
allow-transfer { any; };
allow-query { any; };
};
zone "0.zzz.yyy.xxx.in-addr.arpa" {
type master;
file "/etc/namedb/master/仮名.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 を定義するものですから
16行目は、192.168.0.2のアドレスは ns.local.hogehoge.ne.jp を意味することを定義しているのです。
5. グローバルアドレス定義ファイル作成
グローバルアドレス定義ファイル /var/namedetc/namedb/master/hogehoge.zone、/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サーバとして使用するので、そのためにニックネームを使用しているということなのです。
15行目は、mail.hogehoge.ne.jp は、ns.hogehoge.ne.jp の別名ですよという定義を行っているのです。
逆引きファイル /etc/namedb/仮名.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
で、使用方法が出力されますので、いろいろ試してみてください。
|