🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

8 total messages Started by IKEDA Kenji Sat, 26 Oct 2002 06:22
internal root server
#145
Author: IKEDA Kenji
Date: Sat, 26 Oct 2002 06:22
85 lines
3883 bytes
以下の条件に合うようなキャッシューサーバーを bind で動かすには、
どのような設定をすればいいのでしょう。

[環境]
a. FWの中。
b. 10.x.x.x のプライベートアドレスを使用。
c. 内部ルートサーバーが何台かあり、内部(FWの中)の名前は、それらを頂点
   とした反復問合せで引くことができる。
d. 外部と継がりのある forwarder となるサーバーも何台かあり、外部の名前は、
   そこに再帰問合せを投げれば答えを得ることができる。

[条件]
xx.jp,10.in-addr.arpa で始まる(終る)名前は内部ルートサーバーに問い、
それ以外の名前は forwarder に問い、どちらも引くことができるようにする。

$ cat named.root
;; 環境 c. のサーバー群
.			3600000	IN NS	A.ROOT-SERVERS.xx.JP.
A.ROOT-SERVERS.xx.JP.	3600000	IN A	10.1.0.1
.			3600000	IN NS	B.ROOT-SERVERS.xx.JP.
B.ROOT-SERVERS.xx.JP.	3600000	IN A	10.3.0.1
.			3600000	IN NS	C.ROOT-SERVERS.xx.JP.
C.ROOT-SERVERS.xx.JP.	3600000	IN A	10.4.0.1
(以下略)
$ cat named.conf
options {
	forwarders {	/* 環境 d. のサーバー群 */
		10.0.1.200;
		10.0.1.201;
	};
}
zone "." {
	type hint;
        file "named.root";
}
zone "xx.jp" {
	type forward;
	forwarders {};
}
zone "10.in-addr.arpa" {
	type forward;
	forwarders {};
}

なんてのを考え、bind-8.3.3 で試したのですが、起動後すぐに . の NS を探
しにいき、hint のデータだけでは飽き足らないのか、forwarders に指定して
あるサーバー群のひとつにも問い合せを出してしまいます。
結果、本物のルートサーバーの情報を手に入れてしまい、
check_hints: root NS list in hints for class 1 does not match root NS list
というエラーとなって、以後 type hint で指定したルートサーバーは無視する
ようになるため、外部の名前は引けても内部の名前は引けないという本末転倒
な結果になります。

DNS & BIND なんぞもパラパラ見てみましたが、内部ルートを立てる場合には、
外の名前を引くことなんてハナから考えていないように見えます。

xx.jp と 10.in-addr.arpa のゾーンを axfr し放題にし、すべてのキャッシュ
サーバーがこの2つゾーンを type slave でコピーを保持するようにすれば、
内部ルートなんぞ立てる必要もなくなるってのはわかっているのですが…


外を引かせる運用を、プライベートアドレスな FW の中でするなんてのは普通
じゃないんでしょうか?

$ cat named.conf
zone "." {
	type forward;
	forwarders {	/* 環境 d. のサーバー群 */
		10.0.1.200;
		10.0.1.201;
	};
}
zone "xx.jp" {
	type hint;
        file "named.root";
}
zone "10.in-addr.arpa" {
	type hint;
        file "named.root";
}

などと書ければスッキリするんですが…

-- 
池田研二  稲城駅前在住
Re: internal root server
#146
Author: Mori Kouji
Date: Thu, 31 Oct 2002 02:34
13 lines
2150 bytes
IKEDA Kenji <noroi-fj@mob.or.jp> writes:

> なんてのを考え、bind-8.3.3 で試したのですが、起動後すぐに . の NS を探
> しにいき、hint のデータだけでは飽き足らないのか、forwarders に指定して
> あるサーバー群のひとつにも問い合せを出してしまいます。

hint にしているからでしょう。自前で立てている内部のルートサーバだから
master とか slave にすればいいのでは。

-- 
森 浩二	(MORI Kouji)
(株)淺沼組 技術研究所
E-mail: mori@tri.asanuma.co.jp
Re: internal root server
#147
Author: IKEDA Kenji
Date: Thu, 31 Oct 2002 05:17
109 lines
5621 bytes
In article <80bs5b1gm9.fsf@kurishna.tri.asanuma.co.jp>,
	Mori Kouji <mori@tri.asanuma.co.jp> writes:

