我有一个提供者 (A) 想通过传入的 TCP 连接向我们发送数据。不幸的是,消费服务 (B) 无法接收入站 TCP 连接。此外,它没有静态 IP,这是另一个要求。
解决此问题的一种方法是将传入 TCP A 端口连接到另一个 TCP 端口 B 的服务,以便消费者可以与 B 建立出站连接。
这不是一个独特的问题[1] [2],使用 socat 我可以做出非常接近我想要的东西:
socat -d -d -d -u TCP4-LISTEN:PORT-A,reuseaddr TCP4-LISTEN:PORT-B,reuseaddr
但是,这样做存在以下问题:
- 如果 B 断开连接,则无法重新连接。使用
TCP4-LISTEN:PORT-B,reuseaddr,fork
,它可以连接但不接收数据。 - 在 A 建立连接之前 B 无法连接(可克服)
- 只能建立一个连接
PORT-B
(可克服)
有没有办法调整命令,使其成为“永久”并抵抗失败?