Port-Forwarding
有沒有辦法讓 socat 在收到偵聽器連接之前不打開目標連接?
我想將 socat 作為伺服器執行 - 針對會間歇性上升和下降的目標(雲微服務環境)。
我希望 socat 監聽 - 並在它獲得監聽器連接時打開埠。(一個socat伺服器)
我的問題是:有沒有辦法讓 socat 在收到偵聽器連接之前不打開目標連接?
如果我理解您的問題,這是預設設置。第一個套接字打開並在監聽中阻塞。只有在建立連接時,才會嘗試第二個連接。你可以測試一下。例如監聽 60127 埠並在一個 shell 中連接到 60128 埠:
$ socat tcp-l:60127,reuseaddr tcp:localhost:60128
它將阻止等待。在另一個 shell 中嘗試連接:
$ 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 tcp-l:60128,reuseaddr -
然後telnet就可以了。所以,很明顯,第一個 socat 直到需要時才嘗試第二個命名的連接。