Vine Linux バグトラッキングシステム - Vine Linux
課題の詳細を表示
0000665Vine Linux1 バグ公開2009-02-12 00:152009-09-02 13:51
ats7 
 
不明 
完了却下 
4.2 
 
wget-1.10.2-0vl1.2、glibc
0000665: wgetがDNSラウンドロビンに対応していない
<BTS:661>から分けました。

> 大本@京都産業大学です.
>
> > また、wget(glibc)がDNSラウンドロビンを正しく扱えない問題もあるようです
> > が、
> > いかがでしょうか。
> >
> > wget breaks round-robin dns?
> > http://www.mail-archive.com/wget@sunsite.dk/msg09235.html [^]
>
> wgetの挙動を確認してみました.
> 一般ユーザ権限でwgetを動かした場合と,root権限で動かした場合で挙動が違い
> ますね.

当方の環境(vine 4.x, wget 1.10.2)では root でもラウンドロビン
されませんでした。wireshark で見てみるとレスポンスは確かにラウンド
ロビンされているのですが。。。

Resolving www.mplayerhq.hu... 216.14.112.110, 74.86.94.210, 82.103.137.100, ...
Caching www.mplayerhq.hu => 216.14.112.110 74.86.94.210 82.103.137.100 193.225.187.202 199.125.85.41 213.144.138.186 69.63.177.230 81.91.100.172 85.214.85.226 131.246.120.85 143.248.234.110
Resolving www.mplayerhq.hu... 216.14.112.110, 74.86.94.210, 82.103.137.100, ...
Caching www.mplayerhq.hu => 216.14.112.110 74.86.94.210 82.103.137.100 143.248.234.110 193.225.187.202 199.125.85.41 213.144.138.186 69.63.177.230 81.91.100.172 85.214.85.226 131.246.120.85
Resolving www.mplayerhq.hu... 216.14.112.110, 74.86.94.210, 82.103.137.100, ...
Caching www.mplayerhq.hu => 216.14.112.110 74.86.94.210 82.103.137.100 131.246.120.85 143.248.234.110 193.225.187.202 199.125.85.41 213.144.138.186 69.63.177.230 81.91.100.172 85.214.85.226
Resolving www.mplayerhq.hu... 216.14.112.110, 74.86.94.210, 82.103.137.100, ...
Caching www.mplayerhq.hu => 216.14.112.110 74.86.94.210 82.103.137.100 85.214.85.226 131.246.120.85 143.248.234.110 193.225.187.202 199.125.85.41 213.144.138.186 69.63.177.230 81.91.100.172
Resolving www.mplayerhq.hu... 216.14.112.110, 82.103.137.100, 74.86.94.210, ...
Caching www.mplayerhq.hu => 216.14.112.110 82.103.137.100 74.86.94.210 85.214.85.226 131.246.120.85 143.248.234.110 193.225.187.202 199.125.85.41 213.144.138.186 69.63.177.230 81.91.100.172
Resolving www.mplayerhq.hu... 216.14.112.110, 82.103.137.100, 74.86.94.210, ...
Caching www.mplayerhq.hu => 216.14.112.110 82.103.137.100 74.86.94.210 81.91.100.172 85.214.85.226 131.246.120.85 143.248.234.110 193.225.187.202 199.125.85.41 213.144.138.186 69.63.177.230
Resolving www.mplayerhq.hu... 216.14.112.110, 74.86.94.210, 82.103.137.100, ...
Caching www.mplayerhq.hu => 216.14.112.110 74.86.94.210 82.103.137.100 81.91.100.172 85.214.85.226 131.246.120.85 143.248.234.110 193.225.187.202 199.125.85.41 213.144.138.186 69.63.177.230
Resolving www.mplayerhq.hu... 216.14.112.110, 74.86.94.210, 82.103.137.100, ...
Caching www.mplayerhq.hu => 216.14.112.110 74.86.94.210 82.103.137.100 69.63.177.230 81.91.100.172 85.214.85.226 131.246.120.85 143.248.234.110 193.225.187.202 199.125.85.41 213.144.138.186
Resolving www.mplayerhq.hu... 216.14.112.110, 74.86.94.210, 82.103.137.100, ...
Caching www.mplayerhq.hu => 216.14.112.110 74.86.94.210 82.103.137.100 69.63.177.230 81.91.100.172 85.214.85.226 131.246.120.85 143.248.234.110 193.225.187.202 199.125.85.41 213.144.138.186
Resolving www.mplayerhq.hu... 216.14.112.110, 74.86.94.210, 82.103.137.100, ...
Caching www.mplayerhq.hu => 216.14.112.110 74.86.94.210 82.103.137.100 213.144.138.186 69.63.177.230 81.91.100.172 85.214.85.226 131.246.120.85 143.248.234.110 193.225.187.202 199.125.85.41

