“Философия Linux — «смейся в лицо опасностям». Упс. Не то. «Делай это сам». Да, именно так.” © Линус Торвальдс.
“Философия Linux — «смейся в лицо опасностям». Упс. Не то. «Делай это сам». Да, именно так.” © Линус Торвальдс.

Это вторая часть о том, как “подружить отечественный VDI и TrueConf”. В предыдущей части мы уже стали мастером по владению Astra Linux.

Как было замечено коллегами в комментариях, причина использования VDI в основном кроется в целях обеспечить безопасный доступ к корпоративным ресурсам. Спасибо за полезные комментарии, а мы далее перейдём к настройкам ради повышения безопасности некой условной компании и централизованного управления доступом.

В этой части мы вновь установим Linux, но уже в гостевую ВМ, настроим Брест, Termidesk и TrueConf Server. И наконец посмотрим, как работает видеосвязь в VDI.

Cодержание

Настройка ПК СВ «Брест»

Установка сертификата

Сгенерируйте сертификат для домена brest.example.lan, как было показано в первой части.

После извлечения их нужно переместить с заменой текущий данных в директорию /etc/one/ssl/:

sudo mv cert.pem  /etc/one/ssl/one-apache2.crt
sudo mv cert.key /etc/one/ssl/one-apache2.key

И перезапустить службу Apache:

sudo systemctl restart apache2.service

Отключение службы FireEdge

FireEdge не используется в Бресте, поэтому смело можем его отключить, чтобы постоянно не выскакивало сообщение:

Для отключения проверки статуса службы FireEdge необходимо:

  1. В конфигурационном файле /etc/one/sunstone-server.conf закомментировать следующие строки:

:private_fireedge_endpoint: http://localhost:2616
:public_fireedge_endpoint: http://localhost:2616
  1. И перезагрузите службу:

sudo systemctl restart opennebula-sunstone.service

Установка агента узла виртуализации

Для взаимодействия Termidesk c ПК СВ Брест необходимо установить специальный пакет — агент узла виртуализации. Сервис termidesk-vmsd запускается и работает в качестве посредника между libvirtd и агентом ВРМ через virtio канал /dev/virtio-ports/ru.termidesk.tvm.0.

Полученные от Агента ВРМ команды (shutdown, disconnect), termidesk-vmsd транслирует в libvirtd, позволяя тем самым управлять ВМ, на которой запущен Агент ВРМ.

Настройку и установку надо выполнять от имени пользователя с максимальным уровнем целостности (test).

Для установки агента выполните: 

  1. Установите пакет lsb-release:

sudo apt install -y lsb-release
  1. Добавьте репозиторий с помощью команды:

sudo sh -c 'echo "deb https://termidesk.ru/repos/astra $(lsb_release -cs) non-free" > /etc/apt/sources.list.d/termidesk_local.list'
  1. В ОС установите ключ PGP:

wget -O - https://termidesk.ru/repos/astra/GPG-KEY-PUBLIC | sudo apt-key add -
  1. Обновите пакеты:

sudo apt update
  1. Установите агент с помощью команды:

sudo apt install python3-termidesk-vmsd
  1. Проверьте состояние установленной службы. Должна быть активна:

systemctl status termidesk-vmsd

Активация именованных каналов

После установки агента узла виртуализации необходимо выполнить активацию именованных каналов. Для этого:

  1. Откройте файл /etc/one/vmm_exec/vmm_exec_kvm.conf;

  2. Параметрам, которые приведены ниже, присвойте значение “yes” (в кавычках):

WEBDAV_USE_DEFAULT="yes"
VIDEOCAM_OPTIMIZATION_USE_DEFAULT="yes"
PRINTER_OPTIMIZATION_USE_DEFAULT="yes"
USBTOKEN_OPTIMIZATION_USE_DEFAULT="yes"
SPICE_DETECT_USE_DEFAULT="yes"
  1. Сохраните изменения. 

  2. Перезапустите службу opennebula:

sudo systemctl restart opennebula

Панель управления Брест

Для доступа в панель управления используйте доменное имя brest.example.lan или IP-адрес.

У вас отобразится окно авторизации. Первый раз авторизацию можно пропустить нажав кнопку Вход, а во второй раз введите логин и пароль. Это связано с “кривой” реализацией авторизации по Kerberos в браузере.

Создание образа

