Установите соединение TCP Socket, используя промежуточный хост - PullRequest
1 голос
/ 22 февраля 2012

Мне нужно установить сокет-соединение (TCP) между двумя хостами (скажем, host1 и host2) в Java. Но похоже, что я не могу этого сделать из-за брандмауэра. Хотя существует третий хост (скажем, host3), который доступен как с host1, так и с host2, и я думаю, что он может использоваться в качестве промежуточного звена для этого соединения.

Итак, в основном я хочу отправить запрос с host1 (клиент) на host3, который перенаправляет мой запрос на host2 (сервер).

Не могли бы вы дать мне знать, как этого можно достичь?

Заранее спасибо!

1 Ответ

3 голосов
/ 22 февраля 2012

Вы можете установить SSH-туннель с

ssh host3 -L4321:host2:6523

, а затем подключитесь с host1 к host3 через порт 4321. Это будет эффективно перенаправлено на порт 6523 на host2.


Аналогичным вариантом может быть предоставление ssh сервера SOCKS.

ssh host3 -D 6543

и затем используйте curl вместо wget.

Тогда вы можете сделать

curl http://host2/foo/bar --socks4 localhost:6543

(непроверенный, --socks4a и --socks5 также может быть вариантом ...)

Эта команда ssh создает сервер SOCKS локально, который туннелирует попытки подключения к серверу ssh, который, в свою очередь, выполняет их.

...