> 一般ユーザ権限だと,複数回動かしても同じサーバに接続に行ってしまいます.
>
> 1回目のwget:
> www.mplayerhq.hu をDNSに問いあわせています... 69.63.177.230,
> 213.144.138.186, 85.214.85.226, ...
> Caching www.mplayerhq.hu => 69.63.177.230 213.144.138.186 85.214.85.226
> 193.225.187.202 81.91.100.172 143.248.234.110 199.125.85.41
> 131.246.120.85 74.86.94.210 216.14.112.110 82.103.137.100
> www.mplayerhq.hu|69.63.177.230|:80 に接続しています... 接続しました。

> ところが,root権限でwgetを動かすと以下のようになります.
>
> (rootにて)4回目のwget:
> Resolving www.mplayerhq.hu... done.
> Caching www.mplayerhq.hu => 216.14.112.110 131.246.120.85 82.103.137.100
> 74.86.94.210 143.248.234.110 193.225.187.202 199.125.85.41
> 213.144.138.186 69.63.177.230 81.91.100.172 85.214.85.226
> Connecting to www.mplayerhq.hu[216.14.112.110]:80... connected.

> root権限での挙動が違うのは一体.....
> 私には,wgetのバグなのかresolver (glibc)のバグなのか判断がつきかねます.

root での実行結果が「Resolving www.mplayerhq.hu... done.」となって
いて、一般ユーザのものと違いますが、実行されたコマンドは同じでしょうか?
~/.wgetrc の影響は無いでしょうか?

もしよろしければ、以下のページで公開されているテストプログラム(roundrobin)
の実行結果を教えていただけますか?

Curl: DNS round robin resolving tests
http://curl.haxx.se/mail/lib-2005-11/0008.html [^]

当方の環境では実行ユーザに関係無く、大体以下のような結果でした。

----
% ./roundrobin bad11.haxx.se
---Check 5 runs of getaddrinfo(bad11.haxx.se)
--- 4 different IPs were returned
IP index 0
 4040404 5 times (100%)

IP index 1
 2020202 5 times (100%)

IP index 2
 3030303 3 times (60%)
 1010101 2 times (40%)

IP index 3
 3030303 2 times (40%)
 1010101 3 times (60%)

---Check 5 runs of gethostbyname(bad11.haxx.se)
--- 4 different IPs were returned IP index 0
 4040404 1 times (20%)
 2020202 2 times (40%)
 3030303 1 times (20%)
 1010101 1 times (20%)

IP index 1
 4040404 1 times (20%)
 2020202 1 times (20%)
 3030303 2 times (40%)
 1010101 1 times (20%)

IP index 2
 4040404 2 times (40%)
 2020202 1 times (20%)
 3030303 1 times (20%)
 1010101 1 times (20%)

IP index 3
 4040404 1 times (20%)
 2020202 1 times (20%)
 3030303 1 times (20%)
 1010101 2 times (40%)
----
設定されていません。
課題の履歴
2009-02-12 00:15ats7新規課題
2009-02-12 18:44anonymousコメント追加: 0003022
2009-02-16 18:16iwaimパッケージwget-1.10.2-0vl1.2 => wget-1.10.2-0vl1.2、glibc
2009-02-16 18:16iwaimコメント追加: 0003023
2009-09-02 13:51kazutaka状態新規 => 完了
2009-09-02 13:51kazutaka解決状況不明 => 却下
2009-09-02 13:51kazutakaコメント追加: 0003024

