Переход на тонкие клиенты. Начало.

Тут описывается нелёгкий путь настройки ОС FreeBSD, начиная с установки дистрибутива и заканчивая настройкой каждого сервиса
Ответить
asorochenkov
Сообщения: 14
Зарегистрирован: 11 мар 2011, 09:59

Переход на тонкие клиенты. Начало.

Сообщение asorochenkov »

Итак, мы приняли решение уходить в "тонкие клиенты". Начнем с терминологии.
Тонкий клиент (англ. thin client) в компьютерных технологиях — компьютер или программа-клиент в сетях с клиент-серверной или терминальной архитектурой, который переносит все или большую часть задач по обработке информации на сервер.
Тонкий клиент в большинстве случаев обладает минимальной аппаратной конфигурацией, и отсутствием жёсткого диска для загрузки локальной специализированной ОС. В некоторых конфигурациях системы тонкий клиент загружает операционную систему по сети с сервера, используя протоколы PXE, BOOTP, DHCP, TFTP и Remote Installation Services (RIS).
Нас интересует вариант загрузки по сети PXE.
PXE (англ. Preboot eXecution Environment, произносится пикси) — среда для загрузки компьютеров с помощью сетевой карты без использования жёстких дисков, компакт-дисков и других устройств, применяемых при загрузке операционной системы. Для организации загрузки системы в PXE используются протоколы IP, UDP, BOOTP и TFTP.

PXE-код, обычно находящийся в ПЗУ сетевой карты, получает из сети по протоколу TFTP (получив адрес TFTP-сервера по BOOTP) исполняемый файл, после чего передаёт ему управление.

Спецификация PXE ограничивает размер загрузчика 32 килобайтами, поэтому иногда используется двухстадийная загрузка, когда первый загрузчик получает и запускает вторичный, который уже получает и запускает образ операционной системы.

Одна из реализаций загружаемого по PXE файла — pxelinux из комплекта программ syslinux. pxelinux умеет показывать пользователю меню, похожее на меню syslinux и загружать по сети и передавать управление ядру Linux и программам, имеющим идентичный формат загрузки (например, Memtest86).
Теперь нам известно, что, для его реализации необходимо
1.DHCP сервер
2.TFTP сервер

DHCP сервер в нашей инфраструктуре на FreeBSD должен присутствовать, нам нужно будет немного поправить конфиг. Находим секция subnet и прописываем 2 следующие строки

Код: Выделить всё

 next-server 192.168.XX.2;
 filename "pxelinux.0";
где 192.168.XX.2 - наш сервер FreeBSD, где мы все и делаем
в итоге эта секция у нас должна выглядеть вот так

Код: Выделить всё

subnet 192.168.XX.0 netmask 255.255.252.0 {
  range 192.168.XX.40 192.168.XX.255;
  option domain-name-servers 192.168.XX.2, 192.168.1.7, 192.168.1.1;
  option routers 192.168.XX.1;
  option domain-name "XXX.ru";
  next-server 192.168.XX.2;
  filename "pxelinux.0";
}

Сохраняем изменения и перезапускаем

Код: Выделить всё

inet# /usr/local/etc/rc.d/isc-dhcpd restart
Stopping dhcpd.
Waiting for PIDS: 1321.
Starting dhcpd.
inet# /usr/local/etc/rc.d/isc-dhcpd status
dhcpd is running as pid 92159.
inet#
С DHCP все, далее нам необходим TFTP сервер, пойдем по самому простому способу

Код: Выделить всё

inet# cat /etc/inetd.conf | grep tftp
#tftp   dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot
#tftp   dgram   udp6    wait    root    /usr/libexec/tftpd      tftpd -l -s /tftpboot
inet#
Убираем первый коментарий, и смотрим что у нас получилось и приводим к следующему виду

Код: Выделить всё

inet# cat /etc/inetd.conf | grep tftp
tftp    dgram   udp     wait    root    /usr/libexec/tftpd      tftpd -l -s /usr/home/tftpboot
#tftp   dgram   udp6    wait    root    /usr/libexec/tftpd      tftpd -l -s /usr/home/tftpboot
inet#
Смотрим

Код: Выделить всё

inet# cd /usr/home
inet# ls -l | grep tftpboot
inet#
Отсутствует каталог /tftpboot, создадим

Код: Выделить всё

