Искусство VNC

Как научиться работе с великолепным инструментом виртуализации

Технология VNC очень популярна, но ее часто неправильно понимают. Эта статья посвящена основам VNC и ее применению для автоматизации рутинных административных задач, а также последним усовершенствованиям этой технологии

Камерон Лейрд, вице-президент, Phaseit, Inc

Камерон Лейрд (Cameron Laird) – давний сотрудник и бывший обозреватель developerWorks. Он часто пишет о проектах с открытыми исходными кодами, которые ускоряют разработку приложений его работодателя, сфокусированных на надёжности и безопасности.



12.12.2007

Если читатель не знаком с технологией VNC (Virtual Network Computing), то даже краткое обучение работе с системой desktop sharing system будет полезно для решения ежедневных задач по системному администрированию.

Те читатели, кто уже знает о VNC, найдут в этой статье информацию о новинках этой технологии. Статья состоит из разделов

  • Введение
  • VNC как компонент конфигурации
  • VNC как платформа для разработчика

В этих разделах приведены несколько примеров, иллюстрирующих незаменимость VNC.

Краткое знакомство с важнейшим инструментом

Незаменимая - этот эпитет лучше всего характеризует VNC, так как эта технология принадлежит к немногочисленной категории таких средств как ssh, screen, Expect, которые не просто повышают производительность, а увеличивают ее на порядок. Задача VNC - упростить процесс вывода результатов работы приложения, запущенного на удаленном компьютере. Например, можно использовать VNC, чтобы:

  • отображать рабочий стол пользователя, находящегося на другом континенте;
  • на выходных подключиться из дома к офисному компьютеру, чтобы проверить установленные на нем в течение недели приложения;
  • помочь новичку из другого города, продемонстрировав ему выполняемые с помощью мышки операции AIX, которые сложно объяснить по телефону;

и еще для решения многих серьезных задач. Что важно - для этого потребуется выполнить последовательность несложных действий.

Для первого знакомства мы выполним следующие операции:

  • установим VNC-сервер, например на хост AIX;
  • установим VNC-клиент (программу отображения viewer) на любой сетевой компьютер;
  • запустим сервер и программу отображения;
  • запустим тестовое приложение, которое будет работать на одном компьютере и будем отображать результат его работы на другом компьютере

Рассмотрим эти операции подробнее

Инсталляция сервера

Технология VNC основывается на открытом сетевом протоколе RFB (все технологии, используемые в этой статье, описаны в разделе Ресурсы). Программы для VNC доступны в коммерческих и бесплатных версиях для большинства платформ, так что VNC можно использовать на различном оборудовании, начиная с мейнфреймов до КПК. Для AIX проще начать с диска Toolbox for Linux® CD, который входит в комплект поставки AIX. Текущий RPM также входит в состав IBM AIX Toolbox. Хотя можно устанавливать и запускать VNC с правами обычного пользователя, для первого раза проще работать, имея полномочия root.

Начнем подготовку к первому использованию VNC. При инсталляции с Toolbox устанавливается сразу и сервер и клиент VNC, его также называют программой отображения (viewer). Для начала обычно достаточно установить на хост AIX только сервер. На удаленном компьютере (это необязательно система с AIX - можно использовать компьютер даже без поддержки X11) потребуется установить клиента для отображения. Такие клиенты имеются для всех основных операционных систем (Windows®, Linux и MacOS).

VNC несколько отличается от X11. X11 предлагает стандартизованный способ отображать результаты работы приложений на удаленном компьютере, так что в определенной степени X11 является конкурентом VNC. Ситуация еще больше запутывается из-за того, что эти две технологии используют одинаковую терминологию для описания противоположных ситуаций:

  • X11:
    • сервер выводит графику
    • клиент вычисляет результаты, которые отображаются на сервере
  • VNC:
    • сервер формирует изображение - обычно на том же компьютере, где выполняется задача
    • клиент или программа отображения показывает изображение

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

Технологии VNC и X11 скорее являются партнерами, нежели конкурентами. Как будет показано дальше на примере AIX, технология VNC обычно работает на базе X11. Совместное использование VNC и X11 имеет больше преимуществ, чем работа только с X11 - например, VNC функционирует лучше, иногда даже значительно лучше, чем стандартный X11, особенно в случае медленного и/или удаленного соединения. Кроме того, VNC-клиенты не вовлечены в управление шрифтами, и установить их куда проще, чем сервер X11. Сегодня X11 редко используется без VNC, исключением являются разве только консоли UNIX®-хоста.

