Туннелировать любой вид TCP-трафика через HTTP / s

Я ищу программное обеспечение для туннелирования RDP или другого двоичного TCP-трафика через туннель HTTPS. Поскольку у многих клиентов разрешены только HTTP/S (в брандмауэре открыты только порты 80 и 443).

но есть необходимость пересылать RDP (и другие протоколы) с машин в DMZ клиентам.

Function description7 просмотр большого описания функции

есть ли какое-либо программное обеспечение с открытым исходным кодом или enterprise для этой проблемы?

плохо решения

решения клавишу F5 большой ИС имеет проблему, что я должен создать конфигурацию соединения с этим программным обеспечением. Если бы это можно было сделать с помощью api, это было бы хорошим решением. Но я бы предпочел только получить компонент туннеля, не связывая целое программное обеспечение шлюза. Beacuse мне нужно создать туннели (1000ds) из моего собственного программного обеспечения и его необходимость ограничить доступ к туннелю разрешенному пользователю (идентифицирован сеансом cookie)

хорошие решения

http://http-tunnel.sourceforge.net/

Если бы было возможно, что клиент туннеля не будет выделенным сервером, а Java-апплет flash, запущенный в браузере клиентов, он бы соответствовал на 100% моим потребностям.

3 ответов


существует огромное количество проектов, которые туннелируют TCP через HTTP(Ы). Вам придется немного поработать, чтобы выбрать тот, который лучше всего соответствует вашим потребностям (и, вероятно, немного изменить его).

  • SuperTunnel (Java). Выглядит хорошо, они, кажется, дали некоторые мысли о том, как бороться с не-хорошо себя ведут прокси.

  • JHttpTunnel (Java). Порт gnu httptunnel, я думаю, использует ту же сеть протокол.

  • Нетти http Tunnel (Java, часть Netty, очень хорошая сетевая библиотека;пример кода). Я думаю, что для этого требуется как клиент, так и сервер использовать Netty, но помимо этого является заменой обычных сокетов в Netty.

  • ProxyChains (C, Unix, очень популярный)

  • GNU httptunnel (C, без поддержки HTTPS, это, вероятно, дедушка всех http туннелей)

  • узел-http-туннель (узел.в JS), Net:: HTTPTunnel (Perl),nRedir (Python), штопор, htunnel,...

Я думаю, что SuperTunnel и JHttpTunnel могут быть включены в апплет или собственное приложение Java на стороне клиента, им не нужно работать как автономные прокси.

Netty также сделает это, но (я думаю) это требует, чтобы ваш сервер также используйте Netty: другими словами, он позволяет заменить обычный TCP connect() на сервер, использующий Netty с TCP-over-HTTP connect(), но не прокси произвольных подключений к другим серверам (если вы пишете свой собственный простой прокси).


Если вы находитесь в мире windows, я настоятельно рекомендую взглянуть на службу Windows 2008/2008R2/2012 SSTP VPN. Он использует порт 443, и может быть совместно с IIS (на 443). Он работает как шарм на Windows Vista / 7 / 8. Я слышал о решениях mac OSX, но еще не там.

однако есть старое доброе решение SSH.

Если на linux, просто установите openssh-сервер. Если в windows, получить и установить сервер OpenSSH (например, copSSH от itefix https://www.itefix.no/). Измените порт на 443 вместо 22 по умолчанию.

на стороне клиента можно использовать шпатлевку (http://www.chiark.greenend.org.uk / ~sgtatham/putty/download.html) или Китти (http://kitty.9bis.net/) в windows или любом SSH-клиенте в любой ОС для подключения к вашему серверу через порт 443 (где ваш SSH-сервер прослушивает).

инструкции по туннелированию через шпатлевку, например, можно найти на нескольких сайтах:

всегда помните, что вы должны указать на свой локальный хост, чтобы сделать это.

на Windows есть также MyEnTunnel (http://nemesis2.qx.net/pages/MyEnTunnel ) упростить процедуру конфигурации тоннеля и поддержка.

использование этого туннеля в браузере чрезвычайно просто: Просто скажите своему браузеру, что у вас есть прокси-сервер socks на локальном порту (e.h. localhost 8080), который вы только что настроили в своем клиенте (putty, kitty, myentunnel или что-то еще).


Я написал один под названием sshh. http://sourceforge.net/projects/sshh/

Я немного спятил, это на самом деле позволяет вам делать соединения назад через него.