inet# mkdir /usr/home/tftpboot
inet# ls -l | grep tftpboot
drwxr-xr-x   2 root  wheel        512 Nov  6 15:40 tftpboot
inet#


Теперь сделаем чтобы inetd запускалось при старте

Код: Выделить всё

inet# echo inetd_enable=\"YES\" >> /etc/rc.conf
inet# cat /etc/rc.conf | grep inet
inetd_enable="YES"
inet#
inet# /etc/rc.d/inetd start
Starting inetd.
inet# /etc/rc.d/inetd status
inetd is running as pid 93446.
Итого, у нас готово для запуска и все работает, осталось в директорию /tftpboot выложить файлы загрузчика, меню и т.д.
В принципе можно использовать любую ОС для тонких клиентов, их куча, есть различные конфигурации, мы на текущий момент используем PONIX, скачать можно все с их официального сайта, я возьму с сервера где все уже есть и расскажу о тех файлах - которые менял. В дальнейшем хотелось бы пользоваться свой ОС, но об этом позже, как появится время, напишу об опыте сборки

Код: Выделить всё

files# cd /
files# scp tftpboot.tar.gz asorochenkov@192.168.XX.2:~
The authenticity of host '192.168.XX.2 (192.168.XX.2)' can't be established.
DSA key fingerprint is 00:00:00:00:--:--:--:--:--:69:b0:35:d4:7b:a9:f5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.XX.2' (DSA) to the list of known hosts.
Password:
tftpboot.tar.gz                               100%   52MB  49.9KB/s   17:40
Далее на сервере

Код: Выделить всё

inet# tar zxf tftpboot.tar.gz
inet# mv tftpboot /usr/home/
inet# cd /
inet# ls -l | grep tftp
drwxrwxrwx   8 root  wheel       1024 Oct 29 17:32 tftpboot
inet# cd /usr/home/tftpboot/
inet# ls -l
total 26842
-rw-rw-r--  1 root  wheel      5977 Nov 10  2011 README
-rw-rw-r--  1 root  wheel       911 Dec 22  2011 README.ltsp
-rw-rw-r--  1 root  wheel      1830 Dec  3  2010 README.standalone
drwxrwxrwx  2 root  wheel       512 Oct 22 11:28 asound
drwxr-xr-x  2 root  wheel       512 Jan 29  2010 boot
-rw-r--r--  1 root  wheel   1612224 Feb 21  2012 bzImage
-rw-r--r--  1 root  wheel   9670656 Feb 21  2012 initrd
drwxrwxr-x  2 root  wheel       512 Apr  2  2012 pkg
-rw-rw-r--  1 root  wheel        79 Nov 23  2010 ponix.group-1024x768@60
-rw-rw-r--  1 root  wheel        79 Nov 23  2010 ponix.group-1024x768@85
-rw-rw-r--  1 root  wheel        87 Dec  7  2010 ponix.group-1280x1024@60
-rw-rw-r--  1 root  wheel        88 Dec  7  2010 ponix.group-1280x720@60
-rw-rw-r--  1 root  wheel        88 Dec  7  2010 ponix.group-1280x800@60
-rw-rw-r--  1 root  wheel        88 Dec  7  2010 ponix.group-1366x768@60
-rw-rw-r--  1 root  wheel        87 Nov 23  2010 ponix.group-1440x900@60
-rw-rw-r--  1 root  wheel        89 Dec  7  2010 ponix.group-1680x1050@60
-rw-rw-r--  1 root  wheel        89 Dec  7  2010 ponix.group-1920x1080@60
-rw-rw-r--  1 root  wheel        89 Dec  7  2010 ponix.group-1920x1200@60
-rw-rw-r--  1 root  wheel        24 Nov 23  2010 ponix.group-24bpp
-rw-rw-r--  1 root  wheel        77 Dec  7  2010 ponix.group-800x600@60
-rw-rw-r--  1 root  wheel        77 Nov 23  2010 ponix.group-800x600@85
-rw-rw-r--  1 root  wheel        53 Nov 23  2010 ponix.group-prompt
-rw-rw-r--  1 root  wheel        19 Nov 23  2010 ponix.group-vesa
-rw-rw-r--  1 root  wheel       149 Oct 29 17:32 ponix.hosts
-rw-rw-r--  1 root  wheel       932 Sep 24 11:23 ponix.network
-rw-rw-r--  1 root  wheel      6839 Nov 10  2011 ponix.network.example
drwxr-xr-x  7 root  wheel       512 Jan 29  2010 pxe
-rw-rw-r--  1 root  wheel     15710 Aug 28 11:58 pxelinux.0
drwxrwxr-x  2 root  wheel       512 Oct 29 16:55 pxelinux.cfg
drwxrwxrwx  2 root  wheel       512 Apr  2  2012 upload
-rw-rw-r--  1 root  wheel         8 Feb 21  2012 version
inet#
На Сафоновохлеб сервер терминалов у нас имеет IP 192.168.4.178, правим ponix.network

