| Описанный в статье программный продукт устарел и его развитие в рамках Astra Linux не планируется. Для создания терминальных серверов рекомендуется использовать инструменты инфраструктуры виртуальных рабочих мест Termidesk. |
Данная статья применима к:
|
Linux Terminal Server Project (LTSP) — свободно распространяемое ПО с открытым исходным кодом, позволяющие пользователям с маломощными компьютерами (терминалами) использовать вычислительные мощности одного более производительного компьютера (сервера). При этом все приложения запускаются на сервере, а терминалы, также называемые тонкими клиентами (или X-терминалами), принимают видеоряд, посылаемый сервером, и кроме него ничего не обрабатывают. Как правило, терминал представляет собой маломощный компьютер, в котором даже может отсутствовать жесткий диск, вследствие чего терминал работает тише и потребляет меньше энергии, чем обычный настольный компьютер.
Для передачи клиентам первичной информации (IP-адрес терминала и IP-адрес сервера, к которому должен подключаться терминал) должна использоваться служба DHCP. Далее рассматриваются два варианта настройки служб, входящих в состав Astra Linux:
При соответствующей настройке могут использоваться и другие службы (например, служба DHCP, встроенная в маршрутизатор сети).
Подключение клиентов осуществляется по протоколу SSH (рекомендованный вариант), или по протоколу xRDP.
Входящая в состав Astra Linux версия LTSP поддерживает два режима работы клиентов:
Работа клиентов в сессиях с ненулевыми классификационными метками не поддерживается. |
"Толстый клиент" — по сети загружается полноценный образ с ОС. Приложения выполняются непосредственно на терминальном клиенте, а сервер просто предоставляет доступ к пользовательским данным (домашние каталоги автоматически монтируются при входе пользователя в сессию). Работа с ненулевыми метками безопасности (ненулевыми классификационными метками и ненулевой целостностью) не поддерживается. Клиенту недоступны устройства, подключаемые к серверу, но доступны устройства, подключаемые к клиентской машине. Этот вариант является предпочтительным для современных клиентских машин, особенно машин, использующих графику высокого разрешения (передача по сети графики высокого разрешения может оказаться неприемлемо ресурсоемкой).
Клиент автоматически загружается в "толстом" режиме при наличии в клиенте рабочего стола (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 (ltsp-server-standalone) версии 5.18.12-3.1, позволяющей создавать гостевые образы Astra Linux Special Edition и Astra Linux Common Edition на любой из этих ОС (по умолчанию создается гостевой образ, соответствующий текущей хост-системе). Эта версия доступна для установки:
|
Предполагается, что сетевой интерфейс, через который выполняется подключение терминалов:
Сетевой интерфейс может быть настроен любым предпочтительным способом, например, с помощью Network Manager.
Предполагается, что перед установкой пакетов подключены и настроены репозитории (установочные диски).
Для установки пакетов на Astra Linux Special Edition необходимы:
|
Установка пакетов может быть выполнена с помощью графического менеджера пакетов или из командной строки командой:
sudo apt install ltsp-server-standalone xrdp ssh |
При установке пакета ltsp-server-standalone автоматически будут установлены пакеты:
Установка пакета xrdp необязательна, и нужна для поддержки работы по протоколу xRDP в дополнение к протоколу SSH.
После установки пакетов проверить состояние службы ssh:
| sudo systemctl status ssh |
И, если служба не запущена, то разрешить её автоматический запуск и запустить службу:
| sudo systemctl enable ssh sudo systemctl start ssh |
Если в сети уже присутствует служба DHCP, то следует использовать уже существующую службу, дополнив её настройки как указано ниже. Для корректной загрузки клиентов в настройках подсети, обслуживаемой используемой службой DHCP, должны быть указаны:
В приведенных далее настройках службы isc-dhcp-server указанные настройки соответствуют следующим параметрам:
Перенос параметров должен выполняться в соответствии с эксплуатационной документацией используемой службы DHCP. Если используемая служба DHCP не поддерживает необходимые для терминального сервера настройки (например, встроенная служба DHCP сетевого маршрутизатора), следует рассмотреть возможность замены этой службы. Одновременное использование нескольких служб DHCP в одной сети требует специальных настроек, и, в общем случае, недопустимо. См. также LTSP-cервер с ОС Astra Linux в инфраструктуре Windows-DHCP. |
Далее описаны настройки двух разных служб DHCP - dnsmasq и isc-dhcp-server Обе службы настраивать не нужно, достаточно настроить одну из них. Отличия предлагаемых служб:
|
Служба dnsmasq устанавливается автоматически при установке пакета ltsp-server-standalone. Отдельно эту службу можно установить командой:
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:
Для получения работоспособной конфигурации эти параметры следует отключить (или использовать пример конфигурационного файла, приведенный ниже). Порядок использования proxy см. в справочной системе man dnsmasq. |
Минимальные исправления конфигурационного файла:
- указать диапазон адресов, выдаваемых сервером DHCP (в примере ниже изменения отмечены выделением);
- если в сервере используется несколько сетевых интерфейсов, то указать интерфейс, который должен обслуживаться сервером в параметре interface.
Пример конфигурационного файла:
| # Configures dnsmasq for PXE client booting. # All the files in /etc/dnsmasq.d/ override the main dnsmasq configuration in # /etc/dnsmasq.conf. # You may modify this file to suit your needs, or create new ones in dnsmasq.d/. #interface=eth0 # Log lots of extra information about DHCP transactions. #log-dhcp # IP ranges to hand out. dhcp-range=192.168.56.20,192.168.56.250,8h # The rootpath option is used by both NFS and NBD. dhcp-option=17,/opt/ltsp/amd64 # Define common netboot types. dhcp-vendorclass=etherboot,Etherboot dhcp-vendorclass=pxe,PXEClient dhcp-vendorclass=ltsp,"Linux ipconfig" # Set the boot filename depending on the client vendor identifier. # The boot filename is relative to tftp-root. dhcp-boot=net:pxe,/ltsp/amd64/pxelinux.0 dhcp-boot=net:etherboot,/ltsp/amd64/nbi.img dhcp-boot=net:ltsp,/ltsp/amd64/lts.conf # Kill multicast. dhcp-option=vendor:pxe,6,2b # Disable re-use of the DHCP servername and filename fields as extra # option space. That's to avoid confusing some old or broken DHCP clients. dhcp-no-override # The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86, # Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI pxe-service=X86PC, "Boot from network", /ltsp/amd64/pxelinux # Comment the following to disable the TFTP server functionality of dnsmasq. enable-tftp # The TFTP directory. Sometimes /srv/tftp is used instead. tftp-root=/var/lib/tftpboot/ # Disable the DNS server functionality of dnsmasq by setting port=0 |
Перезапустить сервис dnsmasq командой:
| sudo systemctl restart dnsmasq |
Остановить службу dnsmasq и запретить её автоматический запуск:
sudo systemctl stop dnsmasq |
Установить пакеты:
sudo apt install isc-dhcp-server tftpd-hpa |
Выполнить на сервере терминалов команду:
| sudo ltsp-config --overwrite isc-dhcp-server |
В результате выполнения команды будет создан конфигурационный файл /etc/ltsp/dhcpd.conf для службы isc-dhcp-server следующего вида:
#
# 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";
}
} |
Указанные в полученном файле параметры сетевые адреса и сетевые маски) следует заменить на актуальные. Подробнее про настройку службы isc-dhcp-server см. статью DHCP;
Если в используемой сети нет службы DHCP, а служба DHCP нужна только для сервера терминалов и не используется более ни для чего, то после внесения актуальных сетевых адресов и масок полученных на предыдущем шаге файл можно использовать как файл конфигурации службы isc-dhcp-server, просто скопировав его в каталог /etc/dhcp/:
sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.baksudo cp /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf |
Если служба DHCP используется для иных целей (в том числе, если используется служба, отличная от 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 isc-dhcp-server tftpd-hpa |
Для клиентов требуется выбрать в параметрах BIOS (или в параметрах виртуальной машины) загрузку по сети. Для клиентов на виртуальных машинах может понадобиться изменить тип виртуального устройства Video, установив тип устройства Virtio или иной.
Для создания образа тонкого клиента используется сценарий ltsp-build-client. Особенности применения сценария зависят от создаваемой гостевой ОС (Common Edition или Special Edition).
По умолчанию для подключения терминала используется протокол SSH, подключение выполняется к ОС хоста и при этом доступны все учетные записи ОС.
В 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" \ |
Расширенный репозиторий (параметр --extra-mirror "https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended") указан только для полноты примера, и, если не нужны находящиеся в нем пакеты, то его можно не указывать (см. Репозитории Astra Linux Special Edition x.7: структура, особенности подключения и использования).
Используемые в этом и следующих примерах опции команды ltsp-build-client:
--kernel-packages linux-image-5.4-generic — список пакетов ядра для установки.
Для сборки образов должны использоваться пакеты, присутствующие в подключенных репозиториях. Нарушение этого требования приводит к сборке неработоспособных образов. |
При сборке образа:
После создания образа следует перезапустить службу nbd-server:
|
В 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 |
Для успешной сборки системы необходимы:
Пример команды для сборки образа Astra Linux Special Edition 1.6 с использованием интернет-репозиториев Astra Linux Special Edition РУСБ.10015-01 (очередное обновление 1.6):
| sudo ltsp-build-client --dist smolensk --mirror "https://dl.astralinux.ru/astra/stable/1.6_x86-64/repository" \ --early-mirror "https://dl.astralinux.ru/astra/stable/1.6_x86-64/repository-dev" \ --update-bin /opt/iso/1.06.main.iso --update-dev /opt/iso/1.06.base.iso \ --purge-chroot --components contrib,main,non-free --early-packages dpkg |
В отличие от опций сборки, применяемых в Astra Linux Common Edition, в Astra Linux Special Edition 1.6 используются две обязательные опции: --update-bin — путь к ISO-образу репозитория с обновлением smolensk; В этих опциях работа с распакованными репозиториями не поддерживается. |
Также могут использоваться необязательные опции --mirror, --early-mirror и --extra-mirror, указывающие на распакованные репозитории (примонтированные образы). В этих опциях, в отличие от опций --update-bin и --update-dev, работа с ISO-образами не поддерживается.
Если предполагается использовать графическую оболочку, то следует сразу установить пакет fly-all-main (использовать опцию --early-packages).
В Astra Linux Special Edition помимо устанавливаемых в Astra Linux Common Edition пакетов будут установлены пакеты parsec и linux-astra-modules. В процессе работы сценария будут появляться запросы на установку/монтирование необходимых дисков в каталог /media/cdrom.
В Astra Linux Common Edition по умолчанию для сборки образа будет использоваться тот же дистрибутив и/или архитектура что и на серверной системе, и сценарий сборки образа в простейшем случае может быть вызван без параметров:
sudo ltsp-build-client |
Если в клиентах предполагается дальнейшая работа с пакетами, то следует сразу установить пакет dpkg:
sudo ltsp-build-client --early-packages dpkg |
Опционально в отладочных целях рекомендуется обновить каталоги пакетов в chroot-окружении. Также можно изменить учетные записи, например, задать имя и пароль для локального администратора образа:
[ -d /parsecfs ] && [ -d /opt/ltsp/amd64/parsecfs ] && sudo mount --bind /parsecfs /opt/ltsp/amd64/parsecfs |
В приведенном выше примере первая и последняя команды (монтирование и размонтирование файловой системы /parsecfs) нужны (и сработают) только в Astra Linux Special Edition для образов Astra Linux Special Edition. В Astra Linux Common Edition и для образов Astra Linux Common Edition эти команды не нужны. При этом подразумевается, что распакованная система находится в chroot-каталоге, создаваемом по умолчанию (каталог /opt/ltsp/amd64/), если это не так, то эти команды монтирования и размонтирования нужно изменить соответствующим образом.
Если ранее не был установлен пакет fly-all-main (или какой-то другой нужный пакет), то пакеты можно доустановить в любой момент:
| sudo ltsp-chroot -m apt install <имя_пакета> |
Опция -m включает автоматическое монтирование каталогов, необходимых для установки некоторых пакетов.
При необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру --chroot команды ltsp-build-client);
Команда ltsp-chroot вносит изменения только в chroot-окружения. Для того, чтобы изменения были перенесены в образ (стали доступны клиентам) необходимо обновить созданный образ:
sudo ltsp-update-image |
| Обновление созданного образа с помощью команды ltsp-update-image необходимо выполнять после внесения изменений в chroot-образ (например, после создания нового пользователя). |
По умолчанию для клиентов используется файл конфигурации, находящийся в образе терминального клиента (/opt/ltsp/amd64/etc/lts.conf).
Опционально рекомендуется создать отдельный файл конфигурации по умолчанию для LTSP клиентов:
sudo ltsp-config --overwrite lts.conf |
После создания файла конфигурации на сервере терминалов для клиентов будет использоваться файл /var/lib/tftpboot/ltsp/amd64/lts.conf.
При создании "толстого" образа в него переносятся учетные записи машины, на которой создается образ. Эти записи можно использовать для входа в терминалы, или удалить, изменить, заменить непосредственно в образе. Если после создания образа толстого клиента на сервере LTSP добавляются или удаляются пользователи, то изменения в составе пользователей необходимо зарегистрировать в образе, для чего выполнить команду:
|
Для создания образа толстого клиента нужно:
Либо создать сразу образ толстого клиента, используя опцию --fat-client-desktop, определяющую название пакета - программы рабочего стола:
|
В примере в опции --fat-client-desktop использован стандартный менеджер окон Astra Linux — fly-wm (не путать с дисплейным менеджером fly-dm и файловым менеджером fly-fm);
Для Astra Linux Special Edition 1.7 команда сборки толстого клиента может выглядеть так:
sudo ltsp-build-client --fat-client-desktop fly-wm --late-packages sudo,mc --mirror "https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main" \ |
Либо использовать ранее созданный образ тонкого клиента, установить в него основные пакеты графического менеджера Fly:
sudo ltsp-chroot -m apt install fly-all-main |
Параметр -m включает автоматическое монтирование каталогов, необходимых для корректной установки или удаления пакетов.
При необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру --chroot команды ltsp-build-client);
Если был установлен дисплейный менеджер fly-dm (не путать с оконным менеджером fly-wm и файловым менеджером fly-fm), то запретить его автоматический запуск:
sudo ltsp-chroot -m systemctl disable fly-dm |
При необходимости для команды ltsp-chroot может быть указан дополнительный параметр -a <имя каталога>, задающий расположение образа (аналогично параметру --chroot команды ltsp-build-client);
Если в chroot-окружение вносились изменений, то обновить ранее собранный образ клиента:
sudo ltsp-update-kernels <название_каталога> && sudo ltsp-update-image <название_каталога> |
где указать название каталога, в котором находятся файлы для сборки (каталог указывается относительно каталога /opt/ltsp/). Если не указать ничего - то будет использована архитектура amd64, т.е. будет использован каталог, принятый по умолчанию — /opt/ltsp/amd64/)
Изменить режим работы тонкого клиента следующими командами:
| sudo ltsp-chroot -m astra-modeswitch set 2 exit sudo ltsp-update-image |
Установить пакет xrdp:
| sudo apt install xrdp |
Убедиться, что в файле /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" |
Выполнить команды:
| sudo ltsp-update-image 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=xdmcp PRINTER_0_DEVICE=/dev/usb/lp0 PRINTER_0_TYPE=U |
Подробнее про настройку удаленных подключений для см. Взаимодействие удаленных графических интерфейсов Astra Linux и Windows;