Предпосылки
В работе сервисной службы зачастую возникает необходимость в получении доступа к рабочему столу компьютера на территории Заказчика. Обычно, организация удалённого доступа к рабочему столу компьютера – задача тривиальная, но бывают ситуации, когда либо нет возможности запустить сервер удалённого доступа, либо нет возможности предоставить к нему доступ через сеть Интернет.
Замечание | “Классический” вариант удалённого доступа подразумевает, что на удалённой (управляемой) системе запущен соответствующий сервис (сервер). Например, для Windows – “Terminal Services”, а для UNIX – sshd. Организация удалённого подключения в локальной сети (ЛВС) не представляет проблем, но если управляемая машина находится за пределами локальной сети, например, в сети другой организации, и единственное, что есть общее у этих двух ЛВС это доступ в Интернет, то без перенаправления портов, видимо, никак не обойтись |
Итак. Имеется ситуация, при которой компьютер, к которому необходимо получить доступ, находится в локальной сети Заказчика. У Заказчика есть доступ в сеть Интернет, но нет возможности настроить на маршрутизаторе перенаправление с внешнего IP-адреса и произвольного порта на внутренний IP-адрес и конкретный порт сервиса удалённого доступа (RDP/3389 или SSH/22). В то же время на нашей стороне (будем называть её так) эта возможность присутствует. Другими словами, необходимо подобрать решение, где для организации удалённого доступа, серверная часть на управляемой системе могла бы сама подключаться к клиенту, а тот, в свою очередь, должен уметь прослушивать и принимать подобные подключения.
На рисунке внизу рассмотрены три варианта удалённого подключения: “классический” вариант (внутри ЛВС), разновидность “классического” подключения (через сеть Интернет, с перенаправлением портов) и “перевёрнутый” вариант (управляемая система сама подключается к клиенту и открывает к себе доступ).
Замечание | В “перевёрнутом” варианте, единицы архитектуры “Клиент-Сервер” заменены местами чтобы подчеркнуть их двойственную природу, т.к. в момент подключения “Сервер” здесь играет роль “Клиента” и наоборот. После установления подключения, всё становится на свои места |
В данной публикации рассматривается вариант “перевёрнутого” (реверсивного) подключения.
Установка и работа ПО
В качестве ПО для организации удалённого доступа выбран продукт TightVNC (http://www.tightvnc.com/).
На управляющей (нашей) системе должен быть установлен клиент (vncviewer), который, к слову, может быть в виде кроссплатформенного Java-приложения, на управляемой системе (Заказчик) – сервер TightVNC.
В рассматриваемом примере, управляющая система работает под управлением ОС GNU/Linux (ArchLinux), а управляемая – под ОС MS Windows.
Пример команд для управляющей системы:
[orca@blizzard ~]$ sudo pacman -S tightvnc <1> [orca@blizzard ~]$ sudo vncviewer -listen <2> |
- Установка ПО
- Запуск клиента vncviewer в режиме прослушивания
Как отмечалось ранее, при реверсивном подключении, сначала запускается клиентская часть (в режиме сервера/прослушивания), а затем к ней подключается серверная часть.
После запуска vncviewer, можно запустить сервер TightVNC на управляемой системе (в нашем случае Windows Server 2003) и прикрепить к нему vncviewer (подключиться к клиентской части).
Запуск: Start → Programs → TightVNC → TightVNC Server (Application Mode) → Run TightVNC Server. Должен появиться значок в системном лотке.
Правая кнопка мыши на значке “TightVNC Server” → Attach Listening Viewer → IP-адрес:номер порта → Attach. Здесь IP-адрес – это наш внешний Интернет-адрес, а номер порта – любой свободный, с которого уже настроено перенаправление на внутренний IP-адрес и порт vncviewer (по умолчанию 5500).