コメント
(0003022)
anonymous   
2009-02-12 18:44   
大本@京都産業大学です.

> 当方の環境(vine 4.x, wget 1.10.2)では root でもラウンドロビン
> されませんでした。wireshark で見てみるとレスポンスは確かにラウンド
> ロビンされているのですが。。。

申し訳ありません.rootと一般ユーザで実行されているバイナリが違ってました.

[root@patpc201 tmp]# which wget
/usr/local/bin/wget
[root@patpc201 tmp]# /usr/local/bin/wget --help
GNU Wget 1.8.1, a non-interactive network retriever.
Usage: wget [OPTION]... [URL]...
.......
[root@patpc201 tmp]# /usr/bin/wget --help
GNU Wget 1.10.2, 非対話的ネットワーク転送ソフト
使い方: wget [オプション]... [URL]...
.....

Vine標準の/usr/bin/wgetを使うと,ラウンドロビンされない事を確認しました.

> もしよろしければ、以下のページで公開されているテストプログラム
> (roundrobin)
> の実行結果を教えていただけますか?

こんな感じです.ほぼ,同じ結果になりますね.

[root@patpc201 tmp]# ./roundrobin bad11.haxx.se
---Check 5 runs of getaddrinfo(bad11.haxx.se)
--- 4 different IPs were returned
IP index 0
 1010101 5 times (100%)

IP index 1
 3030303 5 times (100%)

IP index 2
 2020202 3 times (60%)
 4040404 2 times (40%)

IP index 3
 2020202 2 times (40%)
 4040404 3 times (60%)

---Check 5 runs of gethostbyname(bad11.haxx.se)
--- 4 different IPs were returned
IP index 0
 1010101 1 times (20%)
 3030303 1 times (20%)
 2020202 1 times (20%)
 4040404 2 times (40%)

IP index 1
 1010101 2 times (40%)
 3030303 1 times (20%)
 2020202 1 times (20%)
 4040404 1 times (20%)

IP index 2
 1010101 1 times (20%)
 3030303 1 times (20%)
 2020202 2 times (40%)
 4040404 1 times (20%)

IP index 3
 1010101 1 times (20%)
 3030303 2 times (40%)
 2020202 1 times (20%)
 4040404 1 times (20%)

問題の本質は,glibc中のgetaddrinfo()がRFC3484 rule 9に準拠した結果,名前解決されたIPアドレスがソートされて返されるためのようです.debianでは,かなり議論されたみたいです.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=438179 [^]

私が「ラウンドロビンされる」と報告したwgetは,バージョンは古くてgethostbyname()を使っているために結果的にラウンドロビンされて,Vine標準のwgetは新しくてgetaddrinfo()を使っている(IPv6対応かな?)ために,ラウンドロビンしてくれないということなのでしょう.
結果的に,debianではIPv4アドレスについてはソートせずに返すというパッチを適用するという方向のようです.現在の安定版に反映されているかどうかは分かりませんが,サーバ運営側からすれば負荷不均衡は嬉しくないので,パッチに問題が見つからない限りはバックポートされるでしょうね.

Vine 4.2では,errataを発行するべきかどうかは分かりません.
なにせglibcですし,一番問題が大きそうなFirefoxはgetaddrinfoからの結果を自前でラウンドロビンしてるので修正しても殆ど関係しないようなので.(firefoxのラウンドロビンの件はどこで見かけたか忘れました,すいません)
次期Vine5.xで,ケアされる位で良いのかも知れません.

以上
(0003023)
iwaim   
2009-02-16 18:16   
関連パッケージにglibcを追加しました。
(0003024)
kazutaka   
2009-09-02 13:51   
最後のリプライから半年以上経ちますが、その後動きが
ありませんので、バグレポートの有効期限(下記 URL 参照)
に従い、却下として閉じておきます。

(URL: http://trac.vinelinux.org/wiki/BTSHouseKeeping [^])

尚、必要に応じてこのレポートを再度オープンすることも
できますので、その後の状況の変化や追加の情報等があれば、
引き続きこのレポートにリプライをお願いします。