[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:43635] Re: bind9-host が一部のサイトで SERVFAIL



さとうふみやす です。

At Wed, 25 May 2005 15:27:39 +0900,
Sugano Yoshihisa (E) wrote:
> 最近Firefoxで一部のサイトの名前解決が妙に遅いので、調べてましたら
> bind9-hostで試したときにSERVFAILになることに気付きました。
> Firefoxでの現象と関係あるかはわかりませんが……。
> 
> $ host www.square-enix.co.jp
> www.square-enix.co.jp has address 43.253.80.27
> Host www.square-enix.co.jp not found: 2(SERVFAIL)
> Host www.square-enix.co.jp not found: 2(SERVFAIL)

興味があったので調べてみました。bind9-host 1:9.3.1-2 の
host(1) は指定されたドメイン名の A, AAAA, MX の RR を索いて
その結果を返そうとすることが分かりましたが、AAAA RR の取得
に失敗 (nxdomain ではなく、servfail) していました。Firefox
が(A RR を試すまえに?) AAAA RR を索こうとするが、それが
失敗するのが遅い原因じゃないかと思います。Firefox で URI
「about:config」を開いて、「network.dns.disableIPv6」を
「yes」にするとどうでしょうか?
#項目名は「network.dns.enableIPv6」にして、
#デフォルト値を「yes」とするほうが好みだなぁ。:-p

AAAA RR 取得が失敗する原因ですが、www.square-enix.co.jp の
権威ネームサーバーの挙動が変で、AAAA RR への問い合わせに対して
壊れた DNS パケットを返してきます。

以下、実験結果。
djbdns の dnsq(1) を使ってます (動作がシンプル、かつ必要な情報が
分かりやすくシンプルに表示されるから)。

1. www.square-enix.co.jp の権威 NS を調べる。
--
$ dnsq aaaa www.square-enix.co.jp a.root-servers.net
省略
$ dnsq ns square-enix.co.jp a.dns.jp
2 square-enix.co.jp:
87 bytes, 1+0+2+0 records, response, noerror
query: 2 square-enix.co.jp
authority: square-enix.co.jp 86400 NS dns1.playonline.com
authority: square-enix.co.jp 86400 NS dns2.playonline.com
$ dnsq aaaa www.square-enix.co.jp dns1.playonline.com
28 www.square-enix.co.jp:
154 bytes, 1+0+2+4 records, response, weird ra, noerror
query: 28 www.square-enix.co.jp
authority: www.square-enix.co.jp 3600 NS adns2.accelia.net
authority: www.square-enix.co.jp 3600 NS adns1.accelia.net
additional: adns1.accelia.net 1419 A 210.164.30.141
additional: adns1.accelia.net 1419 A 202.214.159.3
additional: adns2.accelia.net 1419 A 43.253.209.142
additional: adns2.accelia.net 1419 A 210.164.30.142

結果、adns1.accelia.net と adns2.accelia.net が得られた。

2. では実際に索いてみよう。
--
$ dnsq aaaa www.square-enix.co.jp adns1.accelia.net
dnsq: fatal: unable to parse: protocol error
$ dnsq aaaa www.square-enix.co.jp adns1.accelia.net
dnsq: fatal: unable to parse: protocol error

結果、どちらも失敗。

なお、sid の bind9-host 1:9.3.1-2 で
  $ host www.square-enix.co.jp adns1.accelia.net
で索いてみると、
  ;; Warning: Message parser reports malformed message packet.
などと警告が出ます。

どちら (dnsq(1), host(1)) の場合も Etherreal でパケットを見てみると、
adns1.accelia.net, adns2.accelia.net からの応答に対して
「Malformed Pakcet: DNS」と表示されているので、パケットが
壊れているようです。

> この現象は sid の bind9-host 9.3.1-2 で確認しました。
> sarge に入ってる 9.2.4-1 では正常に動作しています。

sarge の bind9-host の host(1) はデフォルトで A レコードしか
索かないようです。

> きっかけがFirefoxで名前解決が遅いことだったので、もしかしたら
> bind9-hostが悪いのではないのかもしれません。
> リゾルバの本体というのは誰が持ってるのでしょう? glibcでしょうか?

スタブリゾルバは glibc6 ですね。

> 名前解決が遅いのは、単純に相手方のTTLが短すぎるだけかもしれませんが、
> SERVFAILになるのはどういうことなんでしょう?

adns1.accelia.net と adns2.accelia.net もしくはそこまでの
経路にある機器が壊れているのでしょう。

-- 
-- Name: SATOH Fumiyasu  -- Home: http://www.sfo.jp (in Japanese only)
-- Mail: fumiya at net-thrust.com, samba.gr.jp, namazu.org or ...