При создании ВМ у нас нет возможности “отщипнуть кусок” от общего кол-ва свободного места на хосте. Брест работает немного по другому: перед созданием ВМ мы должны создать пространство, куда будет установлена гостевая ОС. Для этого:

  1. В панели управления Брест перейдите в Хранилище → Образы, нажмите зеленую кнопку Add и выберите Создать.

Зеленая кнопка Add
Зеленая кнопка Add
  1. Укажите название образа, по желанию — описание.

  2. Выберите тип образа Общий блок данных хранилища.

  3. В выпадающем списке Этот образ является постоянным выберите Да.

  4. В Расположение образа выберите Пустой образ диска.

  5. Укажите Размер образа, например, 15 Гб.

  6. Раскройте Расширенные настройки и выберите

    • Шина — Virtio;

    • Формат — qcow2.

  1. Нажмите кнопку Создать.

Чтобы установить гостевую ОС, нужно под рукой иметь и установочный файл .iso. Для него также нужно создать образ по аналогии с предыдущим. 

  1. Перейдите в Хранилище → Образы, нажмите зеленую кнопку плюс (+) и выберите Создать

  2. Укажите название образа, при необходимости описание.

  3. Выберите тип образа CD-ROM только для чтения.

  4. В Расположение образа выберите Закачать.

  5. Нажмите кнопку Выбор файла и отметьте нужный .iso файл. 

  6. Нажмите кнопку Создать.

Файл будет загружаться, о чем будет свидетельствовать полоса загрузки. Подождите немного пока статус файла не изменится на ГОТОВО. 

Создание и настройка виртуальной сети

Перейдите в Сеть → Вирт.сети, нажмите зеленую кнопку плюс (+) и выберите Создать. В открывшемся окне задайте такие настройки:

  • Общие:

    • Название — наименование виртуальной сети, например, terminet.

  • Конфигурация:

    • Интерфейс сет. моста — имя сетевого моста на хосте, в нашем случае br0.

    • Режим работы сети — Bridged.

  • Адреса:

    • Первый IPv4 адрес — задать начало диапазона адресов для виртуальных машин, например, 10.110.2.243.

    • Размер — количество IP-адресов, доступных для выдачи ВМ. Учтите, если число будет меньше кол-ва будущих запущенных ВМ, то какие-то машины просто не смогут получить IP.  

  • Контекст. Настройки сети, которые будут пробрасываться в ВМ посредством контекстуализации: 

    • Адрес сети (NETWORK_ADDRESS) — 10.110.2.0;

    • Маска подсети (NETWORK_MASK) — 255.255.240.0;

    • Шлюз (GATEWAY) — 10.110.0.1;

    • DNS — 10.110.0.1;

    • Пользовательские атрибуты:

      • SEARCH_DOMAIN — example.lan.

После этого нажмите кнопку Создать.

Подготовка базового шаблона ВМ

Перейдите в Шаблоны → ВМ и нажмите зеленую кнопку плюс (+) и выберите Создать. В открывшемся окне задайте такие настройки:

  • Общие:

    • Название;

    • Гипервизор — KVM;

    • Описание (при необходимости);

    • Память (объем ОЗУ);

    • Физический CPU (процент процессорного времени ЦП);

    • Виртуальный CPU (количество виртуальных процессоров).

  • Хранилище

    • Диск 0 — OS-172 (Блок данных);

    • Диск 1 — AstraLinux1.7.2-DVD (CDROM)

  • Сеть:

    • При необходимости активировать RDP и SSH подключение;

    • В списке доступных сетей выбрать ранее созданную (terminet).

  • ОС и ЦП:

    • Загрузка:

      • В секции Порядок загрузки проставить галочки напротив disk0 и disk1

    • Особенности:

      • Гостевой агент QEMU — Да;

  • Ввод/Вывод

    • Средства графического доступа — SPICE;

    • Видеокарта — QXL.

Создание и запуск ВМ

  1. Перейдите в созданный шаблон и нажмите кнопку Создать ВМ.

  2. Укажите имя ВМ, например tmp-os, потому что далее мы ее жестко уничтожим, чтобы в образе ВМ переключить с постоянный.

  3. Нажмите кнопку Создать ВМ.

И теперь ждем пока ВМ приготовится. Посмотреть статус можно в Экземпляры ВМ → ВМ. Он должен смениться на Выключено

После смены статуса можно запускать гостевую ВМ. Сделать это можно с помощью синей кнопки Play.

