У меня есть сценарий, который требует использования TCP Relay. Прежде чем я приступил к написанию чего-то нестандартного, я хотел узнать, знает ли кто-нибудь о существующем программном обеспечении, которое может сделать это за меня.
У меня есть 2 устройства в разных сетях, которые не могут подключиться друг к другу. Назовем их сетями A и B. Эти устройства должны обмениваться данными, и они могут делать это через реле-посредник в сети C. A может подключаться к C, а B может подключаться к C. C не может подключаться ни к A, ни к B .
A -> C <- B
Идея такая:
Есть ли существующий инструмент, который может это сделать?
Если ваш ретранслятор работает под управлением Linux или любой UNIX-подобной ОС, вы можете использовать socat
(http://www.dest-unreach.org/socat/, он включен как пакет во многие дистрибутивы Linux). В простейшем виде вы можете запустить реле примерно так:
socat TCP4-LISTEN:12345 TCP4-LISTEN:54321
(где 12345
и 54321
порты, на которых сервер прослушивает каждое соединение). Один из клиентов подключает один порт, другой - другой порт, после чего происходит обмен данными в обоих направлениях. Если один компьютер отправляет данные до подключения другого, они буферизуются и отправляются после подключения.
Смотрите также здесь: socat connect-connect "прокси" два входящих TCP-соединения, чтобы открыть службу с брандмауэром?.