04 декабря 2016г.
Виртуальный компьютерный класс (далее ВКК) – это некоторая многопользовательская сервисно-ориентированная среда. Подобно обычному компьютерному классу, представленному несколькими компьютерами, объединенными в локальную сеть, и находящимися в одном помещении, он обеспечивает единую информационную среду – единый набор программных инструментов, обучающих материалов и средств коммуникации. И в то же время он отличается от него отсутствием привязки обучаемых к конкретному помещению и компьютерам. Фактически все обучаемые работают на одном компьютере – высокопроизводительном сервере, к которому подключаются с клиентских мест при помощи специальных программ, передающих нажатия клавиш, действия мышью и отображающих экранный вывод. Клиентским местом может быть как компьютер в классе учебного заведения, так и домашний компьютер обучаемого. Подключиться к ВКК можно с любого компьютера, где есть интернет. При этом требования к клиентскому месту минимальны, так как клиентский компьютер служит только для реализации диалога с пользователем, а все алгоритмы работают на сервере. Рассмотренный ВКК в сравнении с обычным компьютерным классом имеет следующие преимущества:
· Удобство при дистанционном образовании
· При использовании для изучения курса «Операционные системы» обучаемым не требуется устанавливать ОС Linux на свой компьютер
· Домашние задания выполняются в той же среде, где сдаются. Это исключает проблемы с совместимостью средств на домашнем и аудиторном рабочих местах, а также необходимость переноса выполненных заданий на внешних накопителях.
· Удобство применения обновлений – все обновления ПО необходимо устанавливать только на один компьютер – сервер, а не на каждый компьютер в классе.
· Использование свободного ПО.
В данной статье будет рассмотрен ВКК, реализованный автором для преподавания дисциплины «Операционные системы, среды и оболочки». Этот ВКК является узкоспециализированным – он предназначен для выполнения практических и экзаменационных заданий по теме «Разработка графического интерфейса пользователя в среде Linux». Однако его применение может быть и более широким, он является лишь примером, который читатель сможет адаптировать под свои собственные задачи.
В качестве операционной системы сервера выбрана Fedora Linux 14. Это не самая свежая версия системы, и она была выбрана из-за высоких системных требований более новых версий.
В создании и настройке ВКК можно выделить следующие этапы:
1). Скачивание образа установочного DVD-диска с официального сайта:
http://archives.fedoraproject.org/pub/archive/fedora/linux/releases/14/Fedora/i386/iso/Fedora- 14-i386-DVD.iso. Прожиг образа на записываемый DVD и установка системы на сервер.
Процесс установки достаточно прост, и в интернете можно найти много детальной информации по нему. Поэтому он не будет рассмотрен в этой статье. Также предполагается, что читатель уже имеет базовые навыки работы в ОС Linux.
2). Настройка автоматического подключения к сети при загрузке системы. По умолчанию к сети необходимо подключаться вручную после каждой перезагрузки компьютера. Такой режим имеет смысл только при десктопном использовании операционной системы. При серверном использовании необходимо чтобы сетевое соединение было постоянным и устанавливалось при загрузке компьютера. Чтобы настроить систему для функционирования подобным образом следует перейти в режим суперпользователя (команда su, пароль должен был быть создан на этапе 1 – при установке ОС), и отредактировать файл /etc/sysconfig/network-scripts/ifcfg-eth0, изменив строку ONBOOT=NO на ONBOOT=YES. Имя данного файла в конкретном случае может незначительно отличаться от приведённого. Оно формируется из префикса ifcfg- и имени сетевого интерфейса, через который сервер будет принимать подключения от клиентов.
3). Установка VNC-сервера. Именно при помощи технологии VNC (Virtual Network Computing) и организуется удалённый диалог системы с пользователем. Эта технология реализует подключение клиента (то есть обучаемого, работающего в ВКК) к удалённому рабочему столу системы, работающей на сервере. В основе технологии – протокол RFB (Remote Frame Buffer – удалённый кадровый буфер), обеспечивающий передачу клавиатурного ввода и действий мышью от клиента к серверу, и ретрансляцию изображения рабочего стола от сервера к клиенту. Двумя обязательными программными сущностями являются VNC-сервер и VNC-клиент. VNC-сервер работает на том компьютере, к которому нужно предоставить удалённое управление, VNC-клиент запускается на компьютере пользователя, который и будет выполнять управление. Технология часто применяется для удалённой технической поддержки пользователей (подобно проприетарному TeamViewer). К одному серверу может быть подключено несколько клиентов. Достоинствами технологии являются платформонезависимость – клиент и сервер могут работать на разных операционных системах, и открытый код. Среди недостатков – низкая информационная защищённость, поэтому работать лучше через SSH-туннель, о чём будет рассказано ниже.
Для реализации рассмотренного ВКК автором был выбран VNC-сервер TigerVNC, обладающий расширенной функциональностью.
Чтобы установить выбранный VNC-сервер в Fedora Linux 14, необходимо из консоли, перейдя в режим суперпользователя, выполнить команду:
yum install tigervnc-server
Во время установки несколько раз утвердительно ответить на вопросы системы.
После установки можно протестировать систему. Для этого в настройках файервола открыть порты VNC-сервера (с 5900 по 5907 - по умолчанию они закрыты), запустить VNC-сервер командой vncserver –securitytypes=none, и попробовать подключиться к нему с удалённого компьютера под Windows. В качестве VNC-клиента можно использовать TigerVNC для Windows. На клиентском компьютере необходимо запустить программу vncviewer.exe, в открывшемся окне ввести адрес сервера, порт (по умолчанию он 5901) и нажать кнопку Connect. В случае удачного подключения должен отобразиться рабочий стол того пользователя Fedora, от имени которого был запущен VNC-сервер.
При данном способе к одному серверу может подключиться только один клиент, и только под учётной записью пользователя, от лица которого запущен VNC-сервер. ВКК же подразумевает создание нескольких независимых рабочих мест - для каждого подключившегося обучаемого. Чтобы система заработала таким образом, необходимо выполнить ещё несколько действий, которые описаны ниже.
4). Установка и конфигурирование сетевой службы xinetd (eXtended INterneT Daemon). Данная служба предназначена для прослушивания входящих сетевых соединений и запуска определённых программ, в случае если входящее соединение удовлетворяет некоторым условиям. Как правило, этими программами являются другие сетевые службы, например программные сервера каких-либо протоколов. Такой подход бывает удобным, если компьютер должен предоставлять несколько разных услуг, каждая из которых реализуется отдельным программным сервером. В памяти компьютера в ожидающем режиме находится только один программный сервер – собственно xinetd. При поступлении запроса на соединение по определённому протоколу xinetd запускает соответствующий программный сервер, который функционирует только пока активно данное соединение. Таким образом удаётся избежать нахождения в ожидающем режиме одновременно нескольких программных серверов, что позволяет оптимизировать использование вычислительных ресурсов. При реализации же ВКК данная служба позволит запускать отдельный VNC-сервер для каждого клиента, обеспечивая ему независимую среду (дело в том, что один экземпляр VNC-сервера может предоставлять управление только от лица одного пользователя UNIX-системы).
Для установки службы следует в режиме суперпользователя выполнить команду:
yum install xinetd
После установки необходимо выполнить конфигурирование службы xinetd для запуска VNC-сервера. Для этого в каталоге /etc/xinetd.d/ нужно создать файл с именем vnc и внести в него следующее содержимое:
service vnc
{
disable = no socket_type = stream protocol = tcp
wait = no
user = nobody
server = /usr/bin/Xvnc
server_args = -inetd -once -query localhost -geometry 1024x768 -depth 16 -securitytypes=none type = UNLISTED
port = 5900
}
При помощи ключевого слова service объявлена служба с именем vnc (имя может быть любым, но для удобства администрирования лучше, если оно будет осмысленным). В фигурных скобках задаются её параметры. Ключевыми параметрами являются server – задаёт путь к тому программному серверу, который нужно запустить, и port – номер порта, запрос по которому инициирует запуск объявленного сервиса. В рассмотренном примере в качестве программного сервера используется служба Xvnc. Команда vncserver, использованная при тестировании VNC-системы (этап 3), также вызывает службу Xvnc, и по сути является оболочкой над ней, автоматически конфигурирующей окружение и облегчающей её запуск простым пользователем.
После сохранения файла конфигурации службу xinetd необходимо перезапустить командой /etc/init.d/xinetd restart.
5). Настройка протокола XDMCP (X Display Manager Control Protocol).
Графическая среда Linux устроена таким образом, что программа и её графический интерфейс могут функционировать на разных компьютерах, соединённых сетью. В таком случае программа является X-клиентом, а её графический интерфейс – X-сервером. Для обеспечения безопасности сетевого взаимодействия между X-клиентом и X-сервером применяется специальный протокол аутентификации – XDMCP. В контексте рассматриваемого ВКК этот протокол и будет использован для организации независимого входа обучаемого в графическую среду под собственной учётной записью UNIX- пользователя. Настройка протокола XDMСP осуществляется в конфигурационном файле дисплейного менеджера. Дисплейный менеджер (он же XDMСP-сервер) предоставляет пользователю графический интерфейс (окно приветствия) для регистрации в системе. По умолчанию в Fedora Linux 14 используется дисплейный менеджер среды GNOME, конфигурационный файл которого расположен по адресу /etc/gdm/custom.conf. Чтобы активировать XDMСP-сервер и задать вид окна приветствия, необходимо отредактировать в нём секции xdmcp и daemon:
…
[daemon]
remoteGreeter=/usr/libexec/gdm-simple-greeter [xdmcp]
Enable=true
…
После внесения изменений в данный файл, необходимо перезапустить дисплейный менеджер или перезагрузить компьютер. После этого этапа уже можно протестировать многопользовательский доступ к системе. При подключении с клиентского места должно отобразиться окно приветствия с предложением зарегистрироваться в системе.
6). Обеспечение информационной безопасности ВКК. Протокол RFB, используемый технологией VNC, не является идеальным с точки зрения защиты передаваемых данных. Поэтому его рекомендуется туннелировать через более защищённый протокол, например SSH. Сервер SSH установлен в Fedora Linux 14 по умолчанию, и никакая его настройка не требуется. Необходимо только разрешить проброс портов (тунеллирование) в настройках расширенной системы безопасности Linux (SELinux – Security- Enhanced Linux). Для этого в режиме суперпользователя выполнить команду:
setsebool -P sshd_forward_ports 1
На клиентских компьютерах кроме VNC-клиента (vncviewer.exe) теперь потребуется использовать ещё и SSH-клиент, например PuTTY. Подключение обучаемого будет состоять из 2-х этапов:
1. Подключение к серверу по протоколу SSH с пробросом портов (putty.exe).
2. Подключение к серверу по протоколу RFB через созданный в п.1 SSH-туннель (vncviewer.exe).
В завершении конфигурирования ВКК следует закрыть порты 5900-5907 посредством файервола.
7). Установка и конфигурирование необходимого прикладного программного обеспечения. Так как автором данный ВКК используется для преподавания дисциплины «Операционные системы среды и оболочки», то были установлены компиляторы, библиотеки и среды разработки для платформ Qt, Mono и Gtk+. Также стандартный репозиторий Fedora 14 содержит большое количество прикладных программ общего назначения, таких как офисные пакеты и графические редакторы. Присутствует возможность запуска приложений Windows и DOS при помощи эмуляторов. Установка нового программного обеспечения чаще всего не вызывает трудностей. Внутрисистемная коммуникация обучаемых возможна средствами встроенного почтового клиента UNIX, команды write, а также общедоступных папок на диске сервера. Всё это делает использование рассмотренного ВКК удобным для применения в разных сферах учебного процесса.