書いてる人: 高橋カヲル | [mixi] | [PGP] | [TETRiS DS] | [portscout] | [RSS]
dnscache を複数のアドレスで listen させるために IP に 0.0.0.0という裏ワザ的な手を使ったこともあった。が、もう使わないことにした。 192.168.0.1, 192.168.0.2 の両方を振っている場合など、 192.168.0.2 にきた問い合わせを src 192.168.0.1 で返して困ったことになる。 IPv6 patch を当てると 0.0.0.0 で listen する技自体が使えなくなる。
複数上げるのを嫌がった理由はなんだったんだろうか。考えてみた。
いろいろ逃げ道は考えられるが、forward を使うことにした。まずは 127.0.0.1 で dnscache を上げる。気合いを入れて設定するのはコイツだけ。他のネットワーク向け、例えば 192.168.0.2 や 10.0.0.2 で上げる dnscache は問い合わせを 127.0.0.1 に forward してやる。例として
する場合を考えよう。
dnscache-conf を走らせる前に dnsroots.global を変更しておく。 my ports に放り込んであるパッチ。
$OpenBSD$ Now j.root-servers.net is 192.158.128.30. (SERIAL 2002110501) Use m.root-servers.net first for Japenese user. Move a.root-servers.net to last. --- dnsroots.global.orig Wed Jul 9 12:45:23 2003 +++ dnsroots.global Wed Jul 9 12:45:49 2003 @@ -1,4 +1,4 @@ -198.41.0.4 +202.12.27.33 128.9.0.107 192.33.4.12 128.8.10.90 @@ -7,7 +7,7 @@ 192.112.36.4 128.63.2.53 192.36.148.17 -198.41.0.10 +192.58.128.30 193.0.14.129 198.32.64.12 -202.12.27.33 +198.41.0.4
djbdns の root server の探し方を知っていれば、この変更の効果もわかる。すでに dnscache-conf をして dnscache を運用している場合は root/servers/@ を書き換えるといい。
# dnscache-conf named multilog /var/dnscache 127.0.0.1 # dnscache-conf named multilog /var/dnscache-vlan0 192.168.0.2 # echo '127.0.0.1' > /var/dnscache-vlan0/servers/@ # echo '1' > /var/dnscache-vlan0/env/FORWARDONLY # touch /var/dnscache-vlan0/root/ip/192.168.0 # echo '64' > /var/dnscache-vlan0/env/CACHESIZE
要は 127.0.0.1 で普通に dnscache を上げる。名前引き関係はこっちの dnscache で設定をする。キャッシュは大盛りで。 192.168.0.2 で FORWARDONLY な dnscache を上げる。アクセス制限関係はこっちの dnscache (dnscache-vlan0) で設定する。キャッシュを激しく小さめ (ここでは 64) にしておく。 vlan1 に関して同様。 CACHESIZE は 100 未満にしても強制的に 100 になるようだ。
http://support.intel.co.jp/jp/support/network/adapter/pro100/linux_driver.htmから取ってきていれよう。
Powered by 早起き生活