Синяя кнопка Play
Синяя кнопка Play

Подключение к гостевой ОС

Брест предоставляет возможность подключиться к гостевой ВМ через разные протоколы:

  • VNC

  • SPICE

  • RDP

  • SSH

Как показала практика стабильно и без лагов работает только подключение через Virt Viewer, т.к. другие способы используют браузер для отрисовки изображения. VNC в браузере работает, но мы же используем протокол SPICE, а вот с ним беда. У меня не передавались нажатия мыши. Поэтому для корректного подключения по данному протоколу нужно установить клиент virt-manager по инструкции с официального сайта. А если вы вдруг используете “не отечественную” ОС Windows, то дополнительно установите драйвер мыши UsbDk с официального сайта SPICE.

Для подключения к гостевой машине: 

  1. В веб-админке Бреста перейдите в Экземпляры ВМ → ВМ и откройте нужный инстанс.

  2. Нажмите синюю кнопку Desktop и выберите Virt Viewer.

    Синяя кнопка Desktop
    Синяя кнопка Desktop
  3. Откройте скачанный файл, он автоматически откроется в Virt Viewer.

Если после установки драйвера UsbDk в гостевой ОС не захватывается курсор мыши, то перезагрузите ВМ.

Установка Astra Linux

Установка стандартная, за исключением двух моментов: 

  1. Вам нужно выбрать Базовый уровень защищенности “Орел”, в противном случае работа видеоагента termidesk-video-agent не гарантирована. Для работы видеоагента в уровне защищенности “Смоленск” необходимо наличие в ОС подписанных модулей ядра linux-headers.

  2. Запретите автонастройку сети.

Остальные настройки мы оставляем на ваше усмотрение.

Настройка гостевой ОС в Брест

Важно! Настройку ОС и установку пакетов надо выполнять от имени пользователя с максимальным уровнем целостности (test).

Настройка сети

Для настройки сети мы будем использовать службу networking, поэтому в гостевой ОС отключите и удалите службу NetworkManager:

sudo systemctl --now mask NetworkManager && sudo apt -y remove network-manager

Обновите информацию о пакетах и установите пакет resolvconf из локального репозитория (CD-ROM):

sudo apt update -y && sudo apt-get install -y resolvconf

В файле /etc/network/interfaces.d/eth0.conf настройке сетевой интерфейс на использование статического адреса: 

auto eth0
iface eth0 inet static
address 10.110.2.243
netmask 255.255.240.0
gateway 10.110.0.1
dns-nameservers 10.110.2.248 77.88.8.8
dns-search example.lan

В дальнейшем эти настройки можно будет переопределить с помощью настроек из панели управления Брест используя метод контекстуализации.

Поднимите сетевой интерфейс с помощью команды: 

sudo ifup eth0

Для удобства администрирования настройте SSH: 

sudo systemctl start ssh
sudo systemctl enable ssh

Для удобства подключитесь по SSH и продолжите настройку.

Настройка репозиториев

  1. В файле /etc/apt/sources.list добавьте строки:

deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-base/ 1.7_x86-64 main contrib non-free
deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.2/repository-extended/ 1.7_x86-64 main contrib non-free
  1. Добавьте репозиторий Termidesk как было написано выше.

Установка необходимых пакетов

Для полноценной работы и управления виртуальной машиной в гостевую ОС нужно установить набор необходимых пакетов: 

  • one-context. Позволяет установить или переопределить данные во время загрузки ВМ используя метод, называемый контекстуализацией;

  • qemu-guest-agent. Вспомогательный демон, который используется для обмена информацией между хостом и гостевой ВМ.  

  • xserver-xorg-video-qxl. Пакет драйвера видеоустройства QXL.

  • xrdp. Нужен для корректной работы подключения по протоколу RDP. 

  • python3-termidesk-agent. Агент ВРМ выполняет взаимодействие с диспетчером Termidesk, конфигурирует ВРМ, фиксирует действия пользователя, реализует передачу управляющих сообщений;

  • termidesk-video-agent. Необходим для приема изображения с камеры пользовательского ПК. Для работы требует наличие заголовочных файлов ядра (пакет linux-headers).

  • spice-vdagent. Пакет необходим для работы автомасштабирования и буфера обмена по протоколу SPICE.

  • libcanberra-pulse. Нужен для корректной работы аудио.

  • spice-webdavd и davfs2. Для включения возможности перенаправления каталога из клиентской машины в ВРМ.

  • astra-freeipa-client. Необходимо для ввода ВРМ в домен FreeIPA. 

