Что такое удаленный доступ и как его организовать
Удаленный доступ, в нашем случае к компьютеру, — это процесс при котором оператор использует компьютер (конечно по прямому назначению), в независимости от своего местонахождения. При этом удаленный компьютер, к которому осуществляется доступ, называется удаленным сервером (или просто сервером в этом контексте), а компьютер, с которого осуществляется управление, называется удаленным клиентом (или просто клиентом в этом контексте). Необходимым условием, является наличие канала связи между сервером и клиентом, обычно это интернет или локальная сеть.
Список областей применения может быть очень большим, остановлюсь на наиболее значимых, с моей точки зрения.
Доступ к данным - отправляясь в поездку или просто с работы домой, если что-то забыли захватить, можно зайти удаленно и скопировать, даже если нет возможности копировать данные, их можно отослать себе на электронную почту.
Помощь друга – если не удается самому справиться с проблемой в компьютере или не знаете, как сделать что либо, можно попросить специалиста удаленно вам помочь.
Сервер где-то там – есть задачи, для которых не очень удобно использовать домашний компьютер или компьютер на работе (например, из соображений безопасности или производительности), а например, арендовать компьютер или виртуальный компьютер в какой-нибудь компании. Обычно это задачи, требующие круглосуточной работы, такие как web-сервер, торговые роботы и т.д.
Что бы много не бегать – если требуется обслуживать большое количество серверов территориально удаленных, например в разных городах или странах, то удаленный доступ может значительно сократить расходы на командировки.
Сократить расходы на покупку ПО – можно покупать не для каждого компьютера, а установить на сервер и удаленно работать всем сотрудникам.
Недостатки удаленного доступа
При всех своих достоинствах и удобстве удаленный доступ не является полноценным доступом к ресурсу. Причиной тому множественные ограничения. Первым ограничением является требование к скорости интернет-соединения, поскольку малая скорость становится причиной искажений в изображении, звуках и т.д. При обрыве соединения могут быть утеряны данные или сброшены все незавершенные действия – это зависит от стабильности сети. Нужно понимать, что функции удаленного доступа реализуются через операционную систему и до ее загрузки удаленный доступ будет невозможен, т.е нельзя войти в BIOS, выбрать ОС при загрузке, собственно как и установить ОС, и такое простое действие как включение компьютера дистанционно, во многих случаях выполнить не удастся. И тем не менее преимущества очевидны.
Теперь немного о том, как это устроено и какие способы бывают. Программ реализующих удаленный сервер и клиент очень много они могут быть как встроенной в операционную систему, так и предоставляться отдельной программой. Но для того чтобы ответить на вопрос – какой программой пользоваться, нужно понимать некоторые аспекты удаленного доступа.
Во-первых все программы можно разделить на две категории:
1 – Программы, которые открывают сеанс нового пользователя при подключении, со всеми атрибутами (для windows RDP англ. Remote Desktop Protocol — протокол удалённого рабочего стола). Преимущества: много пользователей одновременно, изолированность пользователей
2 – Программы имитирующие наличие пользователя за компьютером, имитация нажатия на клавиатуру, движение мышки и копирование области экрана и отсылка ее клиенту, например UltraVNC реализующую протокол Virtual Network Computing (VNC) .
Общим для всех этих программ является вопрос, как именно ваши клиент и сервер найдут друг друга в таком большом количестве компьютеров подключенных к интернету.
Для этого используется ip адрес (обычно что-то вроде 192.168.хх.хх), т.е. после запуска программы клиента, на компьютере за которым вы сейчас работаете, вы просто вводите ip адрес удаленного сервера и вы подключились, но из-за технических различий организации сетей, такое соединение можно установить только если сервер имеет внешний статический ip адрес. Какие же еще бывают ip адреса, на мой взгляд можно выделить три типа адресов и соответствующие программные средства для установления соединения с такими адресами.
Первый тип - внешний статический ip адрес (часто называется белым), как и следует из названия, адрес постоянный и доступен любому компьютеру в сети, т.е. как и написано выше, вводите ip адрес удаленного сервера и вы подключились. Но к сожалению, не слишком распространенный случай.
Второй тип – внешний динамический ip адрес, идентичен внешнему статическому за исключением того, что при каждом подключении компьютера к сети или через заданный интервал времени значение ip меняется. Можно обратиться к провайдеру и подключить услугу - статический ip, если он ее предоставляет, или воспользоваться услугой http://www.dyndns.com, работает это так, регистрируетесь, создаете постоянный домен (просто символическое имя, которое преобразуется в ip адрес с помощью службы DNS), на Ваш компьютер устанавливается маленькая программа, которая при каждой смене ip адреса отправляет его на www.dyndns.com, и теперь Вы вводите не ip адрес, а домен, DNS преобразует его в реальный ip, действующий на данный момент на Вашем удаленном сервере и вы подключились. Но к сожалению и это не самый распространенный случай.
Третий тип – серый ip адрес, внешне недоступный. Происходить это может по разным причинам, но типовая заключается в том, что компьютер подключается к сети через устройство (обычно NAT), которое заменяет ip адрес Вашего компьютера на свой при выходе в интернет, причем может это делать сразу для большого числа компьютеров. Таким образом, Вы со своего компьютера можете соединиться с любым внешним ip адресом, а вот из сети соединится именно с Вашим компьютером невозможно. И это наиболее распространенный вариант подключения к Интернету и он же наиболее проблематичный, но зато решение для этого типа адреса будет работать и для двух предыдущих, оно наиболее общее.
Первое, что приходит на ум Port mapping - это переадресация пакетов, принимаемых на определенный порт сетевого интерфейса (NAT или др.), на определенный порт другого компьютера (Ваш сервер). Недостатков у этого решения предостаточно: один порт – одна программа, другие программы не смогут работать как серверы (например ftp), нужно обращаться к провайдеру или администратору сети, возможно настраивать потребуется не один маршрутизатор, а всю цепочки от внешних адресов до Вашего сервера, и самый большой недостаток, что Вы привязаны к конкретному серверу – для другого компьютера потребуется заново настройка, если она будет возможна!
Другое решение проблемы серых адресов состоит в использовании сервера-посредника, имеющего внешний статический ip адрес, при этом сервер и клиент не соединяются друг с другом, а соединяются с сервером-посредником, передают ему определенный код, полученный ранее, по которому сервер-посредник узнает клиента и сервера и соединяет их.
Принцип работы очень похож на то, как работают популярные службы обмена сообщениями вроде ICQ или Skype. Для доступа к серверу нет необходимости знать его IP, достаточно знать адрес сервера-посредника и свой код (ID) на этом сервере. В некоторых системах этот код имеет название Internet-ID, в моей системе ServerSR это идентификатор пользователя (PHPServerRecord) вида xxxxxxxx_номер (например ckxsdpx2_1). Но возникает вопрос – где взять такой сервер-посредник, а во вторых, он предусматривает передачу Internet-ID и значит не годится для программ не адаптированных для работы с ним, к счастью в Интернете есть бесплатные интернет-посредники, в состав которых входят программы скрывающие все детали и создающие на Вашем компьютере сетевое окружение, таким образом, что клиент и сервер оказываются как бы в одной локальной сети. Очевидным преимуществом является то, что все сетевые программы могут работать, не догадываясь, что соединяются через сервер-посредник, а работают как бы в локальной сети. Наиболее удобным решением считаю LogMeIn Hamachi – Объединение устройств в сеть, для частного использования бесплатно. Или нужно использовать программы сразу предназначенные для работы через сервер-посредник, например мой проект ServerSR, так как он рассчитан даже на самые простые телефоны, не имеющие многозадачности и возможности запускать фоновые задачи, LogMeIn Hamachi или что-то подобное на него не установить.
Про адресацию пожалуй все, еще стоит отметить, что тип ip адреса клиента не имеет значения, лишь бы адрес сервера был доступен, хотя и здесь могут возникнуть трудности, например: администратор сети может установить ограничения на диапазон используемых портов, или закрыть конкретные IP адреса, часто в корпоративных сетях устанавливают прокси-сервер на котором и ограничивают клиента вплоть до используемых протоколов, в проекте ServerSR обмен организован по http протоколу с возможностью работы через http-прокси, таким образом большинство ограничений не повлияют на его работоспособность. ServerSR будет работать практически везде, где возможен просмотр интернет страниц.
В заключении хочу вернуться к списку областей применения удаленного доступа, разделить его на категории и предложить конкретные программные продукты, для реализации.
Категория 1 – «для себя, для работы», сюда входит доступ к своим данным, управление удаленным сервером и т.д. Первое, что делаем, устанавливаем LogMeIn Hamachi (есть реализация для Windows, Linux, и даже для мобильных устройств), создаем виртуальную сеть и тестируем ее, как это сделать написано в интернете в превеликом множестве с пошаговыми инструкциями. Далее на сервере разрешаем удаленный доступ (в свойствах компьютера), примерно так:
(*- Учтите: пользователям с «пустыми» паролями запрещены удаленные подключения не зависимо от установленных разрешений. Задайте такому пользователю пароль или создайте отдельного пользователя для этих целей.)
, а на удаленном клиенте запускаем клиента RDP (mstsc.exe), вводим IP адрес
, берем его из LogMeIn Hamachi
и все, работаем. Клиенты существуют практически для всех версий Windows (включая Windows CE и Mobile), Linux, FreeBSD, Mac OS X, Android, Symbian. Преимуществ у этого метода не перечесть, основное в том, что можно работать не только через RDP, но и любым другим протоколом, например SSH, FTP или открывать общие папки на удаленном сервере или использовать программы собственной разработки, так же реализация не привязана к конкретной ОС, можно работать например Windows-Linux или наоборот.
Категория 2 – «помощь другу», если вашему другу понадобилась помощь, а те объяснения, которые вы ему дали по телефону, он не понял, то сложно себе представить, что он сможет проделать действия описанные в категории 1. В этом случае требуется, что то очень простое в использовании и ориентированное на имитацию наличия пользователя за компьютером, например: бесплатную утилиту Ammyy Admin(
На своем компьютере нужно открыть закладку "Оператор", там вписать ID клиента (цифры запомнятся на будущее) и нажать кнопку "Соединить".
После этого запустится удаленный рабочий стол, которым вы сможете управлять с помощью мыши и клавиатуры.