После установки необходимого программного обеспечения нужно запустить сервер VNC на хосте AIX при помощи команды vncserver :2 или её аналога и для безопасности установить пароль на подключение. В результате таких действий будет создан новый X-сервер, на котором нужно запустить на хосте AIX терминал командой xterm -display :2.

Теперь переходим к компьютеру, на который был установлен VNC-клиент для просмотра. Запускаем нового клиента и подключаемся к $AIX_IP_ADDRESS:2, вводим пароль, и вскоре мы должны увидеть нашу AIX-консоль с запущенным xterm.

Тонкости настройки VNC

Теперь мы подошли к главной особенности VNC. Сеанс VNC "выглядит" также как и сеанс X - на одном компьютере можно наблюдать за процессом, выполняющимся на другом компьютере. Однако, в этом и заключается основное отличие VNC от X: если закрыть программу отображения, перезапустить её и снова подключиться, то снова отобразится удаленный рабочий стол с выполняющимися программами. Это показывает, что в отличие от обычных сеансов X11, сеансы VNC являются "возобновляемыми".

Существует еще множество действий, которые можно предпринять, чтобы настроить VNC для каждой конкретной ситуации. Как уже упоминалось, VNC представляет собой открытый стандарт, который поддерживает множество реализаций. Например, сайт Bull Software предлагает альтернативный сервер, который помимо остальных возможностей может эффективно взаимодействовать с inetd.

Несколько моментов, влияющих на функционирование VNC:

  • При помощи аргумента -geometry можно установить видеобуфер большего размера. Для большинства серверов размер по умолчанию составляет 640х480, что имело смысл десять лет назад, когда была изобретена VNC, но сейчас уже не соответствует возможностям видеоплат.
  • Если на компьютере установлена свежая версия AIX, то даже не потребуется программа отображения, чтобы использовать VNC - достаточно просто ввести в Web-браузере с поддержкой Java™ следующий адрес http://$AIX_IP_ADDRESS:5802. Это значит, что даже не потребуется выполнять какие либо действия, чтобы продемонстрировать коллегам работу вашего приложения. Если у них есть Web-браузер с поддержкой Java (а к 2007 году это общий стандарт), то достаточно просто отправить им URL-ссылку на ваш AIX-хост.
  • " VNC, в отличие от X11, позволяет нескольким удаленным наблюдателям подключаться одновременно. Для использования этой функции нужно изучить описание флагов *shared в документации по используемой версии VNC.
  • Важно не забывать про безопасность. Если открыть VNC-сессию в Интернет, то злоумышленники попытаются воспользоваться ею - кто-нибудь подберет к ней пароль, хотя бы простейшим методом перебора значений. В разделе Ресурсы в конце этой статьи приводятся несколько рекомендаций о том, как усилить безопасность VNC.
  • Большинство версий VNC для трансляции изображения используют порты, начиная с 5800. Например, отображение дисплея сервера X11:2 обычно выполняется через порт 5802. Хотя, как и с большинством UNIX-технологий эти параметры поддаются настройке, для более простого освоения VNC используйте стандартную конфигурацию: :1-5801, :2-5802 и т.д.

Технология VNC может оказаться полезной во множестве ситуаций и помогает решить проблемы, которые раньше казались неразрешимыми. Например, пользователь готовит презентацию на специализированном лабораторном компьютере, который подключен к экспериментальным установкам. Затем он настраивает VNC-сервер и спокойно идете в аудиторию, где демонстрирует эксперимент на большом экране при помощи проектора, не заставляя слушателей толпиться в лаборатории среди оборудования и проводов.

VNC как один из компонентов конфигурации

