socatがリスナー接続を受信するまでターゲット接続を開くのを防ぐ方法はありますか?

socatがリスナー接続を受信するまでターゲット接続を開くのを防ぐ方法はありますか?

断続的に増減するターゲット(クラウドマイクロサービス環境)に対してsocatをサーバーとして実行したいと思います。

私はsocatがリスニングし、リスナー接続が行われたらポートを開くことを望みます。 (ソキャットサーバー)

私の質問は次のとおりですsocatがリスナー接続を受信するまでターゲット接続を開くのを防ぐ方法はありますか?

答え1

あなたの質問を理解するならば、これはデフォルトです。最初のソケットは、リスニング中に開いてブロックされます。 2 番目に指定された接続は、接続が確立された場合にのみ試行されます。テストできます。たとえば、ポート60127でリッスンしてポート60128に接続するシェルでは、

$ socat tcp-l:60127,reuseaddr tcp:localhost:60128

待機をブロックします。別のシェルから接続してみてください。

$ telnet localhost 60127
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

失敗し、元のコマンドも同じです。

socat[30293] E connect(3, AF=2 127.0.0.1:60128, 16): Connection refused

ただし、最初の socat を繰り返す場合は、ポート 60128 に別の socat を追加します。

$ socat tcp-l:60128,reuseaddr -

これでTelnetが機能します。したがって、明らかに最初のsocatは、必要に応じて2番目の名前付き接続を試みません。

関連情報