我想将 socat 作为服务器运行 - 针对间歇性上升和下降的目标(云微服务环境)。
我希望 socat 进行侦听 - 并在获得侦听器连接时打开端口。 (socat 服务器)
我的问题是:有没有办法让 socat 在收到侦听器连接之前不打开目标连接?
答案1
如果我理解你的问题,这是默认的。第一个套接字打开并阻塞在监听中。仅当建立连接时,才会尝试第二个指定的连接。你可以测试一下。例如,在一个 shell 中监听端口 60127 并连接到端口 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:
$ socat tcp-l:60128,reuseaddr -
然后telnet就可以工作了。因此,显然第一个 socat 在需要时不会尝试第二个命名的连接。