Обновите список пакетов и установите необходимые вместе с linux-headers (для видеоагента) с помощью команды: 

sudo apt update && sudo apt -y install "linux-headers-`uname -r`" one-context qemu-guest-agent xserver-xorg-video-qxl xrdp python3-termidesk-agent termidesk-video-agent spice-vdagent libcanberra-pulse spice-webdavd davfs2 astra-freeipa-client 

После этого разрешите автоматический запуск видеоагента и агента ВРМ и запустите их:

sudo systemctl start qemu-guest-agent termidesk-agent termidesk-video-agent
sudo systemctl enable qemu-guest-agent termidesk-agent termidesk-video-agent

Для нормального выключения ВМ (без использования окна подтверждения) файл  /etc/acpi/events/powerbtn-acpi-support нужно отредактировать так: 

event=button/power
action=/sbin/poweroff

Создайте каталог для монтирования и выполните монтирование файловой системы для возможности перенаправления каталога: 

sudo mkdir /media/davfs
sudo mount -t davfs http://localhost:9843 /media/davfs

Настройка агента ВРМ

В терминале выполните: 

sudo vdi-agent-config update --host {ip} --key {master-key}

где:

{ip} — IP-адрес хоста с Termidesk;
{master-key} — мастер-ключ Termidesk расположенный в Панель управления → Настройки → Системные параметры → Безопасность.

Установка клиента TrueConf

Для установки клиентского приложения выполните: 

  1. Установите репозиторий:

sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] https://mirror.trueconf.ru/astra17 smolensk non-free" > /etc/apt/sources.list.d/trueconf.list'
  1. Установите ключ GPG:

sudo wget -O- https://mirror.trueconf.ru/deb.trueconf.pub | sudo gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/trueconf.gpg --import 
  1. Измените права для GPG файла:

sudo chmod 644 /etc/apt/trusted.gpg.d/trueconf.gpg
  1. Обновите пакеты и установите клиент:

sudo apt update
sudo apt -y install trueconf

Настройка шаблона для тиражирования ВМ

  1. Выключите ВМ.

  2. В панели управления Брест перейдите в ВМ и откройте настройки машины.

  3. Нажмите красную кнопку Trash, затем выберите Уничтожить (жестко) и подтвердите удаление.

Красная кнопка Trash
Красная кнопка Trash

Диск ВМ сохранится, т.к. ранее в настройках мы задали ему быть постоянным.

  1. Дождитесь завершения удаления виртуальной машины.

  2. Далее перейдите в Образы и выберите диск с типом Блок данных.

  3. На открывшийся странице измените два параметра так: 

    • Тип — ОС;

    • Постоянный — Нет.

  4. Перейдите в Шаблоны → ВМ и выберите ранее созданный шаблон.

  5. Нажмите кнопку Обновить и в открывшемся окне перейдите на вкладку Хранилище и удалите Диск 1.

  6. Нажмите кнопку Обновить.

Настройка Kerberos SSO на TrueConf Server

Важно! На данном этапе установлен TrueConf Server и настроена интеграция с LDAP

Добавьте службу и сгенерируйте keytab-файл для TrueConf Server следуя инструкции из первой части.

Для настройки Kerberos SSO:

  1. Откройте панель управления TrueConf Server и перейдите в раздел Пользователи → Аутентификация.

  2. В подразделе Способы аутентификации выберите Kerberos SSO.

  3. В открывшемся окне загрузите сгенерированный keytab-файл и сохраните изменения.

  4. Активируйте переключатель для Kerberos SSO.

  5. В подразделе Зоны выберите Trusted network

  6. В Маски подсетей при необходимости добавьте диапазон IP-адресов.

  7. В Способы аутентификации активируйте Kerberos SSO и сохраните изменения.

Настройка Termidesk

Подготовка

Я буду настраивать Termidesk с помощью панели управления. Сначала это кажется сложным (без прочтения документации), но после “протыкивания” каждого пункта в меню становится ясно, что к чему. И все же без документации мне не получилось обуздать этого зверя, т.к. настроек действительно много. Начнем с того, что нам понадобиться сделать перед непосредственной настройкой: 

  • установить сертификат;

  • добавить службу на контроллер домена;

  • сгенерировать *.keytab файл и переместить его в рабочий каталог на машину с Termidesk;

  • подготовить токен входа для авторизации на гипервизоре. 

