- - PR -
delegateでSSL対応リバースプロキシの設定方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-07-05 18:12
はじめまして。 質問の場所がこちらかセキュリティーかで悩みましたが ネットワーク関係のほうが強いと思いますので こちらに登校させていただきました。 (クライアント )--SSL(https)--(ルーター)---(delegate)---http----(弊社サーバ) ------------internet--------- --------------------社内---------------------- 外部のクライアントから弊社のサーバにアクセスする場合に internet上の通信はSSLでセキュリティをかけていと考えています。 現在の構成ですが、グローバルの固定IPは1つあり、ルータが接続されています。 ルータの外部アドレスがグローバル固定IPの60.x.x.5 内部アドレスは172.16.20.1 で ルータの設定は60.x.x.5のPort10000 にはいってきたものを内部側のPC172.16.20.2のPort10000へ転送します。 そのPCにはdelegateがPort10000で動いていて同じPCのPort10001へ 転送したいと考えています。 設定は下記のとおりですが -P10000 SERVER=https FCL="sslway" MOUNT="/* ​http://localhost:10001/*​ vhost=-172.16.20.2" REACHABLE="*" RELIABLE="*" REMITTABLE="*" RELAY="proxy:*:*:*" ADMIN=user@host.domain.jp delegateがうけ転送を60.x.x.5:10000へ行おうとしています。 172.16.20.2:10000へ接続した場合は172.16.20.2:10001に転送されます。 また MOUNT="/* ​http://localhost:10001/*​ vhost=-60.x.x.5" としても変わらず60.x.x.5へ転送しようとします。 どのようにすれば 60.x.x.5:10000へ入ってきたものを、172.16.20.2:10001 へ転送できるでしょうか? | ||||
|
投稿日時: 2007-07-06 06:44
構成を、確認します。
書き込みからは、このように解釈できますが、 どうも正常に動く気配がないので、解釈が間違っているかもしれません。
まず、クライアントからは443で送られてくるので、 どこかで443から10000への変換を行っているはずです。 ルーターとDelegateは同一セグメント上にあるので、ルーターで変換しているのでは? また、HTTPサーバーのIPアドレスが不明ですので、設定の整合性が見えません。 さらに、localhost:10001に転送する意図が見えません。 Mountの記述方法は、"/* port://<転送先URL>* vhost=-<転送元URL>" ですので、 -P10000 Server=https Mount="/* http://<実サーバーIP>/* vhost=-172.16.20.2" Reachable="<実サーバーIP>" のようではないかと。 _________________ _福田太郎_ | ||||
|
投稿日時: 2007-07-06 10:19
たらお様 レスありがとうございます。
書き込みがわかりにくいようで申し訳ありませんでした。 行いたいことをたらお様の書き込みを元に変更を掛けてみました。 コード: -------------------------------------------------------------------------------- クライアント(https://60.x.x.5:10000 へ接続) ↓ │ (インターネット) │ │60.x.x.5(ルータ外部アドレス) ルーター ↓172.16.20.1(ルータ内部アドレス) │ │ |172.16.20.2:10000 Delegate │ │ │IP 172.16.20.2:10001 HTTPサーバー -------------------------------------------------------------------------------- ルータは 60.xx.xx.5:10000で入ってきたものを delegatePC 172.16.20.2:10000 へ転送しています。 delegateとHTTPサーバは同じPCです。 クライアントが発したSSLデータをdelegateでデコードし 同じPCの別ポートのhttpサーバソフトへ転送したいと考えています。 (httpサーバソフトがSSL機能を持たないた) 現在は delegateが受けてSSLの複合化を行い 複合化したデータを60.x.x.5:10000に転送しようとしています。 ためしにdelegateのPCにLANカード2枚ざしし アドレスを60.xx.xx.6にふり クロスケーブルで 別のPC(IP 60.xx.xx.5)をつなげると 正常にデコードされ受信しています。 このためMOUNTの仕方問題だと思うのですが MOUNT="/* http://localhost:10001/*; vhost=-60.xx.xx.5" MOUNT="/* http://localhost:10001/*; vhost=-172.16.20.2" MOUNT="/* http://172.16.20.2:10001/*; vhost=-60.xx.xx.5" MOUNT="/* http://172.16.20.2:10001/*; vhost=-172.16.20.2" MOUNT="http://172.16.20.2:10001/*; https://60.xx.xx.5:10000" など、いろいろと試していますが一向にhttp://172.16.20.2:10001/へ転送してくれない状況です。 | ||||
|
投稿日時: 2007-07-07 06:29
詳しい説明ありがとうございます。ポイントがつかめました。
クライアントから、IP直のアクセスをしていますね。これが挙動の原因です。 本来は、クライアントから https://aaa.bbb.co.jp/ にアクセスしてもらい、 インターネット上では aaa.bbb.co.jp → 60.x.x.5 の解決をして、 内部ネットワークでは aaa.bbb.co.jp → 172.16.20.2 の解決をします。 クライアントのパケットがルーターに到達時には、 Ethernetフレームヘッダ{ルーターMACアドレス|前ホップMACアドレス} IPパケットヘッダ{クライアントIPアドレス|60.x.x.5} TCPシーケンス{SYN/ACK|WINDOWサイズ|etc} SSL/HTTPヘッダ{GET/POST|HTTP:60.x.x.5|データ} という状態ですが、ルーターでNAT後は、 Ethernetフレームヘッダ{DelegentMACアドレス|ルーターMACアドレス}*元先を書換 IPパケットヘッダ{クライアントIPアドレス|172.16.20.2}*送信先を書換 TCPシーケンス{SYN/ACK|WINDOWサイズ|etc}*変更なし SSL/HTTPヘッダ{GET/POST|HTTP:60.x.x.5|データ}--▲変更なし というルーターの正常なNAT動作により、 EthernetフレームヘッダとIPパケットヘッダが書き換わります。 ところが、▲HTTPサーバーのIPアドレスは、もちろんそのままです。(SSL暗号状態) これが、DelegateでSSLデコード後は、 Ethernetフレームヘッダ{ルーターMACアドレス|DelegateMACアドレス}*元先を書換 IPパケットヘッダ{クライアントIPアドレス|60.x.x.5}*HTTPヘッダを元に書換 TCPシーケンス{SYN/ACK|WINDOWサイズ|etc}*そのまま HTTPヘッダ{GET/POST|HTTP:60.x.x.5|データ}*そのまま という状態になっていると思われます。 いろいろとMountをお試しのようですが、 MOUNT="http://172.16.20.2:10001/*; https://60.xx.xx.5:10000" これが一番Mountイメージとしては近いかと思われます。 -P10000 MOUNT="http://172.16.20.2:10001/*; vhost=-https://60.xx.xx.5" とかではどうでしょう。 いちどDelegateでSLLデコードしたパケットを、 Delegateがもういちど処理してくれれば、成功するはずです。 あと、Delegate/HTTPサーバーのroutingテーブルに route add 60.x.x.5 255.255.255.255 127.0.0.1 を書くとかの 小技も使えるかもしれません。 _________________ _福田太郎_ |
1