Подключение к ферме Citrix XenApp бездисковых клиентов на основе Thinstation Linux 5.1

в 18:40, , рубрики: citrix, citrix receiver, citrix xenapp, linux, thinstation, системное администрирование, метки: , , , ,

Данный материал составлен с целью описать последовательность действий для превращения устаревшего компьютерного оборудования в полноценные терминальные бездисковые клиенты с загрузкой по сети. Подобной информации сейчас в интернете достаточно, и хотя она направлена на решение той же задачи, все же, в основном, там идет описание подключений Remote Desktop (RDP), реже VMWare View. Здесь же, как можно догадаться из названия, будет описано все, что нужно для подключения бездискового терминального клиента на основе Thinstation Linux к ферме серверов Citrix XenApp 6. Статья не является пошаговой инструкцией и не рассчитана на новичков.

Сервер загрузки образов и конфигураций

Для загрузки образов по сети требуются DHCP и TFTP сервера. Сервер загрузки можно развернуть на Linux и на Windows, практически я использовал конфигурацию на линукс, поэтому здесь упор пойдет именно на этот вариант, тем не менее это все успешно можно настроить и на Windows. Процесс установки и настройки DHCP и TFTP сервера тривиален, но нам потребуется указать дополнительные параметры.

Для dhcpd в dhcpd.conf требуется добавить следующие строки:

filename "pxelinux.0";
next-server X.X.X.X;

где X.X.X.X — IP-адрес TFTP сервера, на котором будут размещаться наши образы Thinstation Linux.

Для DHCP под Windows Server нужно добавить опции 067 и 066 со значениями какие были приведены выше для dhcpd. Что касается TFTP сервера, то под Windows есть tftpd32, он может работать как служба, и имеет все необходимые функции. Под линукс отлично подойдет xinetd, который есть во многих дистрибутивах.

Конфигурационный файл /etc/xinetd.d/tftp:

# default: off
# description: The tftp server serves files using the trivial file transfer 
#       protocol.  The tftp protocol is often used to boot diskless 
#       workstations, download configuration files to network-aware printers, 
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

Как видно из приведенного выше файла, все, доступные для загрузки, образы и конфигурационные файлы Thinstation Linux будут размещены у нас в директории /tftpboot.

Подготовка Citrix XenApp к подключению citrix-клиентов под линукс

Установка и настройка фермы серверов Citrix XenApp выходит за рамки этой статьи, подразумевается, что ферма уже есть и работает. Чтобы citrix-клиенты из Thinstation Linux успешно подключались к ферме, требуются внести в конфигурацию следующие изменения:

  • Опубликовать рабочий стол как приложение (назовем его Desktop) и добавить в него все сервера фермы, на которых планируется пускать пользователей.
  • Перевести пользовательскую политику Desktop Launches в состояние Allowed. Можно политику Desktop Launches разрешить не глобально на всю ферму, а только на те сервера фермы, на которых опубликовано наше приложение Desktop. Для этого на каждом таком сервере нужно открыть редактор локальной групповой политики (gpedit.msc) и далее в конфигурации пользователя, в Citrix Policies включить политику Desktop Launches.

Помимо изменений конфигурации не лишним будет учесть следующее:

  • Citrix Web Interface, Citrix Secure Gateway (а также Access Gateway, Netscaler и т.д.) в подключения наших бездисковых клиентов не участвуют. Брокерами для подключения являются сервера, указанные в конфигурации Thinstation Linux (thinstation.conf.group-desktop). Можно сделать брокерами все сервера, а можно назначить эту роль на отдельные менее нагруженные сервера.
  • Citrix-клиент под линукс не поддерживает Session Reliability и подключается по стандартному XML (TCP/80 или TCP/8080 в зависимости от конфигурации) + ICA TCP/1494, либо по SSL Relay (TCP/443 по умолчанию).
  • Citrix-клиент под линукс не поддерживает приоритеты подключений по worker-группам, т.е. никакие специально настроенные Load Balancing Policies работать не будут.

Сборка и настройка загрузочного образа Thinstation Linux

Качаем свежий релиз Thinstation Linux, и подготавливаем к сборке. Команды выполняются от рута, подразумевается, что окружение для сборки Thinstation Linux загружается и будет работать в /thinstation:

cd /
git clone --depth 1 git://thinstation.git.sourceforge.net/gitroot/thinstation/thinstation
cd thinstation
./setup-chroot
q
exit
cd /thinstation/build