> hint にしているからでしょう。自前で立てている内部のルートサーバだから
> master とか slave にすればいいのでは。

内部ルートサーバーはもちろんそうなっています。
問題にしているのは、各クライアントからの再帰問合せを処理するキャッシュ
サーバーの設定なのです。

DNS & BIND にも、hint で与えられたものを信じたりせず、起動時に自ら調べ
に行き、最新情報で動くことが書かれていました。

zone "." には forwarders {}; の指定がしてないので(できないので)、当然
options で指定したフォワーダーに、訊きに行きます。

試しに named にパッチを入れ、forwarders が hint ゾーンでも効くようにし
てみました。

# テストなのでルートサーバーは A.ROO-SERVERS.xx.JP(10.104.192.191)のみ

find_zone(., 1)
find_zone: existing zone 1
prime_cache: priming = 0, root = 0
sysquery(, 1, 2, 0x0, 0x0, 0, 53)
qnew(0x8119000)
find_zone(., 1)
find_zone: existing zone 1
findns: np 0x80fb030 ''
findns: 1 NS's added for ''
nslookup(nsp=0xbfbff510, qp=0x8119000, "", d=0)
nslookup: NS "A.ROOT-SERVERS.xx.JP" c=1 t=2 (flags 0x3)
nslookup: 1 ns addrs						....(1)
nslookup: 1 ns addrs total					....(2)
retrytime: nstime0ms t4 nretry0 u4 : v4
schedretry(0x8119000, 4 sec)
evSetTimer(ctx 0x812e000, func 0x805e860, uap 0, due 1035606801.000000000, inter 0.000000000)
timers after evSetTimer:
  func 0x805e860, uap 0x0, due 1035606801.000000000, inter 0.000000000
  func 0x8064b90, uap 0x0, due 1035610397.106646000, inter 3600.000000000
  func 0x80837b0, uap 0x80fb1c8, due 1035606817.150218000, inter 0.000000000
  func 0x8064c04, uap 0x0, due 1035610397.106677000, inter 3600.000000000
  func 0x8079460, uap 0x0, due 1035610397.106666000, inter 3600.000000000
  func 0x807463c, uap 0x0, due 1035610397.106672000, inter 3600.000000000
sysquery: send -> [10.104.192.191].53 dfd=5 nsid=36640 id=0 retry=1035606801
								....(3)
evGetNext: fdCount 0
pselect(22, 0x300060, 0x0, 0x0, 3.838462000)
select() returns 1 (err: none)
Dispatch.File: fd 5, mask 0x1, func 0x8061998, uap 0
datagram from [10.104.192.191].53, fd 5, len 81
qfindid(36640) -> 0x8119000
Response (SYSTEM PRIMING -) nsid=36640 id=0
stime 1035606797/161275  now 1035606797/189905 rtt 28
NS #0 addr [10.104.192.191].53 used, rtt 18			....(4)
rrextract: dname  type 2 class 1 ttl 86400
(以下略)

とってもいい感じです。が、xx.JP にマッチしない外部の名前を、フォワーダー
に問い合わせてくれなります。xx.JP に合致しない名前は最終的に "." にマッ
チするってことを考えると当然です。

# ちなみに patchなしだと、(1),(2)のところが、フォワーダーの数と合わせ
# た 3 になり、(3)の sysquery の宛先はフォワーダーのひとつになり、(4)
# も、#0 から#2まで並びます。そして A~M.ROOT-SERVERS.NET を手に入れて
# しまうのでした。


なんかもう、hint を丸々信用する(訊きに行かない)パッチを作る以外に方策
はないように思えてきました。

やっぱ、「内部ルートサーバー」立てるほどの規模・プライベートアドレスで
動かしている、ってな環境で、外の名前を引かせるってのは普通じゃないって
ことなのだろうか…。内部は内部ルートサーバーへ、外部はフォワーダーへって、
とっても単純明解なモデルに思えるんだけど。

# djbdns でも fwdzone.patch が要るし

結局、以下のように、stub や slave にして、内部ルートサーバーから
データをかっぱらってくるということをすればできるんですけどね。

