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

Источник: habrahabr
biotenshu

Данный материал составлен с целью описать последовательность действий для превращения устаревшего компьютерного оборудования в полноценные терминальные бездисковые клиенты с загрузкой по сети. Подобной информации сейчас в интернете достаточно, и хотя она направлена на решение той же задачи, все же, в основном, там идет описание подключений 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:

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


Страница сайта http://test.interface.ru
Оригинал находится по адресу http://test.interface.ru/home.asp?artId=34978