VNC – это метод удаленного доступа к рабочему столу компьютера по сети. Данные о нажатии клавиш и движении мыши, выполняемых пользователем на собственном компьютере передаются по сети на удаленный компьютер и воспринимаются им как действия с его собственными клавиатурой и мышью. Информация с экрана удаленного компьютера выводится на экране компьютера пользователя. VNC удобен при работе с графическим интерфейсом - рабочим столом и программами для рабочего стола операционных систем Windows, Linux и других.
Для начинающих администраторов работа с сервером по VNC будет проще, чем в командной строке или в панеле управления с веб-интерфейсом. Администрирование сервера выглядит почти так же, как настройки десктопной версии операционной системы, будь то Linux или Windows.
На удаленной системе должен быть запущен VNC-сервер (VNC-server), который обменивается данными с компьютером пользователя. Доступ к VNC-серверу может быть защищен паролем. На компьютере пользователя должна быть запущена программа VNC-клиент (VNC client, VNC viewer), которая передает на VNC-сервер информацию о нажатиях на клавиши и движениях мыши, получает от него изображение и выводит его на экран. VNC-клиенты существуют для Windows, Linux, FreeBSD, MacOS и многих других платформ. Есть также VNC-клиенты для карманных компьютеров и мобильных телефонов. При запуске VNC-клиента достаточно указать доменное имя или IP-адрес удаленного компьютера и пароль, если доступ к VNC-серверу защищен паролем.
Основной объем передаваемых по VNC данных приходится на графический информацию, выводимую на экран. Для работы требуется канал, шириной от 32 Кбит/сек до 2 Мбит/сек. Для комфортной работы в полноцветном режиме при разрешении экрана 1024×768 скорость канала должна быть 1-2 Мбит/сек.
Установка VNC-клиента
Для Windows можно использовать свободные VNC-клиенты UltraVNC и TightVNC.
Mac OS X, начиная с версии 10.5 имеет поддержку VNC-клиента в RemoteDesktop. Для предыдущих версий можно использовать VNC-клиенты JollysFastVNC и Chicken.
Для дистрибутивов Linux, основанных на Debian - VNC-клиент устанавливается из пакета vncviewer:
# apt-get install vncviewer
Для ветви RedHat - из пакета vnc:
# yum install vnc
Для FreeBSD - VNC-клиент устанавливается из пакетов командой:
# pkg_add -r tightvnc
Подключение VNC-клиента к удаленному серверу
Для подключения VNC-клиента к удаленному серверу требуется указать его IP-адрес или имя и номер дисплея (по умолчанию, :0) или номер TCP-порта (по умолчанию, 5900). Если VNC-сервер требует авторизации, то при подключении к нему VNC-клиент запросит пароль. Пароль доступа к VNC-серверу не связан с какой-либо учетной записью на удаленной системе и служит только для ограничения доступа к дисплею VNC-сервера. После установки соединения, в зависимости от настроек может потребоваться авторизация пользователя на VNC-сервере или может быть открыта запущенная ранее рабочая сессия.
Так как на компьютере одновременно могут работать несколько VNC-серверов, для их разделения используют параметр - номер дисплея. Например, один VNC-сервер может быть запущен на дисплее :0, другой - на дисплее :1. Каждому номеру дисплея соответствует номер TCP-порта, на котором VNC-сервер принимает соединения. Номер порта для дисплея получается прибавлением номера дисплея к базовому номеру порта - 5900. Дисплею :0 соответствует TCP-порт 5900, дисплею :1 - порт 5901.
При закрытии окна VNC-клиента или после выхода из окружения рабочего стола (logoff), в зависимости от настроек VNC-сервера, рабочая сессия пользователя может закрыться с остановкой всех используемых программ или продолжать работу и быть доступной снова при повторном подключении к VNC-серверу.
Настройки VNC-клиента
Большое количество передаваемой на экран информации влечет повышенные требования к пропускной способности канала. Нахватка пропускной способности приводит к некомфортным задержкам при больших изменениях информации на экране - открытии новых окон, скроллинге и т.д. Большие задержки будут возникать при просмотре изображений или элементов интерфейса, имеющих большое количество цветов и сложные формы.
Главный параметр, влияющий на объем передаваемых данных - алгоритм кодирования передаваемой графики. Для уменьшения объема передаваемых данных рекомендуется использовать алгоритмы Tight, ZLib, ZRLE, по сравнению с несжатыми данными (Raw) они обеспечивают сжатие в десятки раз, заметно нагружая процессор. Эти алгоритмы кодирования обеспечивают комфортную работу даже на каналах со скоростью 256-512 Кбит/сек. Для уменьшения объема передаваемых данных также можно установить высокий уровень сжатия (Compression Level, Compression Value), низкий уровень качества JPEG (JPEG Quality) и включить режим уменьшения количества цветов (-bgr233, Restricted colors). Самый большой эффект при заметном снижении качества изображения даст режим уменьшения количества цветов - объем передаваемой информации уменьшится в 1,5 - 3 раза.
Если не удается подключиться к VNC-серверу, нужно проверить:
- есть ли доступ к интернету
- отвечает ли удаленный сервер на пинги
- запущен ли на удаленном сервере VNC-сервер
- нет ли на пути файрвола, закрывающего доступ к TCP-порту VNC-сервера
- правльно ли указан номер дисплея или TCP-порт VNC-сервера (номер порта = 5900 + номер дисплея)
Если VNC-клиент не может согласовать с VNC-сервером использование алгоритма кодирования графики с компрессией данных, то по умолчанию данные передаются без сжатия (Raw). Также, такой способ передачи данных может автоматически выбираться VNC-клиентом при работе через быструю локальную сеть. Это можно исправить, принудительно указав в настройках VNC-клиента алгоритм кодирования с высоким уровнем сжатия - ZLib, ZRLE, Tight. Однако, для некоторых сочетаний клиента и сервера такое решение может быть бесполезным из-за ошибок в согласовании алгоритма кодирования. Например, клиент TightVNC с сервером RealVNC часто могут работать только с кодировкой Raw. Решением в этом случае будет смена VNC-клиента или VNC-сервера.