Данная статья применима к:
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
- Astra Linux Special Edition РУСБ.10152-02 (очередное обновление 4.7)
- Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
с установленным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5) - Astra Linux Special Edition РУСБ.10015-16 исп. 1
с установленным обновлением Бюллетень № 20201007SE16 - Astra Linux Common Edition 2.12.24
В данной статье описывается работа с LTSP (ltsp-server-standalone) версии 5.18.12-3.1astra3, позволяющей создавать гостевые образы Astra Linux Special Edition и Astra Linux Common Edition на любой из этих ОС (по умолчанию создается гостевой образ соответствующий текущей хост-системе). Эта версия доступна для установки:
- При работе в Astra Linux Special Edition x.7 - из расширенного репозитория (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования);
- При работе в Astra Linux Special Edition РУСБ 10015-01 (очередное обновление 1.6) с установленным обновлением БЮЛЛЕТЕНЬ № 20200327SE16 (оперативное обновление 5) и Astra Linux Special Edition РУСБ.10015-16 исп. 1 с установленным обновлением Бюллетень № 20201007SE16 - из репозитория со средствами разработки;
- При работе с более ранними обновлениями Astra Linux Special Edition и Astra Linux Common Edition из репозитория Astra Linux Common Edition.
Linux Terminal Server Project (LTSP) — свободно распространяемый пакет для Linux с открытым исходным кодом, позволяющий пользователям с маломощными компьютерами (терминалами) использовать вычислительные мощности одного более производительного компьютера (сервера). При этом все приложения запускаются на сервере, а терминалы, также называемые тонкими клиентами (или X-терминалами), просто принимают видеоряд, посылаемый сервером, и кроме него ничего не обрабатывают. Как правило, терминал представляет собой маломощный компьютер, в котором даже может отсутствовать жесткий диск, вследствие чего он может работать тише и потреблять меньше энергии, чем обычный настольный компьютер.
Для передачи клиентам первичной информации (сетевой адрес терминала и адрес, к которому должен подключаться терминал) должна использоваться служба DHCP. Далее рассматриваются два варианта настройки:
- служба dnsmasq - упрощенная служба, устанавливается вместе с сервером LTSP, включает в свой состав простой TFTP-сервер, и позволяет быстро настроить нужные параметры для работы терминалов;
- служба isc-dhcp-server - полноценная служба DHCP, обычно применяется в больших сетях.
При соответствующей настройке могут использоваться и другие службы (например, служба DHCP, встроенная в маршрутизатор сети).
Подключение клиентов осуществляется по протоколу SSH (рекомендованный вариант), или по протоколу xRDP.
Входящая в состав Astra Linux версия LTSP поддерживает два режима работы клиентов:
- "Тонкий клиент" - По сети загружается минимальный образ с базовой системой и графическим сервером. Приложения выполняются на сервере терминалов, результаты работы передаются по сети графическому серверу на дисплей терминального клиента. Дополнительно в этом режиме поддерживается возможность выполнения отдельных приложений на тонком клиенте (подробнее см. https://manpages.ubuntu.com/manpages/trusty/man5/lts.conf.5.html ).
- "Толстый клиент" - Загружается полноценный образ с ОС. Приложения выполняются непосредственно на терминальном клиенте, а сервер просто предоставляет доступ к пользовательским данным и программам.
В принципе "тонкий клиент" от "толстого" отличается только местом исполнения, и режим исполнения может выбираться при запуске. Важным отличием "толстого" клиента является возможности установки в образ этого клиента дополнительных приложений.
По умолчанию клиент загружается в "тонком" режиме. Клиент загружается в "толстом" режиме (chroot в клиентскую систему) после установки в клиентский образ менеджера рабочего стола (fly-wm). Кроме того, для указания режима загрузки клиентов можно использовать опцию LTSP_FATCLIENT=true/false (по умолчанию не задана) в файле /var/lib/tftpboot/ltsp/amd64/lts.conf на сервере терминалов (подробнее см. https://manpages.ubuntu.com/manpages/trusty/man5/lts.conf.5.html ).
Настройка сервера
Настройка сетевых интерфейсов
Типичный сервер LTSP имеет два сетевых интерфейса:
- Первый интерфейс (eth0) подключен к Интернет, и настройки получает автоматически;
- Второй интерфейс (eth1) подключен к локальной сети, и ему присвоен статический адрес (для примера 192.168.56.10 с маской 24). Через этот интерфейс осуществляется подключение клиентских машин (также находящихся в локальной сети).
Сетевые интерфейсы настраиваем любым предпочтительным способом, например, с помощью Network Manager.
Включение удаленного доступа
Для работы сервера LTSP нужно разрешить удаленный вход в систему:
Установка пакетов
Предполагается, что перед установкой пакетов правильно подключены и настроены репозитории (установочные диски).
Для установки пакетов на Astra Linux Special Edition необходимы:
- Для Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6):
- установочный диск;
- диск со средствами разработки;
- образ обновления установочного диска (update-iso);
- образ обновления диска со средствами разработки (update-dev-iso);
Для Astra Linux Special Edition x.7 требуется подключить расширенный репозиторий (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования).
Установка пакетов может быть выполнена с помощью графического менеджера пакетов или из командной строки командой:
sudo apt install ltsp-server-standalone xrdp ssh
Установка пакета xrdp необязательна, и нужна для поддержки работы по протоколу xRDP в дополнение к протоколу SSH.
Настройка служб DHCP
Далее описаны настройки двух разных служб DHCP - dnsmasq и isc-dhcp-server
Не нужно настраивать обе службы, достаточно настроить одну из них. Если в сети уже присутствует служба DNS, то следует использовать уже существующую службу, дополнив её настройки как указано ниже. Если используемая служба DHCP не поддерживает необходимые для терминального сервера настройки (например, встроенная служба DHCP сетевого маршрутизатора), следует рассмотреть возможность замены этой службы.
Пакет dnsmasq содержит в себе не только упрощенную версию службы DHCP, но и упрощенную версию службы TFTP. При использовании службы isc-dhcp-server служба TFTP должна быть установлена и настроена отдельно (пакет tftpd-hpa).
По возможности не следует использовать упрощенную службу dnsmasq, лучше сразу переходить к настройке и использованию полноценной службы isc-dhcp-server и службы tftpd-hpa.
Установка и настройка службы dnsmasq
Установить службу dnsmasq:
sudo apt install dnsmasq
Создать файл /etc/dnsmasq.d/ltsp-server-dnsmasq.conf конфигурации службы dnsmasq командой :
sudo ltsp-config --overwrite dnsmasq
Отредактировать файл конфигурации /etc/dnsmasq.d/ltsp-server-dnsmasq.conf:
В конфигурационном файле, устанавливаемом по умолчанию, имеются параметры использования proxy:
dhcp-range=192.168.56.0,proxy dhcp-range=192.168.122.0,proxy
Для получения работоспособной конфигурации эти параметры следует отключить (или использовать пример конфигурационного файла, приведённый ниже).
Минимальные исправления - указать диапазон адресов, выдаваемых сервером DHCP (в примере ниже изменения отмечены выделением):Перезапустить сервис dnsmasq командой:
sudo systemctl restart dnsmasq
Настройка служб isc-dhcp-server и tftpd-hpa
Установить пакеты:
Подробнее про настройку службы isc-dhcp-server см. статью DHCP;sudo apt install isc-dhcp-server tftpd-hpa
Создать конфигурационный файл /etc/ltsp/dhcpd.conf, выполнив на сервере терминалов команду:
sudo ltsp-config --overwrite isc-dhcp-serverПри этом будет создан конфигурационный файл /etc/ltsp/dhcpd.conf следующего вида:# # Default LTSP dhcpd.conf config file. # authoritative; subnet 192.168.67.0 netmask 255.255.255.0 { range 192.168.67.20 192.168.67.250; option domain-name "example.com"; option domain-name-servers 192.168.67.1; option broadcast-address 192.168.67.255; option routers 192.168.67.1; next-server 192.168.67.1; # get-lease-hostnames true; option subnet-mask 255.255.255.0; option root-path "/opt/ltsp/amd64"; if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" { filename "/ltsp/amd64/pxelinux.0"; } else { filename "/ltsp/amd64/nbi.img"; } }
Указанные в полученном файле сетевые адреса и сетевые маски следует заменить на актуальные.
Если в используемой сети нет службы DHCP, а служба DHCP нужна только для сервера терминалов и не используется более ни для чего, то после внесения актуальных сетевых адресов и масок полученных на предыдущем шаге файл можно использовать как файл конфигурации службы isc-dhcp-server, просто скопировав его в каталог /etc/dhcp/:
Если служба DHCP используется для иных целей (в том числе, если используется служба, отличная от isc-dhcp-server), то параметрыsudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.bak
sudo cp /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf
sudo systemctl restart isc-dhcp-server
next-server
,option root-path
и блокif substring( option vendor-class-identifier, 0, 9 ) = "PXEClient"
из полученного файла /etc/ltsp/dhcpd.conf должны быть перенесены в конфигурацию используемой службы;Для настройки службы tftpd-hpa в конфигурационном файле /etc/default/tftpd-hpa изменить путь к корню разделяемого ресурса сервера:
TFTP_DIRECTORY="/var/lib/tftpboot"
После внесения изменений в конфигурацию перезапустить службу:
sudo systemctl restart tftpd-hpa
Создание образа тонкого клиента
Для создания образа тонкого клиента используется сценарий ltsp-build-client. Особенности применения сценария зависят от создаваемой гостевой ОС (Common Edition или Special Edition):
Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7)
В Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.7) для сборки образа можно использовать Интернет-репозитории Astra Linux Special Edition x.7, например:
sudo ltsp-build-client --dist 1.7_x86-64 --mirror "https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main" \
--early-mirror "https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base" \
--extra-mirror "https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended" \
--purge-chroot --components contrib,main,non-free \
--kernel-packages linux-image-5.4-generic \
--early-packages fly-all-main,dpkg --mode 2
Используемые опции команды ltsp-build-client:
- --mirror - добавить репозиторий пакетов для базовой установки (зеркало по умолчанию);
- --early-mirror - добавить зеркало с приоритетом выше, чем у зеркала по умолчанию;
- --early-packages - задать список пакетов для установки после завершения базовой установки;
- --purge-chroot - перед установкой очистить каталог, в который будет выполняться установка (если такой каталог уже существует);
- --components contrib,main,non-free - компоненты репозиториев, из которых должна выполняться установка;
- --kernel-packages linux-image-generic - список пакетов с ядрами для установки;
- --mode - режим защиты создаваемого клиента. Задается цифрой (0, 1 или 2). Описание режимов защиты см. Astra Linux Special Edition (очередное обновление x.7): Ключевые изменения в комплексе средств защиты информации).
Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6)
В Astra Linux Special Edition для сборки образа нужно настроить репозиторий или примонтировать установочный диск (или образ диска) Astra Linux Special Edition. Например, образ установочного диска в файле smolensk-1.6-20.06.2018_15.56.iso можно примонтировать командой
sudo mount smolensk-1.6-20.06.2018_15.56.iso /media/cdrom
- установочный диск;
- диск со средствами разработки;
- образ обновления установочного диска (update-iso);
- образ обновления диска со средствами разработки (update-dev-iso).
Сборка образа для Astra Linux Special Edition осуществляется командой:
sudo ltsp-build-client --update-bin <путь_к_update-iso> --update-dev <путь_к_update-dev-iso>
В отличие от опций сборки, применяемых в Astra Linux Common Edition, в Astra Linux Special Edition 1.6 используются две обязательные опции:
--update-bin - путь к ISO-образу репозитория с обновлением smolensk;
--update-dev - путь к ISO-образу репозитория с обновлением smolensk-devel.
Также могут использоваться необязательные опции --mirror, --early-mirror и --extra-mirror, указывающие на распакованные репозитории (примонтированные образы).
Если предполагается использовать графическую оболочку, то следует сразу установить пакет fly-all-main (так же, как в Astra Linux Common Edition, использовать опцию --early-packages).
В Astra Linux Special Edition помимо устанавливаемых в Astra Linux Common Edition пакетов будут установлены пакеты parsec и linux-astra-modules. В процессе работы сценария будут появляться запросы на установку/монтирование необходимых дисков в каталог /media/cdrom.
Astra Linux Common Edition
В Astra Linux Common Edition по умолчанию для сборки образа будет использоваться тот же дистрибутив и/или архитектура что и на серверной системе, и сценарий сборки образа в простейшем случае может быть вызван без параметров:
sudo ltsp-build-client
sudo ltsp-build-client --early-packages fly-all-main
- --chroot <название папки> - название папки с образом относительно каталога /opt/ltsp/ (по умолчанию - amd64);
- --dist <название дистрибутива> - задаёт для сборки дистрибутив, отличный от используемого по умолчанию дистрибутива серверной системы. Поддерживаются два варианта: orel или smolensk;
- --mirror <url> - задаёт для сборки другое расположение зеркала репозитория, из котрого нужно ставить систему (по умолчанию http://dl.astralinux.ru/astra/current/orel/repository);
- --early-packages <название пакетов> — установка в клиентский образ дополнительных пакетов.
После завершения работы образ системы будет записан в /opt/ltsp/images. Распакованная система будет расположена в каталоге /opt/ltsp/amd64, или в том подкаталоге каталога /opt/ltsp/, который был указан с помощью необязательной опции --chroot.
Настройка образа тонкого клиента
Опционально в отладочных целях рекомендуется обновить каталоги пакетов и задать пароль для локального администратора в клиентском образе (вместо <adminname> указать имя администратора):
sudo ltsp-chroot -m
apt update
useradd -g adm -G sudo -s /bin/bash -m <adminname>
passwd <adminname>
exit
[ -d /parsecfs ] && [ -d /opt/ltsp/amd64/parsecfs ] && sudo umount /opt/ltsp/amd64/parsecfs
Если ранее не был установлен пакет fly-all-main (или какой-то другой нужный пакет), то его можно доустановить в любой момент:
Обновить созданный образ:
sudo ltsp-update-image
Перезапустить службы nbd-server, sshd, xrdp:
sudo systemctl restart nbd-server sshd xrdp
Опционально рекомендуется создать отдельный файл конфигурации по умолчанию для LTSP клиентов:
sudo ltsp-config --overwrite lts.conf
Создание и настройка образа толстого клиента
Если после создания образа толстого клиента на сервере LTSP добавляются или удаляются пользователи, то изменения в составе пользователей необходимо зарегистрировать в образе, для чего выполнить команду:
sudo ltsp-update-image
Для создания образа толстого клиента нужно:
Создать и настроить образ тонкого клиента по описанной выше процедуре или создать сразу образ толстого клиента:
sudo ltsp-build-client --fat-client-desktop fly-wm --late-packages sudo,mc
Где параметры:
--fat-client-desktop - название рабочего стола (fly-wm)
--late-packages - название дополнительных пакетов, отсутствующих в стандартном наборе для создания тонкого клиента (в данном примере - пакеты sudo и mc)
В параметре --late-packages названия дополнительных пакетов должны быть указаны через запятую без пробелов.Дополнительно может быть указан необязательный параметр --chroot с именем каталога для размещения образа.
Если используется образ тонкого клиента, то установить в него основные пакеты Fly:
sudo ltsp-chroot -m apt install fly-all-main
При необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру --chroot команды ltsp-build-client);
- Аналогично, с помощью команды ltsp-chroot -m apt install установить в созданный образ опциональные метапакеты (или же необходимые пакеты по отдельности):
• Метапакет fly-all-optional - включает в себя пакеты ark, clementine, compton, fly-admin-iso, fly-fm-crypt, gparted, guvcview, kgpg, librsvg2-bin, qapt-deb-installer, qbat, recoll, speedcrunch, synaptic, vlc, vlc-astra, vlc-l10n, vlc-plugin-access-extra, xca, yelp;
• Метапакет fly-all-games - включает в себя пакеты klines, kmines, kpat, supertux, warzone2100, xonotic;
• Пакет libreoffice - кроссплатформенный, свободно распространяемый офисный пакет с открытым исходным кодом;
• другие необходимые пакеты; Если был установлен fly-dm, то запретить его автозапуск:
sudo ltsp-chroot -m systemctl disable fly-dm
При необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру --chroot команды ltsp-build-client);
В используемом файле конфигурации клиента (/opt/ltsp/amd64/etc/lts.conf или /var/lib/tftpboot/ltsp/amd64/lts.conf) изменить значение параметра LDM_SESSION на default (добавить параметр, если его нет), и добавить параметр LDM_PASSWORD_HASH для корректной работы блокировщика экрана:
# If you're using Unity, you might want to install gnome-session-fallback and
# use it by default instead, as it performs better on LTSP thin clients.
LDM_SESSION="default"
LDM_PASSWORD_HASH=TrueОбновить ранее собранный образ клиента:
где вместо <ARCH> указать название каталога, в котором находятся файлы для сборки (каталог указывается относительно каталога /opt/ltsp/ и, если не указать ничего - то будет использована архитектура amd64, т.е. будет использован каталог /opt/ltsp/amd64/)sudo ltsp-update-kernels <ARCH> && sudo ltsp-update-image <ARCH>
Настройка удаленных подключений к тонкому клиенту
По умолчанию подключение осуществляется с использованием оконного менеджера ldm.
Настройка подключения по протоколу XDMCP
В ОС Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6) заменить в файле /opt/ltsp/amd64/usr/share/ltsp/screen.d/xdmcp строку
X_ARGS="$X_ARGS -query ${XDM_SERVER}"
на
X_ARGS="$X_ARGS -query ${XDM_SERVER} -displayID 0:63:0x0:0x0"
В Astra Linux Common Edition выполнение указанных действий не требуется.
Настройка подключения по протоколу RDP
Для rdp подключений в файле /opt/ltsp/amd64/usr/share/ltsp/screen.d/xfreerdp последнюю строку привести к виду
exec xinit /usr/share/ltsp/xinitrc /usr/local/bin/rdp.sh -- "$DISPLAY" "vt${TTY}" -nolisten tcp $X_ARGS >/dev/null
Создать файл /opt/ltsp/amd64/usr/local/bin/rdp.sh (указать актуальный IP-адрес):
#!/bin/bash userdata=$(zenity --forms --title="Вход на сервер" --text="Форма авторизации" --add-entry="Логин:" --add-password="Пароль:"); userlogin="`echo $userdata|cut -d '|' -f 1`"; userpassword="`echo $userdata|cut -d '|' -f 2`"; xfreerdp /v:192.168.56.100 /cert-ignore +sec-nla /d:example.com /u:$userlogin /p: $userpassword /f /drive:usb,/media /network:lan /printer
Сделать созданный файл /opt/ltsp/amd64/usr/local/bin/rdp.sh исполняемым:
chmod +x /opt/ltsp/amd64/usr/local/bin/rdp.sh
sudo ltsp-chroot systemctl disable fly-dm
sudo ltsp-chroot -m update-initramfs -uk all
sudo ltsp-config --overwrite lts.conf
Файл /var/lib/tftpboot/ltsp/amd64/lts.conf привести к следующему виду (исправив IP-адреса на актуальные):
[default] LTSP_CONFIG=True LOCALDEV=True HOTPLUG=True DNS_SERVER=192.168.56.100 SOUND=True MIC_VOLUME=0 CAPTURE_VOLUME=100 CAPTURE_SWITCH=toggle TIMEZONE=Europe/Moscow TIMESERVER=192.168.56.100 SYSLOG_HOST=192.168.56.100 NBD_SWAP=False #NBD_SWAP_SERVER=192.168.56.100 #CONFIGURE_X=False SCREEN_07=xfreerdp PRINTER_0_DEVICE=/dev/usb/lp0 PRINTER_0_TYPE=U
SCREEN_07=xfreerdp
следует изменить на SCREEN_07=xdmcp.
После выполнения вышеуказанных действий на сервере терминалов нужно создать пользователей, после чего можно выполнять загрузку клиентских машин по сети.
Дополнение: настройка автомонтирования usb-устройств
Создать файл /opt/ltsp/amd64/etc/udev/rules.d/udev.rules:
ACTION=="add", KERNEL=="sd[a-z][0-9]", TAG+="systemd", ENV{SYSTEMD_WANTS}="usbstick-handler@%k"
Создать unit для запуска:
[Unit] Description=Mount USB BindsTo=dev-%i.device After=dev-%i.device [Service] Type=oneshot RemainAfterExit=yes ExecStart=/usr/local/bin/automount %I ExecStop=/usr/bin/umount /dev/%I
Создать сценарий монтирования:
#!/bin/bash PART=$1 FS_LABEL=`lsblk -o name,label | grep ${PART} | awk '{print $2}'` if [ -z ${FS_LABEL} ] ; then /usr/bin/mount -t auto /dev/${PART} /media/${PART} else /usr/bin/mount -t auto /dev/${PART} /media/$ {FS_LABEL}_${PART} fi
Разрешить выполнение сценария:
sudo chmod +x /opt/ltsp/amd64/usr/local/bin/automount
Пересобрать образ:
sudo ltsp-update-kernels && sudo ltsp-update-image