Установка сертификата

Сгенерируйте сертификат для домена termidesk.example.lan, как было рассказано ранее в первой части.

После извлечения файлы нужно переместить с заменой текущий данных в директорию /etc/ssl/:

sudo mv cert.pem /etc/ssl/certs/termidesk.pem
sudo mv cert.key /etc/ssl/private/termidesk.key

После чего на машине с Termidesk измените права доступа для файлов:

sudo chmod 644 /etc/ssl/certs/termidesk.pem
sudo chmod 640 /etc/ssl/private/termidesk.key

И перезапустите службу Apache:

sudo systemctl restart apache2.service

Добавление службы и генерация keytab

Добавьте службу и сгенерируйте keytab-файл следуя инструкции из первой статьи.

Далее необходимо переместить keytab-файл в рабочий каталог Termidesk, назначить ему права и перезапустить службу. Выполните это с помощью команд:

sudo mv termidesk.keytab /etc/opt/termidesk-vdi/
sudo chown termidesk:termidesk /etc/opt/termidesk-vdi/termidesk.keytab
sudo systemctl restart termidesk-vdi

Токен входа для авторизации на гипервизоре

Для интеграции ПК СВ Брест с Termidesk последнему нужен токен входа. Он используется для аутентификации в OpenNebula через Sunstone, интерфейс командной строки или API. 

Токен нам понадобится при добавлении поставщика ресурсов, поэтому мы его заранее подготовим. Для этого:

  1. Перейдите в панель управления ПК СВ Брест (OpenNebula).

  2. В правом верхнем углу нажмите на username пользователя, с под которым вы залогинились. В моем случае это bradmin.

  3. Выберите Настройки.

  4. Перейдите в раздел Аутентификация.

  5. Нажмите кнопку Управление токенами входа.

  6. Скопируйте токен авторизации или создайте новый выбрав группу brestadmins.

Важно! Обратите внимание на время истечения токена. Если вы создаете новый, то рекомендую указать число побольше, чем 36000 секунд.

Сохраните токен входа. Он нам скоро понадобится. 

Добавление поставщика ресурсов (ПК СВ Брест)

Перейдите в Компоненты → Поставщики ресурсов, нажмите кнопку Новый и выберите ПК СВ Брест. В открывшемся окне заполните данные: 

  1. Название. Может быть любое, например, ПК СВ Брест.

  2. Версия ПК СВ Брест3.x.

  3. Адрес сервераbrest.example.lan.

  4. Доменexample.lan.

  5. Keytab. Путь к файлу, который мы ранее сохранили —  /etc/opt/termidesk-vdi/termidesk.keytab

  6. Логин и пароль.

  7. Токен, который мы ранее сохранили.

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

После этого в списке появится новый поставщик ресурсов:

Добавление шаблона рабочего места (ВМ)

Шаблон рабочего места — это шаблон ВМ (извините за тавтологию), из которого будет инициализироваться ВМ. Доступно три типа клонирования: 

  • полный клон;

  • связанный клон;

  • связанный клон базовой ВМ на базе снапшота.

Здесь вы выбираете, исходя из вашей задачи. Я для примера буду использовать связанный клон. Для создания шаблона рабочего места:

  1. В списке Поставщики ресурсов выберите нужный объект, в моем случае это ПК СВ Брест.

  2. Нажмите кнопку Новый и выберите тип клонирования.

  3. В открывшемся окне заполните поля:

    • Название. Внутреннее имя шаблона, используется только в Termidesk.

    • Комментарий. Заметка для администратора.

    • Хранилище. Используется, если к Бресту подключены несколько хранилищ. В нашем случае — default.

    • Базовый шаблон. Имя шаблона, из которого будет создаваться ВМ. Названия подгружаются из Бреста.

    • Базовое имя. Имя, которое будет использоваться для ВМ созданных из данного шаблона. 

    Важно! Оно должно состоять только из латинских букв, цифр и знака "-" (дефиса).

    • Длина суффикса. Числовое значение будет добавляться к базовому имени, например, test-vm001, test-vm002. Его длина может быть от 3 до 6, по умолчанию 5.

  4. После этого нажмите кнопку Сохранить.

Таким образом вы можете создать необходимое количество шаблонов рабочих мест.

Добавление домена аутентификации (FreeIPA)

