LFNet (LFN) - тонкий клиент RDP и PXE сервер

Например есть локальная сеть с большим количеством менеджеров и бухгалтеров, работающих в 1c, MS office и браузере

  1. Типовое решение : слабый файл-сервер с общей базой 1с + клиенты на windows
    • Клиенты для локального запуска этого софта должны быть мощными и соответственно дорогими
    • Клиентские компьютеры надо обслуживать (менять HDD, лечить вирусы и т.п.)
    • 1с с доступом к базе по сети сильно тормозит
  2. PXE : мощный Терминальный_сервер (TS) + Remote Desktop Protocol (RDP) слабые клиенты (TC)
    • TC - старые ПК (достаточно 1Гб RAM и любого CPU) без HDD или вообще твбоксы
    • ТС - не требуют особого обслуживания. Достаточно иметь запасные
    • TS - чем больше TC тем выгоднее будет PXE решение. Обслуживание TS можно отдать на удаленный аутсорсинг.
    • Т.к. обращение к базе 1с локальное - 1с работает быстрее чем по сети
    • Наличие TS позволяет работать удаленно (из дома)

Таким образом PXE будет дешевле, удобнее, проще и быстрее. Подойдет для :

  • учебного класса
  • общежития
  • многодетной семьи

Альтернативы LFN

    • Платный
    • Нельзя добавить нужный вам софт
    • Избыточно сложен для обозначенной вначале задачи
  • Thinstation. Нужно собирать самому. Образ получается побольше. Старое ядро
    • Размер больше LFN.
    • В porteus v.5 pxe сервер не работает
    • Kiosk в России не работает
    • Загрузка в 2 этапа : сначала ядро и initrd , потом модули по nfs
  • http://openthinclient.org/ Требует регистрацию
  • https://www.iventoy.com - только сервер. Загружает только iso. >20 клиентов требует покупку лицензии
  • https://wiki.libreelec.tv/configuration/network-boot Только мультимедиа контент
  • https://tonk.ru/ - Программное обеспечение продаётся только в составе оборудования. Оборудование от 14тр. Для LFN подойдет любой пк с 1гб RAM

Особенности RDP

Достоинства

  • Клиенты есть под все устройства и операционные системы
  • Маленькая ресурсоемкость TC и малая загрузка канала связи
  • Из-за маленького трафика TS может находиться не в локальной сети (LAN), а в интернет

Недостатки

  • Для настройки на TS Microsoft Windows Terminal Server потребуется серверная версия Windows и специалист или
  • RDP не годится для просмотра видео, игр. Динамичное изображение на весь экран будет покадровым
  • Некоторый софт (например AutoCAD) проблематично установить на TS

Компоненты LFN01

