Shinya TAKEBAYASHI
takeb****@oss*****
2008年 9月 24日 (水) 10:19:19 JST
秋山 様 竹林です. 情報頂きまして,ありがとうございます. 頂いた情報をみると,UltraMonkey-L7(以下,UM-L7)の内部処理による 現象と考えられます. > ■原因と思われるもの > apacheが受け取るパケットをキャプチャーとaccess_logを見ていて > 判ったのが、keep-alive の指定があると最初のリクエストについては > X-Forwarded-For が設定されてるが、2件目以降のリクエストには > X-Forwarded-For が設定されていませんでした。TCP/IPの > コネクションが切れてから、再度のリクエストでは > X-Forwarded-For が設定されていました。 > > このことから、最初のリクエストついては、Ultramonkey の > cinsertモジュールが X-Forwarded-For を設定しているが、 > 2件目以降のリクエストは keep-alive の効果で > 最初のリクエストが利用したTCP/IPのコネクションを > 継続して利用しているので、 Ultramonkey を経由していない。 > そのために、X-Forwarded-For を設定できない。 秋山様の解析と推測のとおりで,keepalive が有効になっている場合, 上段での解説のとおり 2 つめ以降のリクエストについては X-Forwarded-For は付与されません. UM-L7 では,TCP/IP のコネクションをひとつの単位として 接続先を決定する処理を行います. もし接続先リアルサーバを示す cookie が存在すればそのサーバを, cookie が無ければ新規に接続先リアルサーバを割り当てます. # X-Forwarded-For を付与するのが,この段階です 一度接続先が決定したコネクション上の通信については, コネクションが切断されるまで接続先リアルサーバを判定する(X-Forwarded-For を 付与する)ルートを通らずに転送を行っています. このため,keepalive が有効になっている場合の 2 つめ以降の リクエストについては,X-Forwarded-For が付与されない事象が発生します. スループットを優先する実装としたため,現状は上記の実装となっています. > ■今後の展望 > 今回は、access_logへクライアントのIPアドレスを記録して欲しいので > mod_rpaf (http://stderr.net/apache/rpaf/) を導入しようと考えています。 ご期待に添えず,すみません. 改善の余地がある機能と考えますので,改善するよう検討します. ----------------------------------------------------------- Shinya TAKEBAYASHI E-mail: takeb****@oss***** GPG ID: 395EFCE8 GPG FP: 58B2 B5D0 A692 1BD8 328B E31E E027 AC35 395E FCE8 ----------------------------------------------------------- masahiro akiyama <akiya****@techb*****> wrote in message <48D98****@techb***** > *** Subject: Re: [Ultramonkey-l7-users 135] cinsertモジュールの--forwarded-forオ プション *** Date: 2008/09/24 9:23:33 > 竹林様 > > 秋山です。 > > 投稿させていただいてから、こちらでも原因の究明を行っていたので > 分かった範囲で報告させていただきます。 > > ■X-Forwarded-For が設定されている場合とされない場合の傾向 > access_logを見ていて気になったのが、連続したアクセスの場合に > 最初のアクセスにはX-Forwarded-Forが設定されているが、 > 2件目以降はX-Forwarded-Forが設定されていない場合が多い。 > 1,2秒程度の間隔があるとX-Forwarded-Forが設定されている。 > > ■原因と思われるもの > apacheが受け取るパケットをキャプチャーとaccess_logを見ていて > 判ったのが、keep-alive の指定があると最初のリクエストについては > X-Forwarded-For が設定されてるが、2件目以降のリクエストには > X-Forwarded-For が設定されていませんでした。TCP/IPの > コネクションが切れてから、再度のリクエストでは > X-Forwarded-For が設定されていました。 > > このことから、最初のリクエストついては、Ultramonkey の > cinsertモジュールが X-Forwarded-For を設定しているが、 > 2件目以降のリクエストは keep-alive の効果で > 最初のリクエストが利用したTCP/IPのコネクションを > 継続して利用しているので、 Ultramonkey を経由していない。 > そのために、X-Forwarded-For を設定できない。 > > この判断は妥当なものでしょうか? > > > ■今後の展望 > 今回は、access_logへクライアントのIPアドレスを記録して欲しいので > mod_rpaf (http://stderr.net/apache/rpaf/) を導入しようと考えています。 > > > 以上 > > Shinya TAKEBAYASHI さんは書きました: > > 秋山 さま > > > > > > 竹林です. > > 初めまして. > > > > 実家に帰省していたため返信が遅れました. > > ご質問の件について,こちらでも挙動を確認してみます. > > > > 確認の結果と本来の挙動についてまとめたものを,後ほどお送り致しますので > > 少し時間を頂けますか. > > > > よろしくお願い致します. > > > > ----------------------------------------------------------- > > Shinya TAKEBAYASHI > > > > E-mail: takeb****@oss***** > > GPG ID: 395EFCE8 > > GPG FP: 58B2 B5D0 A692 1BD8 328B E31E E027 AC35 395E FCE8 > > ----------------------------------------------------------- > > > > masahiro akiyama <akiya****@techb*****> wrote in message <48D34****@techb***** > > *** Subject: [Ultramonkey-l7-users 135] cinsertモジュールの--forwarded-forオ プシ > > ョン > > *** Date: 2008/09/19 15:56:40 > >> はじめまして。秋山と申します。 > >> > >> さっそくですが、cinsertモジュールの--forwarded-forオプションの > >> 挙動について教えてください。 > >> > >> リアルサーバにapacheを用いていて、apacheのaccess_logにクライアントの > >> IPアドレスを記録させたいと思っています。 > >> > >> > >> l7directord.cf には > >> module=cinsert --cookie-name 'moneky' --reschedule --forwarded-for > >> > >> リアルサーバのapacheのログフォーマットの指定を > >> LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" > >> \"%{User-Agent}i\"" combined > >> > >> としています。 > >> > >> クライアントからアクセスしてみると、クライアントのIPアドレスが > >> apacheのaccess_logに出る場合と"-"の場合があります。PHPのページに > >> アクセスした場合にはIPアドレスが出ることが多いのですが、 > >> 出ないこともあります。PHPの中でx-forwarded-forの値をダンプしてみると > >> アクセスログの出方と一致していました。 > >> 一方、cssや画像ファイルなどの静的ファイルへのアクセスでは > >> "-"の場合が多く、稀にIPアドレスが出ています。 > >> > >> クライアントからのアクセスについては、PHPページと静的ファイル共に > >> アクセスログにはIPアドレスを記録することはできませんでしょうか。 > >> > >> インストールには ultramonkey-l7-2.0.0-0-rpm.tar.gz を用いました。 > >> > >> よろしくお願いします。 > >> > >> -- > >> > >> ---------+---------+---------+---------+---------+---------+---------+----- --- > > -+ > >> 株式会社 テックビート > >> 秋山 昌宏 > >> akiyama masahiro > >> > >> mailto:akiya****@techb***** > >> > >> _______________________________________________ > >> Ultramonkey-l7-users mailing list > >> Ultra****@lists***** > >> http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-users > > > > > > > > > -- > > ---------+---------+---------+---------+---------+---------+---------+-------- -+ > 株式会社 テックビート > 秋山 昌宏 > akiyama masahiro > > mailto:akiya****@techb***** > PHS:070-6653-9769 > > 〒113-0034 > 東京都文京区湯島3-2-14-222 > TEL:03-5817-0366 > FAX:03-5817-0367