По умолчанию Termidesk на борту имеет свое внутреннее хранилище пользователей. Но у нас же есть LDAP (FreeIPA), поэтому мы подключим его для авторизации пользователей с помощью доменной учетной записи. Для этого:

  1. Перейдите в Компоненты → Домены аутентификации.

  2. Нажмите кнопку Новый и выберите FreeIPA.

  3. В открывшемся окне заполните поля:

    • Название.

    • Комментарий.

    • Приоритет. Чем меньше число, тем выше приоритет.

    • Метка. Короткое имя для данного объекта.

    • Сервисный аккаунтHTTP/termidesk.example.lan.

    • ДоменEXAMPLE.LAN.

    • Keytab. Путь к файлу, который мы ранее сохранили — /etc/opt/termidesk-vdi/termidesk.keytab.

    • Сервер FreeIPA. Доменное имя сервера — freeipa.example.lan.

    • Проверка SSL. Для использования внутри корпоративной сети с самоподписанными сертификатами отключите проверку SSL.

    • Группа администраторов. Название группы на контроллере домена, участники которой будут считаться администраторами Termidesk.

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

После этого в списке появится новый домен аутентификации:

Добавление групп

Теперь в домен аутентификации нужно добавить группы, пользователи которых будут авторизовываться в Termidesk. Для этого:

  1. В списке Домены аутентификации выберите нужный, в моей случае это FreeIPA. 

  2. В разделе Группы нажмите кнопку Новый и выберите Группа.

  3. В открывшемся окне заполните поля:

    • Группа. Имя группы на контроллере домена FreeIPA. Есть живой поиск при вводе, мелочь, а приятно.

    • Комментарий. Заметка для администратора.

    • Статус оставьте Активный.

  4. Нажмите кнопку Сохранить.

В дальнейшем в разделе Пользователи отобразится список тех, кто успешно авторизовался в Termidesk:

После настройки домена аутентификации рекомендую отключить Встроенный.

Настройка параметров гостевой ОС

Кто ходит в гости по утрам…
Кто ходит в гости по утрам…

Для правильной настройки рабочего места Termidesk требует указать параметры гостевой ОС. Их настройка доступна в зависимости от выбранного типа рабочего места:

  • ОС Linux или ОС Linux в домене MS Active Directory/FreeIPA/ALD;

  • ОС Windows или ОС Windows в домене MS Active Directory/FreeIPA/ALD.

Для создания шаблона:

  1. Перейдите в Компоненты → Параметры гостевых ОС

  2. Нажмите кнопку Новый и выберите ОС Linux (в домене FreeIPA)

  3. В открывшемся окне заполните поля:

    • Название. Внутреннее имя шаблона, используется только в Termidesk.

    • Комментарий. Заметка для администратора.

    • Аккаунт и Пароль.

    • При необходимости установите значение длительности сессии пользователя. По умолчанию -1, то есть не ограниченно.

  4. Нажмите кнопку Сохранить.

Настройка сети

Вы можете разграничить доступ к рабочим местам на основе IP-адресов. Грубо говоря, разбить существующую сеть на VLAN, чтобы маркетолог Вася из отдела N1 случайно каким-то образом не сменил IP и не занял мощную ВМ разработчика Пети из отдела N2. 

Ну а если вы не хотите кого-то ограничивать, то для получения доступа к ВМ вам все равно придется создать, как минимум, одну сеть. Уж простите, как есть ????.

Для настройки сети: 

  1. Перейдите в Компоненты → Сети и нажмите кнопку Новый.

  2. В открывшемся окне заполните поля:

    • Название.

    • Диапазон (адресов). Допустимы различные форматы, например,
      A.B.C.*, A.B.C.D/N, A.B.C.D - E.F.G.D

  3. Нажмите кнопку Сохранить.

Как вы уже поняли, можно создать N-ое количество сетей. Ниже они (сети) нам понадобятся для настройки протоколов доступа.   

Настройка протоколов доставки

Termidesk поддерживает несколько протоколов доставки для VDI: 

  • SPICE

  • VNC

  • RDP

Мы будем использовать протокол SPICE (vdi-viewer), потому что только он поддерживает “прокидывание” веб-камеры в ВРМ.