Далее редактируем конфигурационные файлы build.conf и thinstation.conf.buildtime согласно нашим требованиям. В дальнейшем можно тонко все настроить, сделать разные конфигурации под разное железо, убрать все лишнее чтобы минимизировать размер образа и т.д., но для начала лучше сделать все максимально просто чтобы избежать ошибок из-за дополнительных усложнений. Поэтому я упомяну только важные параметры, которые нужно раскомментировать в build.conf, модули можно игнорировать, т.к. это у нас первая тестовая сборка без оптимизаций, поэтому будем собирать образ со всеми модулями:

Пакеты:

package xorg7-vesa
package ica
package sshd

Параметры:

param rootpasswd <пароль рута>
param basepath .
param icaencryption true

thinstation.conf.buildtime, идущий по умолчанию в дистрибутиве Thinstation Linux, лучше скопировать в отдельный файл, и создать новый следующего содержания:

KEYBOARD_MAP=en
MOUSE_ACCELERATION=1
MOUSE_RESOLUTION=100
MOUSE_SENSITIVITY=1
X_MOUSE_PROTOCOL="IMPS/2"
X_MOUSE_DEVICE=/dev/input/mice
POWERBTN_ACTION=Off
CUSTOM_CONFIG=Off
DAILY_REBOOT=On
SCREEN_BLANK_TIME=0
SCREEN_STANDBY_TIME=0
SCREEN_SUSPEND_TIME=0
SCREEN_OFF_TIME=0
DONT_VT_SWITCH_STATE=TRUE
DONT_ZAP_STATE=TRUE
NET_USE_DHCP=On
NET_HOSTNAME=ts_*
NET_FILE_ENABLED=On
NET_TELNETD_ENABLED=Off
RECONNECT_PROMPT=MENU
TIME_ZONE=Europe/Moscow
NET_TIME_SERVER=<ваш NTP сервер, FQDN-имя или IP-адрес>
NET_REMOTE_ACCESS_FROM="0.0.0.0"
XKEYBOARD="us,ru"
XKBVARIANT=",winkeys"
TFTP_BLOCKSIZE=1024

Не забудьте указать ваш NTP сервер.

Скачиваем файл linuxx86_12.1.0.203066.tar.gz отсюда:
www.citrix.com/downloads/citrix-receiver/linux/receiver-for-linux-121.html
и кладем его в /thinstation/downloads. Билд-скрипт Thinstation Linux по ходу сборки может и сам скачать что нужно, просто я привык использовать свои дистрибутивы.

Запускаем сборку образа:

cd /thinstation
./setup-chroot
q
cd build
./build --allmodules

В процессе сборки начнется установка citrix клиента, который будет задавать вопросы, ответы на них будут приведены там же скриптом сборки Thinstation Linux.

По окончанию процесса сборки нужно перейти в директорию /thinstation/build/packages/ica/opt/Citrix/ICAClient/config и поправить файл appsrv.ini.tpl. По умолчанию, установленный в Thinstation Linux citrix-клиент, может подключаться только на указанный сервер XenApp, что не соответствует нашим требованиям. Нам нужно подключаться к приложению, опубликованному на ферме серверов XenApp, этим достигается большая надежность и отказоустойчивость решения. Клиент не привязан к конкретному серверу, и при подключении, брокер переключает клиента на самый менее загруженный сервер фермы. Само собой, что в этом случае сервера должны быть идентичны по конфигурации и у пользователей должны быть корректно настроены перемещаемые профили, но это уже отдельная тема.

Приведем appsrv.ini.tpl к следующему виду:

Description=$ICAX_TITLE
WinStationDriver=ICA 3.0
TransportDriver=TCP/IP
DoNotUseDefaultCSL=Off
EncryptionLevelSession=$ICAX_ENCRYPTION
Compress=$ICAX_COMPRESS
AudioBandwidthLimit=$ICAX_AUDIO_QUALITY
ClientAudio=$ICAX_AUDIO
UseDefaultSettingForColormap=Yes
ZLMouseMode=2
ZLKeyboardMode=2
NoWindowManager=True
UseFullScreen=Yes
Address=$ICAX_TITLE
TWIMode=$ICAX_SEAMLESS_WINDOW
DisableCtrlAltDel=$ICAX_DISABLECTRLALTDEL

