Сегодня рассмотрим пример установки и настройки LTSP сервера на Ubuntu 18.04.
Linux Terminal Server Project (LTSP) — это свободно распространяемый дополнительный пакет для Linux с открытым исходным кодом, который позволяет нескольким людям с маломощными компьютерами (терминалами) использовать вычислительные мощности одного более производительного компьютера (сервера). При этом, все приложения запускаются на сервере, а терминалы, так же называемые тонкими клиентами (или X-терминалами), просто принимают видеоряд, посылаемый сервером, и кроме него ничего не обрабатывают. Как правило, терминал представляет собой маломощный компьютер, в нём даже может отсутствовать жесткий диск, вследствие чего он может работать тише, чем обычный настольный компьютер.
LTSP был переработан и переписан с нуля в 2019 году alkisg для поддержки новых технологий, таких как systemd, обновленные среды рабочего стола, Wayland, UEFI и т. д. Сейчас только новая версия активно развивается, в то время как старая(теперь называется LTSP5) находится в режиме минимального обслуживания. В связи с эти статья была полностью переработана для нового LTSP сервера.
Была установлена Ubuntu 18.04. Как установить систему я думаю вы разберетесь сами, благо материалов на эту тему в интернете куча. Будем считать, что система установлена и готова к использованию, все действия подойдут для всех производных дистрибутивов Ubuntu
Структура сервера LTSP
Что мы должны знать — это компоненты из которых состоит сервер:
- DHCP-сервер — используется для выдачи клиентам IP-адресов и информации о tftp-сервере и пути к загрузчику pxelinux. По дефолту используется dnsmasq, но можно использовать и isc-dhcp-server.
- iPXE — сетевой загрузчик, который показывает меню начальной загрузки клиента.
- mksquashfs — создает сжатую копию образа, который будет использоваться при работе клиента.
- TFTP-сервер — отдает по tftp-протоколу загрузчик, ядро и главный конфиг
ltsp.conf
. - NFS /NBD — Транслирует образ системы в сеть.
- SSH-сервер — используется для авторизации пользователей и передачи их домашних каталогов на терминальные станции.
Требования к терминальному серверу
- Рекомендуется 2-х (и более) ядерный процессор,
- 512 Мб RAM на систему и по 120 Мб RAM на каждого терминального пользователя.
- Сеть — 100 Мбит/с, желательно для тонких клиентов выделить отдельную сеть
- HDD — не менее 10Гб свободного пространства
Установка LTSP сервера на Linux
Для начала приведем систему в актуальное состояние:
sudo apt update && sudo apt dist-upgrade -y
Теперь давайте добавим официальный репозиторий LTSP сервера.
Ubuntu
sudo add-apt-repository ppa:ltsp --yes && sudo apt update
Debian
sudo wget https://ltsp.org/misc/ltsp-ubuntu-ppa-focal.list -O /etc/apt/sources.list.d/ltsp-ubuntu-ppa-focal.list
sudo wget https://ltsp.org/misc/ltsp_ubuntu_ppa.gpg -O /etc/apt/trusted.gpg.d/ltsp_ubuntu_ppa.gpg
sudo apt update
Теперь можно приступить к установке LTSP сервера и его зависимостей.
sudo apt install --yes --install-recommends ltsp ltsp-binaries dnsmasq nfs-kernel-server openssh-server squashfs-tools ethtool net-tools epoptes
Настройка LTSP сервера
Добавляем пользователей в ltsp сервер
Добавим нашего пользователя в группу epoptes c правами sudo
sudo gpasswd -a ${SUDO_USER:-$USER} epoptes
Для добавления обычного пользователя набираем:
sudo gpasswd -a user1 epoptes
Конечно пользователь user1 должен существовать на машине «родители». Добавить пользователя в систему:
sudo adduser user1
После внесения изменений (пользователей) необходимо пересобрать образ и initrd. Об этом ниже по статье!
Конфигурация сети
Для начала настроим нашу сеть для LTSP сервера. Если у вас один сетевой интерфейс, то команда конфигурирования будет выглядеть так:
sudo ltsp dnsmasq
Если же у вас два сетевых интерфейса, то необходимо сначала назначить интерфейсу который будет смотреть в сторону клиентов статический IP-адрес (например 192.168.67.1 с маской 255.255.255.0). После назначения статического IP-адреса конфигурируем сеть:
sudo ltsp dnsmasq --proxy-dhcp=0
Если dnsmasq отказывается запускаться (ругается на используемый порт), то необходимо отключить systemd-resolver. Для этого набираем следующие команды:
sudo systemctl stop systemd-resolver.service
sudo systemctl disable systemd-resolver.service
И пробуем запустить dnsmasq
sudo /etc/init.d/dnsmasq restart
sudo ltsp dnsmasq --proxy-dhcp=0
Создаем образ для клиента
Далее создаем образ LTSP сервера для тонких клиентов следующей командой:
sudo ltsp image /
Приведенная выше команда установит по умолчанию 64-битный образ ubuntu. Если вы предпочитаете 32-разрядный образ, наберите такую команду:
sudo ltsp image x86_32
Также можно использовать образы виртуальных машин от VirtualBox. Тогда команда примет вид:
sudo ln -s "/home/user/VirtualBox\ VMs/debian/debian-flat.vmdk" /srv/ltsp/debian.img
ltsp image debian
Данной командой мы создаем симлинк на виртуальную машину debian, которая расположена в директории по пути /home/user/VirtualBox\ VMs/debian/
. И сконфигурировали LTSP сервер на этот образ.
Настройка iPXE
Теперь настроим iPXE:
sudo ltsp ipxe
Настройка NFS сервера
sudo ltsp nfs
Теперь необходимо настроить NFS-сервер. После ввода команды ltsp nfs
в директории /etc
генерируется директория с конфигурационным файлом для nfs сервера. Откроем её:
sudo nano /etc/exports.d/ltsp-nfs.exports
В данном файле должны быть указаны следующие параметры:
/srv/ltsp *(ro,no_root_squash,async,no_subtree_check)
Директория /srv/ltsp
разрешена только для чтения.Если Вы хотите разрешить её ещё и для записи, то укажите вместо параметра ro
параметр rw
/srv/ltsp *(rw,no_root_squash,async,no_subtree_check)
После, сохраняем файл и перезапускаем NFS-сервер:
sudo /etc/init.d/nfs-kernel-server restart
либо
sudo exportfs -ra
Создадим ltsp.img
sudo ltsp initrd
Имейте в виду, что вам нужно запускать ltsp initrd
после каждого обновления пакета LTSP, или при добавлении новых пользователей, или при создании и изменении /etc/ltsp/ltsp.conf
Установка DNS
Если вы выбрали вместо dnsmasq пакет isc-dhcp-server, то вам также понадобится DNS сервер. Самый распространенный на данный момент считается BIND9.
sudo apt install bind9
Как настроить зону для DNS на Ubuntu 18.04 смотрим статью — Установка и настройка DNS (bind9) на Ubuntu.
Установка DHCP
Устанавливаем пакет isc-dhcp-server вместо dnsmasq
sudo apt install isc-dhcp-server -y
Как настроить DHCP на Ubuntu 18.04 смотрим статью — Установка и настройка DHCP (isc-dhcp-server) на Ubuntu.
Конфиг ltsp.conf
Вот мы и подобрались к самому главному. Все доработки с LTSP сервером необходимо делать в конфигурационном файле который находится по адресу /etc/ltsp/ltsp.conf
и представляет собой нечто иное как описание глобальных переменных.
Чтобы создать начальный ltsp.conf
, выполните следующую команду:
sudo install -m 0660 -g sudo /usr/share/ltsp/common/ltsp/ltsp.conf /etc/ltsp/ltsp.conf
Файл конфигурации разделен на секции:
- Секция
[server]
оценивается только сервером ltsp. - Секция
[common]
оценивается как сервером, так и клиентами ltsp. - В специальном разделе
[clients]
можно определить параметры для всех клиентов.Большинство параметров должны быть размещены здесь. - Разделы MAC-адрес, IP-адрес или имя хоста можно использовать для применения параметров к определенным клиентам. По умолчанию (192.168.67.*).
- Также можно сгруппировать параметры в именованные разделы, такие как
[crt_monitor]
Синтаксис данного файла подразумевает что вы не должны использовать пробелы после и до знака =
, также вы можете закомментировать строку, используя символ #
.
Для проверки ltsp.conf
используйте все туже команду
sudo ltsp initrd
Подробно о параметрах ltsp.conf
Вы можете почитать на официальной странички проекта.
Пример настройки ltsp.conf
Чтобы указать имя хоста и пользователя для авторегистрации в клиенте:
[3c:07:71:a2:02:e3]
HOSTNAME=pc01
AUTOLOGIN=user01
PASSWORDS_PC01="user01/cGFzczAxCg=="
Пароль — «pass01» указывается в кодировке base64. Чтобы вычислить его, запускаем в терминале следующие команды:
base64
pass01
<press Ctrl+D at this point>
cGFzczAxCg==
Чтобы применились все сделанные изменения, нужно перегенерировать initrd
и образ командой
sudo ltsp initrd
sudo ltsp image /
После того как вы установили и настроили сервер тонких клиентов, его надо проверить. Для этого на компьютерах, которые используются в качестве тонких клиентов, надо в BIOS выставить загрузку по сети. Для этого нужны сетевые карты способные загружаться по протоколу PXE. Мне повезло и встроенная сетевая карта поддерживала протокол PXE.
Для тех у кого сетевая карта не поддерживает загрузку по сети необходимо проделать следующие действия.
Загрузка iPXE с USB или CD диска
Скачиваем iso-файл для загрузки из под USB или CD диска.
После загрузки записываем данный файл на USB диск или CD диск удобным для вас способом. Для записи на USB можно воспользоваться: из под Windows — rufus, WinSetupFromUSB; из под Linux — команда dd, различные USB прожигатели.
Ну а далее выставляете в BIOS загрузку либо с CD диска либо с USB диска.
Команды iPXE загрузчика
Приведу ряд команд для iPXE загрузчика. После загрузки нажимаем ctrl+B и попадаем в терминал iPXE
Вы можете перечислить сетевые устройства, обнаруженные iPXE с помощью ifstat
команды:
iPXE> ifstat
и получить IP-адрес с помощью dhcp
команда:
iPXE> dhcp
Вы можете изучить конфигурацию IP и другие параметры DHCP:
iPXE> route
Вы можете загрузить что-либо по сети. В отличие от традиционного PXE ROM, iPXE может загружаться через сеть интернет. Если тестируемая машина подключена к Интернету, вы можете загрузить iPXE демонстрационный скрипт:
iPXE> chain http://boot.ipxe.org/demo/boot.php
Настройка NAT для раздачи интернета тонким клиентам
Если необходимо дать доступ в Сеть для тонких клиентов, то придётся сделать ещё кое-что.
Во-первых, раскомментироваться (убрать # в начале) файла строчку #net.ipv4.ip_forward=1
:
sudo nano /etc/sysctl.conf
net.ipv4.ip_forward=1
Во-вторых, выполнить пару команд. Последнюю команду надо добавить в конец файла /etc/rc.local
перед строчкой exit 0
, чтобы проброс Сети запускался при старте.
sudo nano /etc/rc.local
sudo sysctl -p sudo iptables -t nat -A POSTROUTING -o enp4s0 -j MASQUERADE
- enp4s0 — интерфейс который смотрит в интернет.
На этом на сегодня всё!!!
[endtxt]