vine-users ML アーカイブ



[vine-users:069225] glibc2.3.3: ipv6 のアドレス逆引きを bit label からnibble(4bit) へ

  • From: NOGUCHI Shoji <noguchi@xxxxxxxx>
  • Subject: [vine-users:069225] glibc2.3.3: ipv6 のアドレス逆引きを bit label からnibble(4bit) へ
  • Date: Mon, 13 Dec 2004 03:09:55 +0900
野口@清澄白河です。

Vine3.xを新規インストールしてから、ipv6のアドレス逆引きが重くなっていました。
今回、以下の手順で試したところ、無事に解決しましたので何かの参考になればと
思い、ご報告します。

1.bit labelからnibble(4bit)へ
【事象】
Vine2.6からVine3.xにしてから、ipv6アドレスの逆引きが重くなった。
使用しているdnsサーバはdjbdns-1.05。これにipv6パッチを当てている。

$ traceroute6 www.kame.net と実行するとroute毎に5秒程の待ち時間が
発生する。(おそらく、タイムアウトまで待っている)

$ traceroute6 -n www.kame.net のようにして実行すると、あっという間に
コマンドは終了する。

【調査】
tcpdumpでパケットを確認したところ、\[2001::1/128].ip6.arpa といった
bit labelでの逆引きを行っていることが判明した。
「bit labelは推奨されていないのでは?」と思い、http://www.rfc-editor.org
にて'IPv6 DNS' で検索してみると、rfc3364がヒットする。rfc3364をポイント
しているrfcが見当たらないので、これが最新と判断。
Recommendationをみると、

   (3) In either case, the reverse tree should use the textual
       representation described in [RFC1886] rather than the bit label
       representation described in [RFC2874].

とあるので「nibble(1.0.0.〜.1.0.0.2.ip6.arpa)で逆引きされるべきでは?」と
思うのですけど...
#glibcが間違えているような気がします。

glibcで提供されているlibresolv.so.2、libnss_dns.so.2あたりがあやしいと
踏み、Vine2.6と3.xのSRPMを取得して、展開する。
Vine3.0のglibc内を`ip6.arpa'で検索したところ、bit labelでの逆引きを
行っている箇所を発見。
 → ~/rpm/BUILD/glibc-2.3.3-200312301455/resolv/nss_dns/dns-host.c
一方、Vine2.6の同一ファイルを見るとnibble formatでの逆引きを行っていることが
確認できた。

【対処】
Vine3.x用のdns-host.cの該当個所をVine2.6用のそれで置き換えるpatchを作成し
(添付ファイル参照)、SPECファイルを修正してrpmbuildを実行。

自前で作成したglibcをInstallするのはたとえrpmパッケージであっても少し
恐い(実験用PCがあればそちらで実行するのですが...)ため、single user mode で
/lib/libnss_dns.so.2 のみを入れ換える。

【結果】
ipv6アドレスの逆引きがスムースに行われるようになりました。
非常に快適です。


2.どのRFCがrequires? 
glibcのChangeLogを見ると、

2003-10-26  Ulrich Drepper  <drepper@xxxxxxxxxx>
      * resolv/nss_dns/dns-host.c (_nss_dns_gethostbyaddr_r): Default
        reverse lookup format for IPv6 addresses is using bitstring and
        .ip6.arpa suffix.

とあり、dns-host.cの該当個所のコメントには

     /* XXX Maybe we need an option to select whether to use the nibble
         or the bitfield form.  The RFC requires the bitfield form so
         we use it.  */

とあるんですが、どのrfcがrequiresしているか御存じの方はいらっしゃいますで
しょうか?

-- 
NOGUCHI Shoji <noguchi@xxxxxxxx>
Key fingerprint = 231A C329 780F 9DA5 D092 CEBD 0D9F 4294 EB13 A205
URI = http://www.org3.net

Attachment: glibc-2.3.3-dns-host.patch
Description: Binary data