Код: Выделить всё

inet# cat ponix.network
#####################################
#дКЪ НОХЯЮМХЪ ОЮПЮЛЕРПНБ ЯЛНРПХРЕ   #
#ponix.network.example              #
#####################################

SESSION_0_TITLE="Terminal Server"
SESSION_0_TYPE=freerdp
SESSION_0_FREERDP_SERVER="192.168.4.178"


FREERDP_SOUND=On
FREERDP_USB=On

Пока на этом все. На компьютере/тонком клиенте ставим загрузку по сети и все, счастье есть. Вроде подробно все изложил.
Продолжение следует....
asorochenkov
Сообщения: 14
Зарегистрирован: 11 мар 2011, 09:59

Re: Переход на тонкие клиенты. Начало.

Сообщение asorochenkov »

Совсем недавно столкнулись с проблемой разрешения на широкоформатном мониторе, пробовали прописать различные допустимые разрешения для данной модели, но это успехом не увенчалось.
Поиск в интернете показал на новую версию Ponix, правда она beta, но мы решили ее опробовать.
ponix-3.0.561.tar.bz2 извлекаем в каталог /tftpboot, в нем все файлы стандартные, и нам необходимо будет поправить файл ponix.network

Основные параметры, которые появились в poniX 3 это:
  • WM_DISABLE=[ON/OFF] - позволяет отключить оконный менеджер. Если Вы не используете более одной сессии RDP, не используете локальный skype, linphone или firefox, вы можете отключить оконный менеджер. По умолчанию менеджер включен, и всплывающая контрольная панель будет появляться в середине левой стороны экрана. Если менеджер отключен, вызвать менеджер подключений можно нажатием левого и правого Ctrl.
  • RESTRICT_CONFIG_MENU=[ON/<password>] - для отключения (или ограничения паролем) для Ваших пользователей доступа в раздел конфигурации (из менеджера подключений).
  • PONIX_LANG=[ru/en] - язык интерфейса поникс. По умолчанию ru.
  • SESSION_x_FREERDP_SOUND_OLDWIN=[ON/OFF] - по умолчанию клиент freerdp последней версии адаптирован на работу с Windows 2008R2. Для обеспечения обратной совместимости с перенаправлением звука в более ранних ОС следует использовать этот параметр.
Все параметры сессий, как и в PonixDE могут быть заданы как глобально, так и на уровне самой сессии. К примеру, вы можете указать в конфигурационном файле FREERDP_COM3=ON или SESSION_0_FREERDP_COM3=ON. Последний вариант предпочтительней. Особое внимание следует уделить параметру (AUTOSTART) SESSION_X_AUTOSTART. По умолчанию автозапуск включен для всех сессий, однако теперь это можно контроллировать на уровне каждой сессии.

правим следующее в ponix.network:

Код: Выделить всё

# По умолчанию менеджер включен, и всплывающая контрольная
# панель (tray) будет появляться в середине левой стороны экрана.
# Если менеджер отключен, вызвать менеджер подключений можно
# нажатием левого и правого Ctrl. 

# WM_DISABLE=[ON/OFF]
WM_DISABLE=ON

Код: Выделить всё

# Ограничить доступ к меню конфигурации
#
# для отключения (или ограничения паролем) для Ваших пользователей
# доступа в раздел конфигурации (из менеджера подключений). 

# RESTRICT_CONFIG_MENU=[ON/<password>]

Код: Выделить всё

# Имя для текущего номера сессии, будет
# отображаться в загрузочном меню
# (если не задано, то будет такое же как
# и тип подключения, например: freerdp)
#

SESSION_0_TITLE="Terminal Server"