LFN выпускается в виде гибридного iso (EFI+MBR) выбором загрузки клиента или сервера PXE.

  • Cобран на базе Debian 10 x86_64.
  • Состоит только из ядра и одного или нескольких initrd. Т.е. всего 1 PXE этап загрузки. Все максимально упрощено
  • Размер iso около 100Мб (72M initrd-lfn01-2311.zst ; 540K initrd-lfn01s-2311.xz ; 4,8M vmlinuz-6.0.0-pf2-pts+_64)
  • Ядро 6.0.0. Перекомпилено с удалением лишних компонентов (wifi и пр.)
  1. Сервер PXE : dnsmasq (DHCP+TFTP)
  2. TC : openbox + tint2 + xfreerdp 2.11.2 (перекомпилен с урезанием ненужных зависимостей. Т.е. без gtk, qt, что дало возможность уменьшить размер

TS не входит в состав LFN.

Развертывание LFN

  1. Достаточно иметь самый простой свич 100BASE-T или даже 10
  2. Для выхода в интернет потребуется роутер или компьютер (ПК) с двумя сетевыми интерфейсами, выполняющий его роль.
    • Таким ПК может служить TS или PXE сервер LFN (пока этот функционал не реализован)
    • На роутере необходимо сконфигурить LAN : 192.168.0.1/255.255.255.0 и NAT
  3. Необходимо выключить все DHCP в этой подсети. Например на роутере
  4. Запуск PXE сервера 192.168.0.2. Варианты:
    1. На одном из TC загрузить с флэшки (CD или любого носителя) LFN server.
      • Этот же TC может одновременно являться и клиентом (т.е. на нем может работать пользователь). В этом случае этот TC нельзя выключать и перезагружать. В этом случае загрузить пункт «сервер PXE + клиент»
    2. Запустить LFN server на виртуалке на любом ПК в LAN
    3. Если в сети есть ПК с Linux - запустить на нем dnsmasq с /etc/dnsmasq.conf из iso LFN, файл lfn*/initrd-lfn*s-*.xz
      • Распаковать lfn*/initrd-lfn*s-*.xz можно скриптом lfn*/initrd.sh
    4. Если в сети есть ПК с Windows (например TS) - настроить Tftpd64
  5. На всех TC включить в BIOS PXE-boot. Достаточно 1Гб RAM и любого CPU, без HDD
    • Звук пробрасывается с TS на TC.
    • Подключенные на TC флэшки и т.п. - пробрасываются на TS
    • Возможно использовать на TC несколько мониторов
  6. TS устанавливается самостоятельно. В LFN ему присвоен 192.168.0.3:3389
    • TS может находиться в этой LAN или в интернет (виртуалка на хостинге или в другом офисе). В этом случае нужно на роутере сделать портмэппинг 192.168.0.3:3389 на адрес в интернет
    • Принтеры должны быть подключены к TS

Свой конфиг dnsmasq для каждого MAC адреса

Для закрепления ip или запуска другой системы (с другими параметрами) нужно создать отдельный конфигурационный файл для каждого MAC-адреса в dnsmasq:

  1. Убедитесь, что в основном файле конфигурации dnsmasq (/etc/dnsmasq.conf) есть строка conf-dir=/etc/dnsmasq.d, которая указывает dnsmasq использовать все файлы конфигурации в указанном каталоге.
  2. Создайте каталог, в котором будут храниться ваши конфигурационные файлы. Например, /etc/dnsmasq.d/mac_configs/.
  3. В этом каталоге создайте файлы конфигурации для каждого MAC-адреса. Имена файлов должны быть в формате 01:23:45:67:89:ab, где 01:23:45:67:89:ab - это MAC-адрес устройства.
  4. В каждом файле конфигурации, укажите настройки, которые вы хотите применить для соответствующего MAC-адреса. Например, вы можете указать IP-адрес или имя хоста, которое должно быть связано с этим MAC-адресом.

Пример файла конфигурации для MAC-адреса 01:23:45:67:89:ab:

# /etc/dnsmasq.d/mac_configs/01:23:45:67:89:ab
dhcp-host=01:23:45:67:89:ab,192.168.1.100 #привязка ip
tftp-root=/opt/dnsmasq/01:23:45:67:89:ab #другая система 
dhcp-option-force=209,01:23:45:67:89:ab/syslinux.cfg #другие параметры загрузки

Если есть клиенты по wifi

Т.к. в LFN вырезано все для wifi - оптимально загружать с флэшки какой-либо линукс с поддержкой wifi и RDP клиентом (например remmina)

Если есть ARM клиенты (твбокс)

  • ТВбокс в качестве клиента даст еще большую экономию
  • Т.к. для ARM с PXE иногда сложнее - проще загружать клиента с его внутреннего носителя

Тест LFN в Virtualbox

  1. Создать 2 виртуалки с 1 сетевой картой типа «Внутренняя сеть»
  2. На первой загрузить LFN сервер с iso.
  3. На второй нажать F12 + l

Горячие клавиши LFN

  • win+t : терминал. Есть su, mc, htop и прочие основные консольные утилиты
  • ctrl+shift+enter : переход из полноэкранного удаленного рабочего стола (по умолчанию) в оконный режим

Внесение изменений в LFN

Может потребоваться для изменения ip , внешнего вида и т.п. Все изменения делаются под любым Linux на Linux файловой системе (на fat, ntfs нельзя)

  1. Пересборка initrd делается скриптом initrd.sh , который лежит рядом с ними
  2. Пересборка iso :
    • Разборка в директорию iso : sudo mkdir tmp iso && sudo mount lfn*.iso tmp && sudo cp -R tmp iso
    • Сборка скриптом iso-make-hybrid.sh в корне iso

Сервер initrd-lfn*s.xz

Клиент initrd-lfn*.zst

  • TS ip : /usr/local/bin/tl-rdp-cli
  • Кнопки запуска TS : /etc/xdg/tint2/tint2rc
  • Обои : /usr/local/share/backgrounds/tg-1600×900.png
  • Автостарт : /home/live/.config/openbox/autostart

Сборка дополнительного софта

Делать можно в любом дистрибутиве с pfs-util (все LF*)

  1. Распаковать : lfn01/initrd.sh initrd-lfn01-2311.zst
  2. Скопировать в директорию lfn01 из репозитория LFD10 apt-d10-sf04.pfs
  3. sudo chroot2pfs -o soft –mlist initrd-lfn01-2311,apt-d10-sf04.pfs -command bash
  4. apt update && apt install нужный_вам_софт
  5. Полученную директорию soft копируем в lfn01/initrd-lfn01-2311
  6. Запаковать: lfn01/initrd.sh initrd-lfn01-2311 zst

Обсуждение

Печать/экспорт