Если на вашей ферме XenApp настроен SSL Relay, и вы хотите защитить ваши подключения с помощью SSL скопируйте в /thinstation/build/packages/ica/opt/Citrix/ICAClient/keystore/cacerts файл корневого сертификата с вашего CA. Файл сертификата должен быть в формате pem, у меня в этом формате сразу заработал, может и другой подойдет, не пробовал.

Снова запускаем сборку образа:

cd /thinstation
./setup-chroot
q
cd build
./build --allmodules

После завершения сборки, в директории /thinstation/build/boot-images/pxe появятся нужные нам файлы. Копируем содержимое /thinstation/build/boot-images/pxe в /tftpboot.

Создаем в /tftpboot конфигурационные файлы thinstation.conf.group-1280@60, thinstation.conf.group-desktop, thinstation.conf.group-mouse, thinstation.hosts:

thinstation.conf.group-1280@60

SCREEN_RESOLUTION="1280x1024"
SCREEN_HORIZSYNC="30-65"
SCREEN_VERTREFRESH="60"

thinstation.conf.group-mouse

MOUSE_RESOLUTION=100
MOUSE_ACCELERATION=1

thinstation.conf.group-desktop

SESSION_0_TITLE="Desktop"
SESSION_0_TYPE=ica
SESSION_0_AUTOSTART=On
SESSION_0_ICA_SERVER=Desktop
SESSION_0_ICA_ENCRYPTION="Basic"
SESSION_0_ICA_COMPRESS=Off
SESSION_0_ICA_AUDIO_QUALITY=High
SESSION_0_ICA_AUDIO=On
SESSION_0_ICA_SEAMLESS_WINDOW=Off
SESSION_0_ICA_SMARTCARD=Off
SESSION_0_ICA_DISABLECTRLALTDEL=On
ICA_BROWSER_PROTOCOL=HTTPonTCP
ICA_WFCLIENT_HttpBrowserAddress=<FQDN имя первого сервера фермы XenApp>:8080
ICA_WFCLIENT_HttpBrowserAddress2=<FQDN имя второго сервера фермы XenApp>:8080
ICA_WFCLIENT_HttpBrowserAddress3=<FQDN имя n-ного сервера фермы XenApp>:8080
ICA_WFCLIENT_InitialProgram=#Desktop

Не забудьте указать полные FQDN имена серверов-брокеров фермы XenApp. Можно указать много таких серверов, увеличивая число в конце параметра HttpBrowserAddressX. Реальный максимум мне неизвестен, с десятью точно работает. Еще здесь подразумевается, что служба XML настроена на порту 8080, исправьте этот параметр если у вас другой порт. Если на вашей ферме XenApp настроен SSL Relay, и вы хотите защитить ваши подключения с помощью SSL, установите параметр ICA_BROWSER_PROTOCOL=HTTPSonSSL.

thinstation.hosts

# Hostname	MAC		Resolution	Mouse_settings	Session
thinstation1	001122334455	1280@60		mouse		desktop

Записи «thinstation1», «001122334455», «1280@60», «mouse», «desktop» указывают на то, что хосту c мак-адресом 001122334455 нужно присвоить имя thinstation1 и применить настройки, прописанные в файлах thinstation.conf.group-1280@60, thinstation.conf.group-mouse и thinstation.conf.group-desktop соответственно. Таким же образом можно сделать разные файлы настроек с разными разрешениями, настройками чувствительности мыши и подключениями к разным ресурсам.

Подготовка бездискового клиента

Системные требования: cетевая карта с поддержкой загрузки по сети PXE LAN BOOTROM и ОЗУ 512Mb. Если выполнить тонкую настройку образа под железо, исключить все лишнее, и если в компьютере системная плата со встроенным видео, то настроить в BIOS резервацию ОЗУ под видеопамять поменьше (2-8Мб), тогда можно ужаться и в 256Мб, но я бы рекомендовал иметь хотя бы 320Мб.
Из настроек основное, что требуется — это включить в BIOS загрузку по сети, и еще в BIOS должно быть правильное время, иначе могут быть проблемы с SSL-подключением (ошибки о сроке действия сертификата).

Что получается в итоге и как это выглядит

Целью было сделать работу бездискового клиента как можно более похожим на работу локального компьютера, поэтому нет никаких дополнительных оболочек, сразу запускается citrix-клиент, и подключается к ферме XenApp согласно конфигурации. По окончании загрузки пользователь сразу видит экран входа в Windows:

Благодарю за внимание.

Автор: biotenshu

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js