野口@清澄白河です。 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