web-dev-qa-db-ja.com

元のクライアントIPとホスト名を保持しながら、ローカルホストでリバースプロキシを使用して複数のWebサーバーを公開する

私はWindowsServer2003でISAを使用して、同じマシンでホストされている複数のWebサーバーを公開しています。次のように設定します。

  • 127.0.0.1+外部IPにバインドされたISAHTTP/Sリスナー
  • IISは127.0.0.2にバインドされています
  • Apacheは127.0.0.3にバインドされています
  • 127.0.0.4にバインドされたPythonWebアプリケーション
  • 127.0.0.xにバインドされたカスタムアプリケーション

ISAで公開ルールを設定することにより、ホスト名に応じてリクエストを特定のサーバーにルーティングできます。 ISAは、元のクライアントIPと要求されたホスト名を保持することを可能にし、要求の検証、URLマッピング、書き換えとキャッシュなどの他の多くの機能を備えていました。

今、私はWindows Server 2008 R2を使用しています、ISAはここでは機能しません、TMGは巨大なPITAです(そして私のIPセットアップでもまったく機能しません-デフォルトのgw 10.255.255.1 、サブネットマスク255.255.255.255)、およびISAは、RPCおよびその他の内部ネットワークトラフィックに関しては一般的に難しいことが判明しました。したがって、特に次の場合に、同じことを行う方法を探しています。元のクライアントIPを保持することになります。特に独自のNDISドライバーをインストールし、サーバーの公開は正常に機能したため、有望に見えたFaststream IQ Proxyを試しましたが、クライアントIPは常に失われます。DelegateとSquidが候補になる可能性があります。ネットワークレイヤードライバーをインストールしないため、発信者のIPを保持することは不可能のようです。

私は現在、外部IPと127.0.0.1でIISを実行しており、リバースプロキシでARPを使用して他のサーバーを公開していますが、うまく機能せず、クライアントIPはまだ失われていますプロキシされたサーバーの場合。正直なところ、それはたわごとであり、IIS 7.5にはまだISAのような実行可能なリバースプロキシソリューションが含まれていないことを本当に残念に思います数年前。

ホスト名情報と元のクライアントIPを失うことなく、ローカルWebサーバーへのリクエストをリバースプロキシする、ISAのように、できれば適切なGUIを使用して(構成ファイルを使用することもできます)、同じWebサーバー公開効果をアーカイブするソフトウェアを知っている人はいますか? ?または、TMGをセットアップで機能させる運命にありますか?

1
Alexander Gräf

念のため、TMGはいくつかのトリックを使用してインストールできます。

  1. Microsoft Loopbackアダプター(hdwwiz)をインストールします

  2. ループバックアダプターのプライベートIP範囲(例:10.0.0.1/255.0.0.0、デフォルトGWなし)に静的アドレスを設定し、アダプターのTCP/IP設定でDNS登録を無効にします

  3. TMGをインストールします

  4. TMGをSP1にアップグレードするか、ブートストラップインストールを使用します

  5. オプション:DC/RODCに昇格

  6. オプション:サーバーがDNSの場合、「実際の」アダプターをHKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\PublishAddressesとして追加し、プライベートアドレスが公開されないようにします。

  7. バインドIIS with netsh http iplisten to 127.0.0.1 and 10.0.0.1

  8. TMGのサーバー公開ルールを使用して10.0.0.1を公開します

  9. ループバックアダプターに追加のアドレスを登録し、アプリケーションをアドレス(10.0.0.2、10.0.0.3など)にバインドして、TMGでも公開できるようにします。

ISAほどスムーズではありませんが、機能します。 DCにTMGをインストールすることはMicrosoftによってサポートされていないため、DCに昇格する前に、必ずTMGをインストールしてください。

1
Alexander Gräf

おそらく、実際のTCPヘッダーに元のIPを保持する必要はありません。多くのリバースプロキシ設定では、要求が行われた元のIPアドレスをHTTPヘッダーとして渡すことができます(を参照してください)。例: Squid構成ディレクティブforwarded_for 。)

mod_proxyを使用したApache もこのトリックを実行し、逆プロキシトラフィック用のX-Forwarded-Forヘッダーも追加します。マシン上ですでにApacheを実行しているので、これは便利かもしれません。

1