Kohei TANUMA
clamm****@gmail*****
2011年 7月 10日 (日) 22:43:29 JST
田沼です。 手元に環境がないのでちょっと違ってるかも知れませんが。 まずその環境だと、クライアントと Apache 間で SSL 暗号化されるので 間にある UltraMonkey-L7 で X-Forwarded-For を挿入するのは不可能です。 つまり、最後に挙げた設定が正しい設定です。 しかし、これだとご指摘の通り、Apache のアクセスログに残る IP アドレスは UltraMonkey-L7 の IP アドレスになります。 この問題を解決するため、UltraMonkey-L7 v3 からアクセスしてきたクライアントの IP アドレスをそのまま Apache に対しても見せる機能が追加されたのですが、 CentOS5.6 では使えないはずです。 ということで、解決策としては次の 2 つ。 1. クライアントと UltraMonkey-L7 間で HTTPS 通信を行い、UltraMonkey-L7 と Apache 間は HTTP 通信にし、X-Forwarded-For でクライアント IP アドレスを残す。 http://sourceforge.jp/projects/ultramonkey-l7/docs/uml7-administration_manual_3.0.0_ja/ja/5/uml7-administration_manual_3.0.0_ja.txt こちらの 7 にある SSL 設定ファイルを作成し、l7directord.cf に sslconfigfile として 設定すればいいはずです。 2. CentOS 5.6 から別の OS(※) に変更し、l7directord.cf の現在 masq と 書いてある部分を tproxy に変更し、クライアントの IP アドレスを透過させる。 (※) RHEL6.0, 6.1, Scientific Linux 6.0, Oracle Linux 6.0 あたり。 CentOS6.0 も来週くらいにはリリースされると思います。 理研がフライング公開してるみたいです。 http://ftp.riken.jp/Linux/centos/6.0/isos/x86_64/ 他にも手はあるかもしれませんが、ご確認下さい。 2011年7月10日19:37 <takep****@gmail*****>: > 竹内です。連続の質問で申し訳ありません。 > > SSLの振り分けについてなのですが、設定方法が良く分かりません。 > > やりたいことは、HTTPと同じように下記のように振り分けをしたい、 > ということなのですが…… > > ------------------------------------------------- > g.g.g.1:443 → l.l.l.11.443、l.l.l.12:443 > (g.g.g.nはグローバルIP、l.l.l.nはローカルIPアドレス) > ------------------------------------------------- > > サーバ構成は以下の通りです。 > ------------------------------------------------- > ・g.g.g.1 / l.l.l.1 UM-L7稼働サーバ > ・l.l.l.11 Webサーバ(リアルサーバ) > ・l.l.l.12 Webサーバ(リアルサーバ) > ------------------------------------------------- > > まず、l.l.l.11とl.l.l.12に通常と同じように、SSLの有効な証明書の > 設定をしました。(各ローカルサーバに共通で1ドメイン分のみです) > > (ssl.confにて、 >> <VirtualHost _default_:443> >> ServerName example.jp:443 > > ・SSLCertificateFile(Webサーバ証明書) > ・SSLCertificateKeyFile(秘密鍵) > ・SSLCertificateChainFile(チェーン証明書) > を指定しました) > > # openssl s_client -connect l.l.l.11:443 > # openssl s_client -connect l.l.l.12:443 > > を実行すると、 > >> Certificate chain >> (略) /O=example.jp/ >> (略) >> Verify return code: 0 (ok) > > と設定したFQDNが出ます。 > > この状態で、l7directord.cfに > ------------------------------------------------- > virtual = g.g.g.1:443 > real = l.l.l.11:443 masq 1 > real = l.l.l.12:443 masq 1 > module = sessionless --forwarded-for > service = https > ------------------------------------------------- > という記述を追加し、実行してみると、2分以上かかって > タイトルタグのみ出たり、すべて表示されたりする状況になりました。 > (接続元IPアドレスはl.l.l.1で、UM-L7のローカルIPが出ます) > > そこで、sslidモジュールに記述を変え、 > ------------------------------------------------- > virtual = g.g.g.1:443 > real = l.l.l.11:443 masq 1 > real = l.l.l.12:443 masq 1 > module = sslid --forwarded-for > service = https > ------------------------------------------------- > とすると、 > > ------------------------------------------------- > [ERR0201] Failed to add virtual service to l7vsd: `g.g.g.1:443 sslid ', > output: `PARSE ERROR: protocol module argument error(--proto-module): > Option error.' > ------------------------------------------------- > というエラーになります。 > > とりえあずマニュアルに記述のあった > ------------------------------------------------- > virtual = g.g.g.1:443 > real = l.l.l.11:443 masq 1 > real = l.l.l.12:443 masq 1 > module = sslid > service = https > ------------------------------------------------- > にすると、接続され、表示速度も問題ないのですが、アクセスログに > 記録されるのはUM-L7のローカルIPで、アクセスしてきたユーザのIPアドレスが > 分からない状態です。 > > アクセスしてきたユーザのIPアドレスをログに残るようにするには、 > どのように設定したら良いのでしょうか? > アドバイスをいただけましたら幸甚です。 > > 環境は、 > ・Ultramonkey-L7 V3.0.1(l7vsd、l7directord) > ・CentOS 5.6 > ・Apache2.2.3+MOD_SSL+mod_extract_forwarded > です。 > > 長くなってしまい、申し訳ありません。 > よろしくお願いいたします。 > > _______________________________________________ > Ultramonkey-l7-users mailing list > Ultra****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-users >