VNC отлично интегрируется с другими компонентами. Это значит не только то, что VNC поддерживает несколько разных вариантов конфигурации, чтобы сделать использование более удобным, но и интегрируется различными способами с другими технологиями, которые применяет пользователь. Мне довелось работать в университетских лабораториях, где на компьютерах при загрузке автоматически запускался стандартный VNC-сервер. Кроме других преимуществ, это позволяло студентам в любой момент попросить о помощи в решении различных проблем, и служба поддержки могла взглянуть на проблему "из-за плеча" пользователя, даже если специалист службы поддержки был на другом конце страны. Такой подход позволял экономить ресурсы, вместо того чтобы постоянно держать в лабораториях полный штат службы поддержки или вынуждать студентов самим разбираться с проблемами.

Правильнее всего рассматривать технологию VNC как еще один шаг в направлении виртуализации или как компонент, позволяющий усовершенствовать этот процесс. По мере стандартизации такие действия как вычисления, отображение, работа в сети, управление, становятся "мобильными", доступными везде, где есть доступ к сети и могут быть организованы наилучшим образом для соответствия производственным или бизнес-условиям. Если материнская плата или монитор физически не могут быть перенесены в другое место, это не значит, что работа пользователя также привязана к этому месту.

Автоматизация также отлично работает и на стороне клиента, например, у меня есть набор инструкций, которые при загрузке компьютера, автоматически подключают его к наблюдаемым серверам. При этом я вношу некоторые изменения в конфигурацию: уменьшаю палитру, чтобы снизить требования к пропускной способности Интернет-канала или меняю настройки для устройств ввода. Для постоянного использования я обычно отключаю события от мыши и клавиатуры так, что VNC-клиент позволяет только наблюдать за удаленным компьютером. Это помогает предотвратить случайное вмешательство в деятельность удаленного компьютера, позволяя при этом наблюдать за всем происходящим.

x11vnc - это средство из технологии VNC, которое должно быть знакомо специалистам AIX. Это VNC-сервер, тесно интегрированный с аппаратным обеспечением. Главное преимущество x11vnc в том, что он позволяет просматривать графику 3D OpenGL через VNC-соединение, а его переносимость позволяет использовать его с веб-камерами, ТВ-тюнерами и другим нестандартным оборудованием. x11vnc совместим почти со всеми GXT*P видео адаптерами, используемыми в современных компьютерах AIX.

VNC как платформа для разработки

Однако технология VNC предлагает только базовую функциональность, поэтому может оказаться, что нужная функциональность еще не реализована, например, клиент для нестандартного компьютера, или возможность записи сеанса и его последующего воспроизведения, или видеоэффекты для проведения видеоконференций, или простой элемент управления, который будет запрашивать подтверждение перед установкой VNC-соединения.

Разнообразие реализаций VNC с открытым исходным кодом, означает, что можно легко разобраться, как программируются клиентская и серверная часть RFB. Также существуют несколько наборов разработчика, таких как tclRFB (см. раздел Ресурсы), которые упрощают программирование для VNC.

Добавив в этот исходный код несколько дополнительных строчек, можно заставить программу автоматически сохранять снимок с экрана удаленной машины каждые десять секунд (см. листинг 1).

Листинг 1. Реализация функциональности для записи сеанса в клиенте tclRFB
	  proc save_snapshot_and_repeat {canvas_name destination_file delay} {
	      set suffix [clock seconds]
	      $canvas_name postscript -file $destination_file$suffix.ps
	      after $delay [list \
		   save_snapshot $canvas_name $destination_file $delay]
	  }

	  set display_canvas .vp.fb     
	  set file           my_snapshot
	  set interval       10000            ; # Ten seconds.
	  save_snapshot_and_repeat $display_canvas $file $interval

Этот пример сохраняет снимки экрана в формате PostScript, однако есть свободно доступные библиотеки, которые позволяют генерировать MPEG, анимированные GIF и т.д.

Большая часть материала этой статьи был известна еще пять лет назад. VNC оказалось похожим на Expect и другие "серебряные пули" увеличения эффективности работы - основная функциональность VNC была представлена сразу после её появления и с того момента происходило только последовательное усовершенствование технологии. Новые события в мире VNC в основном связаны с незначительными улучшениями или исправлениями ошибок.

Однако есть пара свежих интересных технологий, с которыми было бы полезно ознакомиться:

  • Технология Synergy позволяет нескольким компьютерам совместно использовать общую мышь и клавиатуру. Эта технология отличается от VNC, но может заинтересовать разработчиков и администраторов, которых в чем-то не устраивает VNC.
  • Терминальный сервер NX с открытым исходным кодом, разрабатываемый коммерческой компанией. Он позволяет ускорить обмен данными с удаленными X11 или VNC, или другими поддерживаемыми технологиями. Если не хватает производительности для удаленного просмотра, то стоит попробовать NG.

