У меня есть провайдер (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
(преодолимо)
Есть ли способ настроить команду так, чтобы она стала «постоянной» и устойчивой к сбоям?