web-dev-qa-db-ja.com

ファイアウォールはポート443トラフィックのみを許可しますが、異なるポートでリッスンしているバックエンドに複数のサーバーがあります

私は業界のソフトウェア開発者であり、慣れていない大きな機能が不足している可能性があります。

私の開発者のPCには、ローカルIISポート443のサーバー、https WebサイトでホストされているWebサイトを使用するアプリがあります。次に、ソフトウェアの別の部分にJavaプロセスは別のポート8443でリッスンしています。これらは両方とも稼働しています。

しかし、実際の運用環境で私の前にあるのは、デフォルトでhttpsトラフィックであるポート443を通過するトラフィックのみを許可するファイアウォールです。 Javaアプリケーションがアプリケーションのネイティブ/デフォルトのトラフィックタイプをラップするhttpsトラフィックを送受信するための方法を用意したので、ファイアウォールのみを心配する必要はありません。特定のタイプのアプリケーショントラフィックの送受信を許可します.

問題は、1つのポート(443)からPCの別のポートにトラフィックを転送するようにファイアウォールまたはPCを構成するにはどうすればよいですか?すべてのトラフィックがファイアウォールのポート443に着信するこの状況を考えてください。その後、トラフィックをポート443に転送するようにしますIISサーバーおよび8443 myJavaAppListener、有効にするために何をすべきかこの?

1
Harvey Lin

(通常の/典型的な/ iptablesまたは類似のベースの)ファイアウォールでこれを行うことはできません。何らかのプロキシ/ロードバランサーが必要になります。 「ファイアウォールに相当する」デバイスは実際に接続を終了し(HTTPSの場合はすべてのドメインに適切な証明書を持っている)、実サーバーへの接続を作成してトラフィックをプロキシする必要があります。

もちろん、これはルーターで実行する必要のないジョブです。プロキシを設定し(Apache + mod_proxyを使用するのが一般的な方法の1つです)、ルーターを通過するすべてのポート443トラフィックをプロキシに転送します。プロキシでこれを内部的に管理します。これはかなり典型的な配置です。

リクエストごとに追加

A TCPストリームには送信元と宛先のIPポートがあります。要求はすべてのIPと任意のポートから送信される必要があるため、区別するために残されているのは宛先IP(単一のIP)だけです。ポート(1つしかありません)これは、パケットを調べても宛先がわからないため、iptablesでは不十分であることを意味します

解決策は、接続を終了し、要求されたリソース(HTTP/1.1以降の場合)を通知するHTTPヘッダーを読み取り、中間者として機能することです。

1
davidgo