Заключение

Главной целью этой статьи было знакомство с VNC. В конечном счете пользователь сможет подобрать конфигурацию, которая подходит его системе лучше всего. Однако первейшая задача технологии VNC - "отменить" расстояние между пользователем и экраном удаленного компьютера. И как только пользователь начнет работать с VNC, он уже не сможет обойтись без этой технологии. А как показывает эта статья, начать работать с VNC очень просто.

Ресурсы

Научиться

  • State of the VNC art: оригинал этой статьи (EN).
  • "Productivity tips" (EN) (developerWorks, сентябрь 2006): эта статья посвящена VNC и другим технологиям, которые позволяют улучшить повседневную работу.
  • "Expect exceeds expectations" (EN) (developerWorks, aпрель 2002): в статье описывается, как выполнять в автоматическом режиме задачи, которые требуют интерактивного вмешательства.
  • Документация по безопасной оболочке Secure Shell (SSH):(EN)
  • GNU Screen: технология GNU Screen позволяет сделать для командной строки то же, что делает технология VNC для пользовательского интерфейса. С технологией screen можно использовать единственное подключение из командной строки, чтобы управлять несколькими текстовыми терминалами. Пользователь может переключаться между ними, отключаться и подключаться заново из другого места и многое другое. Подобно VNC, ssh и Expect, screen станет незаменимой программой.(EN)
  • RFB: это простой протокол для удаленного доступа к графическому интерфейсу пользователя. Как любой открытый протокол, RFB предлагает множество реализаций, как бесплатных так и коммерческих.(EN)
  • IBM AIX Toolbox: на этой странице можно найти VNC и множество других полезных приложений.(EN)
  • Bull Freeware: на данном сайте предлагается альтернативная реализация VNC сервера.(EN)
  • Дискуссия в Usenet: большинство компьютеров AIX имеют различные графические адаптеры. В этой дискуссии обсуждается, как легко установить технологию VNC на вашу консоль.(EN)
  • "Create a VNC system with tclRFB" (EN) (developerWorks, август 2003): эта статья знакомит с возможностями технологии tclRFB как средства программирования для VNC.(EN)
  • x11vnc: x11vnc - это VNC сервер, который обладает всеми возможностями, включая поддержку учетных записей и паролей UNIX, масштабирование, функциональность для обмена файлами и совместимость с OpenGL. (EN)
  • Synergy: технология Synergy позволяет нескольким компьютерам использовать общую клавиатуру и мышь.(EN)
  • NX: терминальный сервер NX позволяет повысить производительность при передаче данных, например, VNC.(EN)
  • "Remote computing with a Linux application server farm" (EN) (developerWorks, февраль 2007): эта статья описывает, как использование VNC помогло сэкономить научной лаборатории десятки тысяч долларов.(EN)
  • "SSL secures VNC applications" (EN) (developerWorks, январь 2007): в статье объясняется, как обеспечить туннелирование VNC через SSH, чтобы защитить соединение.(EN)
  • AIX и UNIX: раздел developerWorks, посвященный AIX и UNIX, содержит множество материалов, относящихся ко всем аспектам администрирования AIX, которые помогут поднять квалификацию по работе в UNIX.
  • AIX и UNIX для новичков:: страница для новичков в AIX и UNIX.
  • AIX 5L™ Wiki: сообщество разработки документации AIX.(EN)
  • Другие статьи и обучающие материалы, написанные Камероном Лейрдом:(EN)
  • Разделы библиотеки информации по AIX и UNIX:(EN)
  • developerWorks technical events and webcasts: новости о событиях и Web-конференциях сообщества developerWorks.(EN)
  • Podcasts: аудиозаписи презентаций экспертов IBM.(EN)

Получить продукты и технологии

  • IBM trial software: ознакомительные версии программного обеспечения для разработчиков, которые можно загрузить прямо со страницы сообщества developerWorks.(EN)

Обсудить

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=AIX и UNIX
ArticleID=276615
ArticleTitle=Искусство VNC
publish-date=12122007