#
# Тип подключения, в базовой поставке 
# доступны два типа подключения:
#
# 1) freerdp - подключение к терминальным
# серверам по протоколу RDP (Windows) 
# (по умолчанию)
#
# 2) skype - если загружен пакет skype.px (PKG_PACKAGES="graphics skype")
# и не отключен оконный менеджер.
#

SESSION_0_TYPE=freerdp

#
# IP адрес или имя терминального сервера
# (если не задано, то при загрузке терминала
# будет предложено ввести IP адрес или имя
# терминального сервера для подключения),
# по умолчанию порт подключения 3389, если
# же необходимо подключаться к другому порту
# то используйте переменную SESSION_X_FREERDP_PORT
# 
# 

SESSION_0_FREERDP_SERVER="192.168.xx.xx"

# Если глобальный параметр AUTOSTART=ON, то
# все сессии будут автоматически запущены сразу после загрузки
# терминала (в том случае, если автозапуск не переопределён для
# самой сесси, через SESSION_X_AUTOSTART )

AUTOSTART=On

# Опции подключения к терминальному серверу RDP
#
# Все опции могут быть заданы как глобально (FREERDP_NNNNN), так и
# на уровне сессии - SESSION_X_FREERDP_NNNNN
#
#перенаправление звука (по умолчанию включено)

FREERDP_SOUND=On

# По умолчанию перенаправляемый звук на клиенте freerdp последней версии адаптирован на 
# работу с Windows 2008R2. Для обеспечения обратной совместимости с перенаправлением 
# звука в более ранних ОС следует использовать этот параметр

FREERDP_SOUND_OLDWIN=Off
вот этих параметров нам будет достаточно, для того что бы наши терминальные клиенты заработали.

Краткий список изменений, по сравнению с предыдущими версиями poniX ниже:
  • Новое ядро linux 3.2
  • Поддержка видео драйверов новых платформ intel
  • Изменена концепция запуска нескольких сессий, встроен оконный менеджер
  • Упразднена версия standalone. Для встроенных носителей и загрузки используется один образ
  • Добавлен встроенный интерфейс конфигуратора (полезен для режима запуска с носителя)
  • Добавлена возможность локализации всех диалогов Ponix
  • Все драйвера wifi вынесены в пакет wireless
  • Для образа и пакетов используется улучшенный алгоритм сжатия
  • Особое внимание было уделено Skype. Благодаря оконному принципу работы ponix 3 возможна бесшовная работа с полноэкранными сессиями RDP и локальным клиентом skype.
  • Как и в PonixDE все параметры сессий, могут быть заданы как глобально, так и для каждой сессии отдельно
  • Запись логов доступна в автоматическом режиме, а также из меню
P.S. Убедитесь что в корневой папке tftp сервера (в нашем случае tftpboot) есть папка upload с правами доступа на запись и что tftp сервер запущен с параметрами записи (в ОС *nix "tftpd -c"), тогда при загрузке poniX в папке upload появится файл формата "MAC-адрес_тонкого_клиента".tar.bz2 - это архив содержащий логи загружаемого тонкого клиента.
Вложения
ponix-3.0.561.tar.bz2
версия от 7 февраля 2013 года
(13.57 МБ) 534 скачивания
asorochenkov
Сообщения: 14
Зарегистрирован: 11 мар 2011, 09:59

Re: Переход на тонкие клиенты. Начало.

Сообщение asorochenkov »

Все больше и больше предприятий переходят на тонкие клиенты, и все сталкиваются с одним и тем же вопросом, как сделать для компютера или группы компьютеров отдельный конфиг.
Нет ничего сложного в этом.

В каталоге tftpboot могут быть следующие файлы конфигурации
ponix.network (общий)
ponix.group-XXXXXXXXX (группы)
ponix-YYYYYYYYY (отдельного компа)
Раньше YYYYYYYYY можно было указывать имя из файла ponix.hosts, а теперь имя не прокатывает, только MAC
ponix.hosts имеет вид:

Код: Выделить всё

# 

#Имя компьютера - МАК адрес - имя группы
user1 E0CB4EE7A76E group1
user2 001D60B48FFC group2

и так далее.
Все настройки по-умолчанию сделаны в ponix.network. в конфигах групп - только отличия от дефолта.

Собственно и все.
Ответить