web-dev-qa-db-ja.com

socat connect-connect "proxy" 2つのインバウンドTCP接続してファイアウォールサービスを公開しますか?

Socat(または同様のTCPポートリダイレクタ)を使用してPCでファイアウォールサービスを公開する方法を確認するのに少し苦労しています。

シナリオは次のとおりです。2台のクライアントマシン間でリッスンリッスン「プロキシ」/リダイレクタとして機能するサーバーPCがあります。サーバーは、必要な数のファイアウォールポートを開くことができ、パブリックIPを備えています。最初の「クライアント」(プロキシサーバーへのアウトバウンド接続の確立など)で、クライアントA、ポート4200でサービスをホストしています。このPCは、インバウンドTCP)のみを許可するファイアウォールの背後にあります。 =以前のアウトバウンド接続に基づく接続。クライアントBが背後にあるファイアウォールについても同じことが言えます。

私がする必要があるのは、クライアントBがインターネットに面したTCPプロキシサーバーを介してクライアントAのポート42000にアクセスできるようにすることです。問題は、アウトバウンドTCP接続。リレーの両方のクライアントがアウトバウンド接続のみを許可するファイアウォールの背後にある場合、サーバーを介してTCP接続をリダイレクトするにはどうすればよいですか?下の図を参照してください。明確化が適切かどうかはわかります。

                  ------------
                 |   Server   |
                 |w/ public IP|
                  ------------
                 /            \
          {|<Firewall>|}    {|<Firewall>|}
                |                 |
          ----------          ----------        
         | Client A |        | Client B |
          ----------          ----------
       (hosting a service    (wanting to access
         on port 4200)         Client A port 4200)

アドバイスをいただければ幸いです。

3
slashp

何かのようなもの

「サーバー」の場合:

socat TCP4-LISTEN:10000 TCP4-LISTEN:4200

「クライアントA」について

socat TCP4:Server:10000 TCP4:localhost:4200

「クライアントB」について
Server:4200に接続するようにクライアントを構成します

または、SSHポートフォワーディングをご覧ください。

4
RedGrittyBrick

このタイプのシナリオ、特にRDP用に私が最初に個人的に開発した PortFusion を使用することもできます。

  server> PortFusion                ] 10000        [
client-a> PortFusion 4200 localhost - 10000 server [ 4200

これで、client-bはRDP用にserver:4200に接続できます。

重要な注意!!

グラフィカルセッション内から別のユーザーおよびNOTとしてclient-a(またはsocatまたはその他の何か)でPortFusionを開始する必要があります接続したいユーザーの-そうでないと、黒い画面やドロップなどが発生します。

私の答えがお役に立てば幸いです。

1
Cetin Sert