>> HOME >> FC5 MENU >> スレーブ DNS サーバーを構築する方法 (bind)
スレーブ DNS サーバーとは、他の DNS サーバーからドメインに関する情報をコピーして利用する DNS サーバーです。
このとき、元になる DNS 情報を提供するサーバーをマスターサーバーと呼びます。スレーブサーバーは、DNS 情報のバックアップや負荷分散を目的としています。少し意味合いは異なりますが、セカンダリ(代替)DNS サーバーとも呼びます。
ここでは、以下の条件を満たすように設定します。
  • マスターサーバーに加えられた変更を即座にスレーブサーバーに反映するように設定
  • ゾーン情報転送には、公開鍵認証方式 (TSIG : Transaction Signature) を採用

1. 公開鍵・秘密鍵の作成
2. rndc の設定
1 ) rndc の設定ファイルの作成
2 ) rndc の設定ファイルの編集
3. マスター DNS サーバーの設定
1 ) BIND 設定ファイル /etc/named.conf の編集
2 ) /var/named ディレクトリ所有者の確認
4. スレーブ DNS サーバーの構築
5. スレーブ DNS サーバーの設定
1 ) BIND 設定ファイル /etc/named.conf の編集
2 ) /var/named ディレクトリ所有者の確認
6. スレーブ DNS サーバーの再起動
7. マスター DNS サーバーの再起動
8. ゾーンデータベース転送の確認
1. 公開鍵・秘密鍵の作成
暗号には、認証と秘匿 2つの機能がありますが、TSIG は認証の機能のみを提供します。そのため、マスターとスレーブで交換されるメッセージは平文のままです。
作業はマスター、スレーブどちらでも構いません。
[root@linux ~]# dnssec-keygen -a HMAC-MD5 -b 512 -n HOST bind 
Kbind.+157+56923

[root@linux ~]# ls -l Kbind.+157+56923.* 
-rw-------  1 root  root     111  7月 16日 21:57 Kbind.+157+56923.key
-rw-------  1 root  root     145  7月 16日 21:57 Kbind.+157+56923.private


# 公開鍵
[root@linux ~]# more Kbind.+157+56923.key 
bind. IN KEY 512 3 157 IXxug0fbwvxGXDkoVeZzr7wh2TOIA5c5TI・・・ (省略)

# 秘密鍵
[root@linux ~]# more Kbind.+157+56923.private 
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: IXxug0fbwvxGXDkoVeZzr7wh2TOIA5c5TIISZilgpZwiV2dPVxbd・・・ (省略)
2. rndc の設定
rndc (remote name server deamon control) は named に関する制御やステータス確認を行います。
rndc コマンドは bind9 と同時にインストールされています。
1 ) rndc の設定ファイルの作成
[root@linux ~]# rndc-confgen > /etc/rndc.conf 
2 ) rndc の設定ファイルの編集
[root@linux ~]# vi /etc/rndc.conf 

# Start of rndc.conf
key "rndckey" {
	algorithm hmac-md5;
	# Kbind.+157+56923.private の 秘密鍵の内容を埋め込み
	secret "IXxug0fbwvxGXDkoVeZzr7wh2TOIA5c5TIISZilgpZwiV2dPVxbd・・・ (省略)";
};

options {
	default-key "rndckey";
	default-server 127.0.0.1;
	default-port 953;
};
# End of rndc.conf
3. マスター DNS サーバーの設定
1 ) BIND 設定ファイル /etc/named.conf の編集
[root@linux ~]# vi /etc/named.conf 

  :
  :

//
// a caching only nameserver config
//
// 追加
key "rndckey" {
	algorithm hmac-md5;
	# Kbind.+157+56923.key の 公開鍵の内容を埋め込み
	secret "IXxug0fbwvxGXDkoVeZzr7wh2TOIA5c5TI・・・ (省略)";
};

controls {
	inet 127.0.0.1 port 953
		allow { 127.0.0.1; } keys { "rndckey"; };
};

// コメント
// controls {
//	inet 127.0.0.1 allow { localhost; } keys { rndckey; };
// };

  :
  :

// コメントにする
//include "/etc/rndc.key";

// 正引きゾーン設定
zone "mountainbigroad.jp" IN {
	type master;
	file "mountainbigroad.jp.db";
	// ゾーン情報変更時は即座にセカンダリへ反映
	notify yes;
	// スレーブサーバーの IP アドレスを指定
	also-notify { 192.168.1.12; };
	// Key を指定
	allow-transfer { key rndckey; };
};
// 逆引きゾーン設定
zone "1.168.192.in-addr.arpa" IN {
	type master;
	file "1.168.192.in-addr.arpa.db";
	// ゾーン情報変更時は即座にセカンダリへ反映
	notify yes;
	// スレーブサーバーの IP アドレスを指定
	also-notify { 192.168.1.12; };
	// Key を指定
	allow-transfer { key rndckey; };
};
2 ) /var/named ディレクトリ所有者の確認
yum で BIND をインストールすると /var/named の所有者が root になっています。このままですと、rndc によるゾーン情報の転送が失敗してしまいますので、所有者を named に変更します。
[root@linux ~]# ls -l /var/ 
合計 168
  :
drwxr-x---  5 root    named   4096  7月 16 17:01 named
  :

# /var/named の所有者を named に変更
[root@linux ~]# chown named /var/named 

[root@linux ~]# ls -l /var/ 
合計 168
  :
drwxr-x---  5 named   named   4096  7月 16 17:01 named
  :
