Введение

Здесь описывается программа, с помощью которой вы сможете удаленно подключиться к своему домашнему компьютеру из сети Интернет (например через терминальное соединение) не имея внешнего (реального) IP адреса на домашнем компьютере, создавать tcp прокси соединения, перекидывающие коннекты с одной машины на другую. Если вам, когда либо приходилось с этим сталкиваться, возможно эта заметка вам поможет.

Описание

Будучи активным участником построения разного рода сетей, мне довольно часто приходилось решать такую задачу:
Имеется некий сетевой сервис, работающий на компьютере Server, с заданным номером порта TCP. Есть некоторый клиент этого сервиса, работающий на компьютере Client, но который по разным причинам не может подключиться к этому сервису (например Server ограничивает клиентов по IP адресам, или сервис работает в локальной сети, а клиент находится в сети Интернет, причины могут быть разные). При этом у нас есть некий третий компьютер Proxy, который имеет доступ к компьютеру Server, и к которому в свою очередь имеет доступ наш клиент Client.

Вариант №1

Требуется организовать прокси сервер на компьютере Proxy, который бы прокидывал (мэппил) соединение по цепочке: Client -> Proxy -> Server. Это, в общем то, достаточно просто, многие общеизвестные прокси реализуют эту функцию - обычно она называется Mapped Link.

 

Рисунок к варианту 1.

Вариант №2

Задача становится более сложной и интересной в случае, если компьютер Proxy также не имеет возможности исходящего подключения к Server, но при этом сам Server может инициировать и установить соединение с Proxy . Т.е. Соединение возможно установить по следующей цепочке Client -> Proxy <- Server.

Каким же образом Server узнает о том, что есть запрос на входящее для него соединение от клиента? Ответ: он может установить контрольное постоянное подключение к компьютеру Proxy, через которое он и получит сообщение о входящем соединении от клиента. Получив такое сообщение он сам инициирует исходящее соединение к Proxy  которое затем связывается с клиентским соединением.

Рисунок к варианту 2.

Программа TcpProxy

Собственно приведенные выше  задачи и решаются в программе, которую вы можете скачать здесь совершенно бесплатно (и использовать на свой страх и риск).
TcpProxy позволяет шифровать контрольное соединение, чтобы никто кроме вас не мог воспользоваться сервисом. Также можно ограничивать клиентов по IP адресам.

Системные требования и загрузка

Приложение использует Microsoft .Net Framework 2.0, если его у вас нет, то можете загрузить ее с сайта Microsoft.
Скачать программу TcpProxy: SetupTcpProxy.msi (427,00 kb).

Настройка и запуск

Скачайте TcpProxy, затем установите ее, для варианта 1 на компьютере Proxy, для варианта 2 еще и на компьютере Server.
Отредактируйте конфигурационный файл LinkConfig.xml, в котором указываются все настройки для программы.
Я постарался откомментировать этот файл, правда на английском языке, если что то не понятно - пишите.
После чего можно запускать службу, через оснастку Services, или командой "net start TcpProxy".
Мониторинг работы можно выполнять по сообщениям в Eventlog: Application. По умолчанию пишутся ошибки и предупреждения, уровень логирования
можно менять в конфигурационном файле, параметр LogLevel.

Заключение

Конечно есть и альтернативные способы решения этой задачи. Например - организация VPN соединения. Или же в каких то случаях вы (или администратор вашей сети) может открыть входящее соединение на роутере. К слову, многие домашние роутеры с NAT позволяют это.

Использование TcpProxy имеет следующие плюсы:

  • не нужен внешний IP адрес;
  • можно удаленно подключаться к вашему мобильному устройству или ноутбуку, даже если вы все время меняете сеть (wi fi, gprs) - главное чтобы устройство было в сети;
  • ваше компьютер не "светится" напрямую в сети Интернет с открытыми  портами (но светится шлюз - Proxy), это дает некоего рода анонимность.
Минусы  - во многом вытекают из плюсов:
  • нужен отдельный сервер в сети, который может принимать входящие соединения, на котором установлен Microsoft Windows и .NET Framework 2.0;
  • весь трафик идет через этот промежуточный сервер;
  • соединение устанавливается дольше, в связи с дополнительными манипуляциями которые нужно произвести.
Буду рад, если кому то эта программа поможет.
Если вы нашли в ней ошибку, пожалуйста напишите мне!

 


maqdev.com

сообщения с ограниченным временем жизни