Для создания нового протокола:

  1. Перейдите в Компоненты → Протоколы доставки.

  2. Нажмите кнопку Новый и выберите SPICE (vdi-viewer, эксперим.).

  3. В открывшемся окне заполните поля:

    • Название.

    • Комментарий.

    • Приоритет. Чем меньше число, тем выше приоритет.

    • URL шлюзаwss://termidesk.example.lan/websockify.

    • Доступ из сетей — Да.

    • Сети. Список сетей в которых должен работать этот протокол. Пустой список означает “все сети”.

    • Разрешенные устройства. Список ОС, для которых будет доступно подключение по данному протоколу. Пустой список разрешает любое совместимое устройство.

  4. После заполнения данных, нажмите кнопку Тест для проверки корректности данных и кнопку Сохранить.

Создание рабочего места

Наконец-то мы перешли к разделу к созданию рабочего места для наших/ваших пользователей.

Рабочее место не может существовать как отдельная сущность, а только в фонде рабочего места. И что это такое? По определению: 

Совокупность подготовленных ВРМ для доставки по одному или нескольким протоколам удаленного доступа в зависимости от полномочий пользователей

Честно говоря, я ничего здесь не понял, поэтому объясню немного проще для тех, кто первый раз сталкивается с Termidesk. Фонд — это пространство, в котором созданы ВМ из определенного (одного) шаблона, доступны по определенным протоколам определенным пользователям. Не много ли слова определенный? Нет, в этом и суть. Несколько одинаково настроенных ВМ называются фондом. Поэтому переходим к его созданию. 

Создание фонда 

Для создания фонда: 

  1. Перейдите в Рабочие места Фонды и нажмите кнопку Новый.

  2. В открывшемся окне заполните поля:

    • Название.

    • Комментарий.

    • Выберите Шаблон из которого будет создаваться ВМ в фонде.

    • Выберите Параметры гостевой ОС с которыми будут создаваться ВМ в фонде.

    • Изображение, с которым будет отображаться карточка ВМ. Картинку можно загрузить в Настройки → Галерея.

    • URL поддержки (при необходимости).

    • Кеш рабочих мест 1-го уровня. Количество ВМ, которые нужно поддерживать наготове (запущенными) для быстрого подключения пользователей.

    • Кеш рабочих мест 2-го уровня. Сколько рабочих мест поддерживать в спящем режиме для экономии ресурсов.

    • Максимальное количество рабочих мест.

  3. Нажмите кнопку Сохранить.

Мы создали фонд рабочих мест. Теперь перейдем к его настройке. 

Настройка фонда

В списке, после создания фонда, отобразится его название. Нажмите на него для перехода к настройкам. Здесь уже будет все просто. В открывшемся окне вам будут доступны несколько вкладок:

Перед публикацией фонда важно настроить параметры на двух вкладках: Пользователи и группы, Протоколы доставки.

Пользователи и группы

На этой вкладке вы должны выбрать пользователей или группы, которым будет предоставлен доступ к созданным ВМ в этом фонде. Здесь не буду расписывать пошагово настройки, т.к. все интуитивно понятно.

Протоколы доставки 

Аналогичная вкладка с простыми настройками. Нужно добавить протоколы, по которым можно будет подключиться к ВМ.

Публикация фонда

Перейдите на вкладку Публикации, нажмите кнопку Новый и кнопку Опубликовать (причину указывать не обязательно).

Как же происходит публикация фонда? 

Если не углублятся в подробности запросов и API, то алгоритм следующий:

  1. Создание копии образа и шаблона ВМ на ПК СВ Брест.

  2. Из скопированного шаблона инициализируется создание ВМ.

  3. Настройка сети и применение параметров гостевой ОС.

  4. Перезагрузка ВМ.

Как понять, что фонд готов к работе?

На вкладке Публикации статус редакции должен быть — Действительный.

Подключение к ВРМ

Для подключения к виртуальному рабочему месту мы будем использовать Termidesk Client, потому что только он поддерживает протокол доставки SPICE (vdi-viewer). Установить его можно из официального репозитория Termidesk.

После запуска клиента у вас отобразится такое окно:

Перед подключением к серверу перейдите в настройки (шестеренка) и снимите галочку Проверка SSL сертификата

Шестеренка
Шестеренка

При подключении выберите домен авторизации FreeIPA:

После успешной авторизации у вас отобразится список доступных виртуальных рабочих мест. Если вы настроили несколько протоколов доставки, то для “проброса” веб-камеры нужно выбрать SPICE (vdi-viewer). У вас может быть и другое название, то, которое вы задали при настройке протокола доставки.

Для подключения к ВРМ совершите double-kill двойной клик по названию.

