我有一个提供商(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
,它可以连接但不接收数据。 - B在A建立连接之前无法连接(可挂起)
- 只能建立一个
PORT-B
(可克服的)连接
有没有一种方法可以调整命令,使其变得“稳定”并抵抗故障?