4. スレーブ DNS サーバーの構築
まず、スレーブとするサーバーに、DNS サーバーを構築します。(『 DNS サーバー (bind) 』 を参照してください )
※ IPアドレスは、マスターサーバー 「192.168.1.11」 、スレーブサーバー 「192.168.1.12」 とします。
5. スレーブ DNS サーバーの設定
1 ) BIND 設定ファイル /etc/named.conf の編集
[root@linux ~]# /etc/named.conf 

options {
	directory "/var/named";
	dump-file "/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	version "unknown";
	// query-source address * port 53;
	allow-query{
		127.0.0.1;
		192.168.1.1/24;
	};
	allow-recursion{
		127.0.0.1;
		192.168.1.1/24;
	};
	allow-transfer{
		127.0.0.1;
		192.168.1.1/24;
	};
	forwarders{
		192.168.1.1;
	};
};

// a caching only nameserver config
//
// コメント
// controls {
//	inet 127.0.0.1 allow { localhost; } keys { rndckey; };
// };

// Log 出力制限
logging {
	category lame-servers { null; };
};

zone "." IN {
	type hint;
	file "named.ca";
};

zone "localhost" IN {
	type master;
	file "localhost.zone";
	allow-update { none };
};

zone "0.0.127.in-addr.arpa" IN {
	type master;
	file "named.local";
	allow-update { none };
};

zone "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" IN {
	type master;
	file "named.ip6.local";
	allow-update { none; };
};

zone "255.in-addr.arpa" IN {
	type master;
	file "named.broadcast";
	allow-update { none; };
};

zone "0.in-addr.arpa" IN {
	type master;
	file "named.zero";
	allow-update { none; };
};

// 以下をコメント
// include "/etc/rndc.key";

// key センテンスを追加
key "rndckey" {
	algorithm hmac-md5;
	# Kbind.+157+56923.key の 公開鍵の内容を埋め込み
	secret "IXxug0fbwvxGXDkoVeZzr7wh2TOIA5c5TI・・・ (省略)";
};

// Server センテンスを追加
server 192.168.1.11 {
	keys "rndckey";
};

// 正引きゾーン設定
zone "mountainbigroad.jp" IN {
	// type を slave に変更
	type slave;
	// マスターサーバーの IP アドレスを指定
	masters { 192.168.1.11; };
	file "mountainbigroad.jp.db";
};
// 逆引きゾーン設定
zone "1.168.192.in-addr.arpa" IN {
	// type を slave に変更
	type slave;
	// マスターサーバーの IP アドレスを指定
	masters { 192.168.1.11; };
	file "1.168.192.in-addr.arpa.db";
};

2 ) /var/named ディレクトリ所有者の確認
yum で BIND をインストールすると /var/named の所有者が root になっています。このままですと、rndc によるゾーン情報の転送が失敗してしまいますので、所有者を named に変更します。
[root@linux ~]# ls -l /var/ 
合計 168
  :
drwxr-x---  5 root    named   4096  7月 16 17:01 named
  :

# /var/named の所有者を named に変更
[root@linux ~]# chown named /var/named 

[root@linux ~]# ls -l /var/ 
合計 168
  :
drwxr-x---  5 named   named   4096  7月 16 17:01 named
  :
6. スレーブ DNS サーバーの再起動
[root@linux ~]# service named restart 
namedを停止中:                                             [  OK  ]
namedを起動中:                                             [  OK  ]
7. マスター DNS サーバーの再起動
[root@linux ~]# service named restart 
namedを停止中:                                             [  OK  ]
namedを起動中:                                             [  OK  ]
7. ゾーンデータベース転送の確認
確認の為、ゾーンファイルを編集して SOA のシリアル番号を上げ、その後 rndc を使ってゾーン情報の再読み込みを行います。
# ゾーン情報の再読み込み
[root@linux ~]# rndc reload 
server reload successful
マスターサーバーで /var/messages ファイルを確認し、以下のようなメッセージが出力されていることを確認します。
[root@linux ~]# view /var/log/messages 
  :
  :
Mar 12 16:58:31 mbr10 named[1552]: zone mountainbigroad.jp/IN: loaded serial 2006070102
Mar 12 16:58:31 mbr10 named[1552]: zone mountainbigroad.jp/IN: sending notifies (serial 2006070102)
Mar 12 16:58:31 mbr10 named[1552]: client 192.168.71.131#49172: transfer of 'mountainbigroad.jp/IN': AXFR-style
IXFR started: TSIG rndckey
Mar 12 16:58:31 mbr10 named[1552]: client 192.168.71.131#49172: transfer of 'mountainbigroad.jp/IN': AXFR-style
IXFR ended
スレーブサーバーで /var/messages ファイルを確認し、以下のようなメッセージが出力されていることを確認します。
[root@linux ~]# view /var/log/messages 
  :
  :
Mar 12 16:58:31 mbr11 named[1549]: client 192.168.71.130#32768: received notify for zone 'mountainbigroad.jp'
Mar 12 16:58:31 mbr11 named[1549]: zone mountainbigroad.jp/IN: Transfer started.
Mar 12 16:58:31 mbr11 named[1549]: transfer of 'mountainbigroad.jp/IN' from 192.168.71.130#53: connected using
192.168.71.131#49108
Mar 12 16:58:31 mbr11 named[1549]: zone mountainbigroad.jp/IN: transferred serial 2006070104: TSIG 'rndckey'
Mar 12 16:58:31 mbr11 named[1549]: transfer of 'mountainbigroad.jp/IN' from 192.168.71.130#53: end of transfer
また、スレーブ側のゾーンファイルが変更されていることを確認します。