Авторизация в домене (ОС)

После подключение у вас отобразится окно с входом в локальную учетную запись ОС. Для входа в доменную учетку: 

  1. На клавиатуре нажмите сочетание клавиш Alt + U или перейдите в Действия → Выбор пользователя.

  2. Нажмите на Этот компьютер и выберите ваш домен (example.net).

  3. Введите логин/пароль и нажмите кнопку Войти

Включение веб-камеры

В Termidesk Client для “проброса” веб-камеры существует два способа. В панели инструментов нажмите кнопку USB и выберите Перенаправление USB или Веб-камера.

Кнопка USB
Кнопка USB

Эти режимы отличаются доступными параметрами камеры:

Перенаправление USB

Веб-камера

1280x720p, 30fps

1280x720p, 10fps
848x480p, 30fps
640x480p, 30fps
320x240p, 30fps

Хочу заметить, что проброс с помощью перенаправления USB меньше нагружает ЦП, но иногда возникают глитчи — часть изображения на доли секунды “рассыпается”. 

Что выбрать — решать вам и вашим пользователям. Возможно это локальные проблемы с текущей камерой. 

Использование TrueConf

После проброса камеры можно перейти к использованию корпоративной видеосвязи с помощью TrueConf.

После запуска клиента необходимо подключиться к корпоративному серверу (по умолчанию приложение подключается к облачному сервису TrueConf Online).

Для этого: 

  1. Нажмите кнопку Изменить.

  2. В блоке Соединение с сервером выберите TrueConf Server.

  3. Введите FQDN сервера (video.example.net) и нажмите кнопку Подключиться.

Пользователь должен автоматически авторизоваться в клиенте через Kerberos SSO.

На этом настройку работы видеосвязи через VDI можно считать оконченной… 

Выводы

Отечественный VDI существует и он действительно работает. Я произвел нагрузочное тестирование и понял: 

  • Termidesk Client лучше работает на Astra Linux, чем на Windows. На Windows 11 нагрузка на ЦП была 50-60%, а на Astra Linux 1.7.4 — 10-15%. Наверное, здесь решает оптимизация под свою ОС.

  • Задержки в конференции VDI минимальные, такие же как в обычном сценарии. Это значит что Termidesk действительно оптимизирован для использования в видеоконференцсвязи. 

Хотелось бы чтобы развертывание VDI от Termidesk занимало меньше времени. Но, наверное, в ближайшем будущем это невозможно. Думаю, в ближайшие два-три года нам придется все настраивать вручную. 

Кстати, в данной статье Брест и Termidesk работают не в распределенном режиме, то есть каждое решение установлено на одной машине. По хорошему для большей отказоустойчивости нужно создать кластер для Брест и кластер для Termidesk, и это займет еще больше времени и ресурсов. 

Надеюсь, серия из двух статей была полезна. Если есть мысли по отечественному VDI или дополнения к статье, прошу оставить их в комментариях. 

Также оставлю ссылки на официальные сообщества Termidesk и TrueConf:

Можете там также задать вопросы по продуктам. Я задавал, мне помогли.

Комментарии (6)


  1. omgiafs
    14.12.2023 12:55

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

    Кажется даже LFS руками собрать быстрее.


    1. baadzhi Автор
      14.12.2023 12:55

      Да, вы правы. В первый раз это кажется действительно очень трудоемким. Но я скажу, что после n-ной переустановки, процесс не такой уж и сложный)


  1. DikSoft
    14.12.2023 12:55

    Искренне сочувствую тому, кому придётся эту дендро-фекальную технологию потом саппортить. Если только установка вылилась в неслабый квест, то что будет при обновлении?


    1. baadzhi Автор
      14.12.2023 12:55

      Обновление моего стенда не такое сложное как представляется. По сути заключается в монтировании репозитория, создания бэкапа, остановки служб и затягивании новой версии через apt install.

      А вот если бы установка софта была распределительной, например, в кластере, то там все намного страшнее)


      1. DikSoft
        14.12.2023 12:55

        Не разделяю вашего оптимизма. Обычно, если что-то собрано из материалов определённого постом выше качества, то и обновление выливается в увлекательное путешествие. Желаю Вам, чтобы в данном случае произошло чудо, и всё проходило гладко.


        1. baadzhi Автор
          14.12.2023 12:55

          Да, в целом с вами согласен. Интересно, Citrix VDI намного легче ставится?