$ cat named.conf
options {
	forwarders {	/* 環境 d. のサーバー群 */
		10.0.1.200;
		10.0.1.201;
	};
};
zone "xx.jp" {
	type slave;
	file "xx.jp.zone";
	masters {	/* 環境 c. のサーバー群 */
		10.1.0.1; 10.3.0.1; 10.4.0.1; ...
	};
	forwarders {};
};
zone "10.in-addr.arpa" {
	type slave;
	file "10.in-addr.arpa.zone";
	masters {	/* 環境 c. のサーバー群 */
		10.1.0.1; 10.3.0.1; 10.4.0.1; ...
	};
	forwarders {};
};

# これだと、要りもしない情報までをもコピーしてきちまうんだよな

-- 
池田研二  稲城駅前在住
Re: internal root server
#148
Author: Mori Kouji
Date: Thu, 31 Oct 2002 06:26
19 lines
2372 bytes
IKEDA Kenji <noroi-fj@mob.or.jp> writes:

> > hint にしているからでしょう。自前で立てている内部のルートサーバだから
> > master とか slave にすればいいのでは。
> 
> 内部ルートサーバーはもちろんそうなっています。
> 問題にしているのは、各クライアントからの再帰問合せを処理するキャッシュ
> サーバーの設定なのです。

なるほど、キャッシュのみにしたいわけですね。失礼しました。

> zone "." には forwarders {}; の指定がしてないので(できないので)、当然

できませんでしたっけ?  できると思うのですが。

-- 
森 浩二	(MORI Kouji)
(株)淺沼組 技術研究所
E-mail: mori@tri.asanuma.co.jp
Re: internal root server
#149
Author: IKEDA Kenji
Date: Thu, 31 Oct 2002 07:13
10 lines
1742 bytes
In article <803cqn15vp.fsf@kurishna.tri.asanuma.co.jp>,
	Mori Kouji <mori@tri.asanuma.co.jp> writes:

> できませんでしたっけ?  できると思うのですが。

『type hint ではできない』の書き間違いでした。
できたとしても、外の名前が引けなくなるだけですけども。

-- 
池田研二  稲城駅前在住
Re: internal root server
#150
Author: Mori Kouji
Date: Thu, 31 Oct 2002 07:42
27 lines
2307 bytes
IKEDA Kenji <noroi-fj@mob.or.jp> writes:

> できたとしても、外の名前が引けなくなるだけですけども。

うーむ、池田さんの問題設定が理解できないのですが (なら黙ってろって?)
<86k7k5yb1s.fsf@poe.mob.or.jp> の [環境] で [条件] を満たすだけなら
下のようになると思いますが、これではダメなのですよね。たぶん。

zone "." {
  type forward;
  forwarders { 環境 d. のサーバ群; };
};

zone "xx.jp" {
  type forward;
  forwarders { 環境 c. のサーバ群; };
};

zone "10.in-addr.arpa" {
  type forward;
  forwarders { 環境 c. のサーバ群; };
};

-- 
森 浩二	(MORI Kouji)
(株)淺沼組 技術研究所
E-mail: mori@tri.asanuma.co.jp
Re: internal root server
#151
Author: IKEDA Kenji
Date: Thu, 31 Oct 2002 07:57
10 lines
1665 bytes
In article <80znsvyryj.fsf@kurishna.tri.asanuma.co.jp>,
	Mori Kouji <mori@tri.asanuma.co.jp> writes:

> これではダメなのですよね。たぶん。

内部の名前は、通常のインターネットでの動きと同様に、反復問い合せで解決
したいのです。内部とはいえルートサーバーに再帰問合せを投げたくないですし。

-- 
池田研二  稲城駅前在住
Re: internal root server
#152
Author: Mori Kouji
Date: Thu, 31 Oct 2002 08:27
16 lines
2136 bytes
IKEDA Kenji <noroi-fj@mob.or.jp> writes:

> 内部の名前は、通常のインターネットでの動きと同様に、反復問い合せで解決
> したいのです。内部とはいえルートサーバーに再帰問合せを投げたくないですし。

ようやく理解できました。

僕だったら named もう一個動かすか BIND9 にするとかして
キャッシュサーバの内部でフォワードするかも。

# 美しくはないですね。

-- 
森 浩二	(MORI Kouji)
(株)淺沼組 技術研究所
E-mail: mori@tri.asanuma.co.jp
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads