ISC BIND (bind-9.8.2-0.23.rc1.el6_5.1.i686 on CentOS 6) で、

  • キャッシュサーバとして使っている
  • 自分で解決せずにフォワーダを設定している
  • 権威サーバも兼ねている
  • 権威を持つドメインがサブドメインを委譲している

場合に、どうもうまく委譲されず困ってました。

# キャッシュサーバと権威サーバを兼ねるなよとか
# そもそも BIND 使ううなよとかそういう方向の突っ込みは却下で。

named.conf の主要部分は以下のとおり

options {
	...
	forward only;
	forwarders {
		192.168.0.1;
	};
	....
};

zone "example.com" {
	type master;
	file "data/example.zone";
};

example.zone の中身は以下のとおり

@	IN	SOA	example.com. umezawa.example.com. (
				9       ; serial
				8H      ; refresh
				2H      ; retry
				4W      ; expire
				1D)     ; minimum TTL

		NS	ns.example.com.
ns		A	192.168.1.53

sub		NS	subns.sub
subns.sub	A	192.168.2.53

ここで、この BIND に対して subns.sub.example.com を聞くと、(委譲先が正しく設定されていても) NXDOMAIN が返ってきます。チマチマゾーンファイルをいじっても解決せず、よーくパケットキャプチャを見たところ、自分のところのゾーンファイルに書いてあるグルーレコードを見ずにフォワード先に聞いているようでした。

…で、ググったら解決のヒントが見つかりました。 実用 BIND 9で作るDNSサーバ(最終回):BIND 9を徹底活用するためのTips集 (2/2) – @IT

ということで解決方法は named.conf を以下のように変更すること。

zone "example.com" {
	type master;
	file "data/example.zone";
	forwarders {}; // <- これ
};

これを書くと、自分のところのグルーレコードが使われるようになります。

ちなみに、委譲しないサブドメインの場合はどうやら大丈夫のようです。あくまでも委譲先のグルーレコードを期待したように処理してくれない、という問題です。

Trackback

no comment untill now

Add your comment now