- Терминальный сервер NoMachine в KVM
- Содержание
- ALT Linux [ править ]
- KVM [ править ]
- Установка [ править ]
- Настройка [ править ]
- NoMachine [ править ]
- Установка [ править ]
- Настройка [ править ]
- Донастройка Desktop [ править ]
- X2Go [ править ]
- FreeNX
- Содержание
- Немного теории [ править ]
- Описание протокола NX [ править ]
- Как это работает [ править ]
- Установка FreeNX [ править ]
- SSH сервер [ править ]
- Установка пакетов [ править ]
- Особенности [ править ]
- Хинты [ править ]
- Управление сессиями [ править ]
- Проблемы [ править ]
- LTSP/BuildYourself
- Самостоятельная установка ALTSP [ править ]
- Содержание
- Версии [ править ]
- Настройка сервера [ править ]
- Сборка LTSP chroot [ править ]
- Запуск [ править ]
- Вариации на тему [ править ]
- dnsmasq [ править ]
- ALTSP inside OpenVZ [ править ]
- Загрузка тонких клиентов с локальных HDD [ править ]
- Шпаргалка [ править ]
Терминальный сервер NoMachine в KVM
Установка и настройка терминального сервера на базе ALT Linux с использованием виртуализации KVM и продуктов NoMachine
Цель: позволить пользователям удалённо работать в Linux Desktop с возможностью сохранения сессий, просмотра видео со звуком, передачей файлов, подключением из любого места и с любого устройства (полноценно работает даже через браузер(!) и т.д.
Средства: используем ALT Linux в качестве host-системы, KVM-виртуализацию и ALT Linux в качестве десктопа, а так же продукты NoMachine в качестве терминального сервера.
Содержание
ALT Linux [ править ]
Берем свежую сборку сервера на ftp и устанавливаем как обычно. При инсталляции уже есть готовый профиль HN для KVM, а так же «Средства виртуализации KVM» в наборах пакетов. Однако, все равно нужно вручную будет поставить virt-install/virt-manager, kvm и обязательно модуль kvm для ядра, который почему-то тоже не поставился и это можно легко не заметить, при этом у вас будет 100% загрузка CPU.
Ну а баг повесить или письмо черкнуть. —mike (обсуждение) 23:03, 26 октября 2019 (UTC)
KVM [ править ]
Установка [ править ]
В сети очень много различной документации по KVM, почти вся она неактуальная, ключи и опции постоянно меняются. После нескольких попыток использовать virt-install в консоли (неудачных, в начале инсталляции всё зависало почему-то) выяснилось, что простой и рабочий способ (спасибо cas@) — запускать virt-manager у себя на десктопе с подключением к удаленному серверу. Работает быстро и удобно. Десктоп, рассматриваемый в данной инструкции, сделан на базе сборки с Cinnamon DE.
Настройка [ править ]
При создании новой виртуальной машины, прежде чем начать инсталляцию, выберите опцию проверки конфигурации перед началом и в секции Дисплей Spice установите параметр Все интерфейсы, иначе вы не сможете увидеть экран с инсталляцией и при этом не будет никаких ошибок.
В секции Видео VGA установите модель VGA, с QXL были проблемы уже после инсталляции (точно не помню, эксприментально подобрано).
Если вам необходимо пробрасывать порт внутрь гостя, то уже не нужны никакие мосты (bridge) и прочие ухищрения вроде опции -redir у qemu. Сейчас уже можно воспользоваться обычными правилами iptables на хосте и прокинуть нужные порты.
NoMachine [ править ]
Установка [ править ]
NoMachine без ошибок ставится из RPM, автоматически настраивает себя (наш дистрибутив они определяют как Fedora) и добавляют в автозапуск.
Настройка [ править ]
В общем случае никакой особой настройки не требуется. Можно ознакомиться с документацией. В /usr/NX/etc/node.cfg из полезных опций можно включить Virtual OpenGL (секция 18.1). Викт
Донастройка Desktop [ править ]
При использовании настроек по умолчанию в используемом десктопе система запускается в runlevel 5 (graphical) и запускается lightdm. Из-за этого мы получаем несколько недостатков:
- пользователю дважды приходится вводить данные для входа; сначала в NoMachine, потом в lightdm
- не работает установка клиентского разрешения на сервере, доступны только стандартные варианты разрешений
- почему-то не работает передача звука
- любой пользователь можно выключить/перезагрузить сервер
Поэтому просто меняем runlevel:
А так же меняем в /usr/NX/etc/node.cfg команду старта сессии (там будет gnome-session):
В самом Cinnamon рекомендуется так же выключить все эффекты и прозрачности (в разделах Эффекты и Общий).
X2Go [ править ]
Продукты NoMachine платные (однако, можно каждые 30 дней продлевать). Есть открытый продукт с аналогичными возможностями X2Go, основанный на предыдущей версии протокола NX.
Источник
FreeNX
Установка freenx сервера терминалов на ALT Linux Desktop. От «А» до «Я»
Цель данной статьи — описать типовой процесс создания сервера терминалов с учётом особенностей ОС ALT Linux Desktop.
В данном посте изложен мой личный опыт, ни в коем случае не претендующий на академичность. Я просто хочу немного систематизировать те разрозненные куски информации на тему «FreeNX+ALT Linux», что имеются в глобальной сети. — Strangeman
На настоящий момент статья доработана другими участниками.
Содержание
Немного теории [ править ]
Описание протокола NX [ править ]
Основной идеей протокола NX является дифференциальное сжатие данных X-сервера и уменьшение количества передаваемых данных с помощью прокси-сервера. Идея дифференциального сжатия изначально была реализована в протоколе DXPC (Дифференциальный Компрессор X-Протокола), в 1995 году. На основе этих разработок компания NoMachine создала свой коммерческий (но в основной массе открытый) продукт. Также существует полностью открытая и бесплатная реализация NX — FreeNX. Мы будем использовать именно FreeNX.
Как это работает [ править ]
При подключении программы-клиента к серверу NX происходит подключение по протоколу ssh под пользователем nx с авторизацией по ключу, при этом запускается скрипт, который в свою очередь организует подключение по ssh к localhost под пользователем и паролем, указанным клиентом в настройках подключения.
Установка FreeNX [ править ]
Я не буду останавливаться на установке самого ALT Linux’а. Если нужно подробное руководство, то можно найти его, например, здесь.
SSH сервер [ править ]
Итак, будем считать, что у вас на компьютере установлен ALT Linux Personal Desktop версии 4.0.* (у меня стоит 4.0.2). Компьютер также должен иметь выход в Интернет. Для начала запустим ssh-сервер, по каналу которого и происходит обмен данными между сервером и клиентами nx. Для этого в терминале набираем su, затем вводим пароль суперпользователя. Затем набираем
SSH — сервер сгенерирует ключевую пару и впредь будет автоматически запускаться при старте системы.
В случае серверной установки Altlinux sshd обычно уже настроен для автоматического запуска.
Установка пакетов [ править ]
Проверим, включён ли у вас официальный репозиторий. Для этого смотрим содержимое файлов /etc/apt/sources.list и /etc/apt/sources.list.d/* — в консоли от имени суперпользователя выполняем команду grep -vE '^(#|$)' /etc/apt/sources.list /etc/apt/sources.list.d/*:
Если в выводе команды нет строк rpm…, раскомментируйте их в файле /etc/apt/sources.list.d/alt.list.
Далее необходимо обновить ваш список пакетов. В консоли от имени суперпользователя выполняем команду apt-get update. С сервера ALT Linux загрузится список всех содержащихся там пакетов. ПО для ALT Linux поставляется в виде *.rpm — пакетов.
Касается только Altlinux 4.0. Сравнительно недавно у этих пакетов поменялся метод сжатия. Для поддержки нового LZMA метода сжатия нам необходимо обновиться. Для этого от имени суперпользователя набираем следующие строки:
Затем вводим следующую строку для установки пакетов nx:
Система управления пакетами скачает и установит все необходимые программы.
В случае серверной установки Altlinux также нужно установить окружение рабочего стола. Во FreeNX имеется поддержка KDE, Gnome и CDE.
После этого нам остается завершить установку командой
При этом выполнится скрипт /usr/bin/nxsetup с параметром --install и настроит FreeNX. Скрипт спросит, использовать для сервера «общий» ключ NoMachine или локальный и порекомендует использовать общий. Если подключения будут производиться из разных мест, лучше выполнить рекомендацию и использовать общий ключ. Тогда пользователи смогут подключаться, используя клиент от NoMachine без дополнительной настройки:
В P7 при первом запуске /etc/init.d/freenx-server start выполнится полная настройка с немного другими параметрами, там требуется меньше действий.
Затем скрипт проверит конфигурацию и укажет, что желательно исправить. Сообщения «Warning:» можно проигнорировать (см. ниже).
Повторно проверить настройки и совместимость с другими компонентами можно командой
Если в терминале выведется нечто вроде
Значит всё прошло успешно. После этого к серверу можно будет подключаться с помощью клиента от NoMachine, используя те же учётные записи, что и для локального входа в систему.
Особенности [ править ]
- Свежеустановленный freenx-server автоматом может и не запуститься.
Первый запуск freenx-server надо сделать из-под рута и вручную, как /etc/init.d/freenx-server start Пусть сгенерит себе ключи (выдаст характерные сообщения об этом), после первого ручного запуска должен заработать уже автоматом.
- Для использования теневого (shadowing) подключения к пользовательским сессиям требуется утилита netstat из пакета net-utils, которая в дистрибутивах P7 по умолчанию не ставится.
Таким образом для теневого подключения на сервере надо выполнить от root:
Если ssh-сервер настроен не на 22, а на другой порт, в файле /etc/nxserver/node.conf.d/00-general.conf следует указать нужный порт: SSHD_PORT=32
- Если запущенный freenx-server не пускает пользователя с сообщением «Ошибка аутентификации» при вводе заведомо верного пароля — не спешите, возможно и это тоже не совсем ошибка.
По умолчанию аутентификация производится через sshd (кстати, sshd должен быть запущен) по ключу. Ключ пользователя в opennx по умолчанию dsa, такие ключи в sshd по умолчанию отключены. Или в /etc/openssh/sshd.config в параметре PubkeyAcceptedKeyTypes добавить ssh-dss, или сгенерить пользователю свой (по умалчанию ssh-keygen генерит rsa), добавить публичный в /var/lib/nxserver/home/.ssh/authorized_keys2, приватный использовать для opennx.
Хинты [ править ]
- Полноэкранный режим (fullscreen mode): Ctrl-Alt-F
- FreeNX (Русский) — ArchWiki:
CTR+ALT+F | Переключить полноэкранный режим. |
CTRL+ALT+T | Показать диалог завершения или приостановления сессии. |
CTRL+ALT+M | Максимизировать или минимизировать окно. |
CTRL+ALT+Mouse | Drags the viewport, so you can view different portions of the desktop. |
CTRL+ALT+Arrows or CTRL+ALT+Keypad | Moves the viewport by an incremental amount of pixels. |
CTRL+ALT+S | It will activate «screen-scraping» mode, so all the GetImage originated by the clients will be forwarded to the real display. This should make happy those who love taking screenshots ;-). By pressing the sequence again, nxagent will revert to the usual «fast» mode. |
CTRL+ALT+E | Ленивое кодирование изображений. |
CTRL+ALT+Shift+ESC | Экстренный выход и закрытие окна. |
Управление сессиями [ править ]
- GUI: утилита nxsadmin.
- Командная строка: команда nxserver.
Справка: nxserver --help.
nxserver позволяет посмотреть список открытых сеансов, закрыть указанный сеанс или все сеансы указанного пользователя, завершить все открытые сеансы, остановить или запустить сервер, отправить сообщение пользователю или всем.
Проблемы [ править ]
- Если в выводе service freenx-server check вы видите следующие сообщения
и вы планируете использовать проброс принтеров, то вам необходимо поставить пакет samba-client .
- Если в выводе service freenx-server check вы видите следующие сообщения
и вы планируете использовать проброс CIFS-ресурсов, то вам необходимо выполнить нижеприведенные команды:
ВНИМАНИЕ: В этом случае монтирование CIFS-ресурсов будет доступно всем пользователям. Проверьте вывод control cifsmount help, возможно, уже появилась возможность задать допуск специальной группе.
Есть вариант точной выдачи прав простым хаком — создаём группу, задаём эту группу для mount.cifs, выставляем ему SUID и право запуска группе, затем добавляем нужных пользователей в группу:
- Если в выводе service freenx-server check вы видите следующее сообщение:
Исправьте значение COMMAND_SMBUMOUNT_CIFS на /bin/umount.
- Если в выводе service freenx-server check вы видите следующее сообщение:
Смените права доступа у /usr/sbin/cupsd на предложенные. По умолчанию там 0700.
- На ALT Desktop 4.0 команда lpadmin не понимает имя драйвера в виде
Из-за этого на сервере драйвер для принтера не выставляется. Решается в скрипте /usr/bin/nxprint заменой команды у awk
- Если клиенты цепляются с ALT Desktop 4.0, то есть проблема с печатью, т.к. существует бага в dbus 1.0.2, из-за которой у процесса cupsd (на стороне клиента) не закрываются pipe’ы и со времен их кол-во переполняет верхний потолок кол-ва разрешенных открытых файлов [1]. Апгрейд у клиента пакетов libdbus и dbus из branch 4.0 решает проблему
Источник
LTSP/BuildYourself
Самостоятельная установка ALTSP [ править ]
Здесь описан процесс превращения в терминальный сервер уже развёрнутой десктопной [1] системы. Обычно это слишком много труда и достаточно взять уже готовый дистрибутив терминального сервера [2] .
Содержание
Версии [ править ]
Для создания терминального сервера mike@ проверены пакеты из веток:
- 4.0 (выделенная система, 2007-09-11);
- p5 (дистрибутив, 2010-03-15);
- 5.1 (контейнер OpenVZ, 2011-04-03);
- t6 (дистрибутив, 2012-03-09);
- p7 (из стартеркита, 2015-11-28)
Следует использовать пакеты из актуальной копии выбранного бранча либо из дистрибутива терминального сервера. Первые сборки 2006/2007 года имели известные недоработки и нюансы; соответствующие примечания ниже отмечены [OLD] [3] и будут через некоторое время убраны как устаревшая документация.
Бранч 4.1 не применялся [4] для создания дистрибутивов терминального сервера.
Sisyphus по состоянию на весну 2012 года местами пригоден для создания терминального чрута; в kernel-image-ltsp-client-2.6.32-alt1+ есть поддержка KMS, необходимая для текущего xorg .
Настройка сервера [ править ]
Предварительно необходимо подключить один из поддерживаемых бранчей.
- Установить пакет ltsp-server-
(в basic и enhanced оконным менеджером служит twm , в light — icewm ) - Настроить dhcp ; можно взять рабочую заготовку в пакете ltsp-server :
- Настроить tftp-server : дописать в /etc/xinetd.d/tftp рядом с остальными строчку only_from = 192.168.0.0/24 (или другую сеть, на которую настроен DHCP-сервер) и выполнить команды
- Разрешить удалённый доступ к portmap [5] и обеспечить автозапуск сервиса [6] :
- Настроить nfs-server [7] : дописать в /etc/exports строчку
- При объёме памяти бездисковых станций менее 64..128Mb рекомендуется организовать сетевой своп.
- Настроить Display Manager:
- выполнить chkconfig dm on
- для kdm : в секции [Xdmcp] файла /etc/X11/kdm/kdmrc обеспечить Enable=true
- для gdm смотрим файл /etc/X11/gdm/custom.conf :
- в секции [Xdmcp] требуется Enable=true ,
- в секции [daemon] — RemoteGreeter=/usr/lib/gdm/gdmgreeter
- в случае неиспользования локальной X-сессии на сервере (в т.ч. в контейнере OpenVZ) закомментировать в /etc/X11/xdm/Xservers строку
- При необходимости [8] разрешить удалённый доступ к xfs в /etc/sysconfig/xfs должно быть следующее:
Сборка LTSP chroot [ править ]
Для сборки чрута из пакетов требуется [9] :
- отредактировать (при необходимости):
- /etc/ltsp/update-kernels.conf [10] ;
- /etc/ltsp/ltsp-update-kernels.conf ;
- /etc/ltsp/ltsp-build-client.conf :
- ARCH , BASE [11] , MIRROR [12] (настроить на доступный репозиторий)
- ROOTPASS ( prompt — спросить при генерации);
- возможно, EXTRA_MIRROR (например, EXTRA_MIRROR=»file:/var/ftp/ltsp5 i586 ltsp5;file:/var/ftp/ltsp5 noarch ltsp5″ );
- возможно, KERNEL (по умолчанию — kernel-image-std-smp ; достаточно указывать только суффикс std-smp );
- возможно, KERNEL_MODULES (субпакеты через пробел; по умолчанию — alsa )
- CHROOT_IMAGE [13] ;
- удостовериться, что репозиторий для архитектуры $ARCH (в том числе и noarch ) доступен;
- выполнить команду ltsp-build-client[14] ;
- запустить apt-get update , поскольку при предыдущем шаге конфигурация apt подменялась.
Запуск [ править ]
Внимание: проверьте, чтобы настроенный DHCPD не пересёкся с уже используемым в локальной сети! |
- Запустить необходимые сервисы:
- Требуется также обеспечить обратный резолвинг IP клиентов, чтобы избежать таймаутов при отрабатывании dm («крестик на экране») — либо путём настройки DNS на терминальном сервере с обратной зоной для выдаваемых по DHCP адресов, либо хотя бы выполнить нечто вроде (для локального доменного суффикса ltsp):
- При потребности в использовании локальных устройств (CD-ROM, флэшки) выполнить:
Вариации на тему [ править ]
dnsmasq [ править ]
Роль сервера DHCP, TFTP и DNS вместо dhcpd , tftp-server и bind прекрасно исполняет dnsmasq со следующим конфигурационным файлом:
ALTSP inside OpenVZ [ править ]
Недавно повторено и описано тут enp@.
Загрузка тонких клиентов с локальных HDD [ править ]
Шпаргалка [ править ]
Для справки можно подсматривать в профиль, по которому собирался дистрибутив ALT Linux 4.0 Terminal, и фрагмент инсталятора. Оттуда видно, что, скорее всего, будет достаточно установить в VE по вкусу один из пакетов ltsp-server-
Источник