[Ultramonkey-l7-users 429] Re: SSLの振り分けと接続元IPアドレスの取得について

Back to archive index

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
>





Ultramonkey-l7-users メーリングリストの案内
Back to archive index