У мене є провайдер (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
(переможного) можна встановити лише одне з'єднання
Чи є спосіб налаштувати команду таким чином, щоб вона стала "постійною" і стійкою до відмов?