Постановка задачи
Работа сотрудника отдела автоматизации – это постоянная борьба с
проблемами и решение задач, которые попеременно подкидывают
пользователи, разработчики эксплуатируемого программного обеспечения и
руководство организации. И если два первых направления работы – это
просто «борьба за живучесть корабля», то последнее, как правило,
поступательное движение вперед. Как раз в ходе решения одной из таких
задач и появилась на свет данная статья.
Итак, перед отделом автоматизации была поставлена задача в короткие
сроки ввести в строй два новых удаленных офиса, каждый численностью в
пять – десять человек. Оба офиса и «голову» связали посредством
технологий VPN в одну сеть. Минимальная ширина канала между тремя
точками составила 256 Кбит, что вполне удовлетворило наши потребности.
В каждом из офисов был развернут дополнительный контроллер домена
Windows 2000, а для минимизации трафика домен разделили на несколько
сайтов. Все вышеописанное является стандартным решением, и здесь я не
ожидал никаких сюрпризов. Главным вопросом для нас было – как поведет
себя основная среда работы сотрудников организации – комплексная
система автоматизации, при работе с которой и в пределах одной площадки
хватало проблем. Изначально ориентированная на Novell/BTRIVE 6.15 после
миграции сети на Windows, она работала под Windows/Pervasive.SQL 7.
После недели тестов этого основного бизнес-приложения организации,
оказалось что разработчик и вовсе не оставил нам выбора, так как
использование встроенного терминального режима используемой
автоматизированной системы по ряду причин нас не устроило. Опять же,
из-за особенностей функционирования, в качестве терминального сервера
была выбрана платформа Microsoft Windows Server. Тестирование же
решений компании Citrix, мы не проводили, так как работа с «родными»
терминальными службами Windows нас вполне удовлетворила, а
использование надстроек только увеличивает стоимость всей системы.
Когда с серверной частью все определилось, встал вопрос по
клиентской составляющей системы. В первую очередь хотелось бы снизить
необходимость в администрировании пользовательских машин, так как
держать выделенного администратора на удаленных площадках не
планировалось. Кроме того, желательным представлялось уменьшить
стоимость решения, которая возросла из-за необходимости покупки
терминальных лицензий. Также необходимо было учесть намерение
разместить в офисах устаревшие компьютеры класса Celeron-400 с ОЗУ от
32 до 64 Мбайт.
Идеальным со всех точек зрения оказалось использование в качестве
рабочих мест бездисковых станций с загрузкой по сети. При этом
единственным компьютером, требующим внимание администратора становиться
дополнительный контроллер домена в каждом офисе, управляемый по VNC.
Само - собой, что рамках данной статьи я оставляю за пределами внимания
оборудование и ПО, обеспечивающее шифрование трафика, доступ в интернет
и т.д.
В роли ОС, которая будет по сети загружаться на рабочие станции, я
выбрал Linux – что обеспечивает лицензионную чистоту решения (по
крайней мере, на сегодняшний момент). Доступ к рабочему столу Windows
2003 должен был осуществляться при помощи разработки проекта
www.rdesktop.org, который стал стандартом для решения данной задачи. В
качестве же необходимых для такой загрузки серверов DHCP и TFTP,
логично было бы использовать уже имеющиеся в каждом сайте
дополнительные контроллеры домена Windows 2000. Благо, существуют как
бесплатные реализации DHCP/TFTP под эту операционную систему, как и
встроенные сервера. При этом TFTP наличествует в рамках службы Remote
Installation Services (RIS).
Сетевые карты клиентских машин, естественно должны поддерживать
возможность загрузки по Etherboot/PXE. В отдельных случаях из-за
несовместимости оборудования я допускал использование загрузчика,
расположенного на дискете.
Выбор реализации Linux
При выборе варианта ОС Linux с возможностью загрузки по сети в
первую очередь я обратил внимание на уже готовые дистрибутивы подобной
направленности со встроенным пакетом rdesktop. Наиболее известный из
них NetStation (netstation.sourceforge.net), который застыл в виде бета
версии с конца 2002 года, и его наследники: PXES
(pxes.sourceforge.net), Thinstation (thinstation.sourceforge.net), и
DIET-PC (diet-pc.sourceforge.net). При этом DIET-PC предназначен в
первую очередь, пользователям, хорошо знакомым с ОС Linux, что сразу
исключает его из области рассмотрения. Поскольку процедура его
настройки достаточно кропотлива, и в DIET-PC присутствует достаточно
много настроек которые простому смертному, а не Linux-гуру, никогда не
пригодяться. PXES – является наиболее «продвинутым» с большим числом
дополнительных возможностей, включая собственную графическую среду, что
также лишнее в моем случае. В моей конфигурации клиент, минуя
промежуточные меню, должен был сразу загружать удаленный рабочий стол и
выходить на окно ввода пароля Windows 2003 Server. Таким образом, я
обратил внимание на оставшийся дистрибутив – Thinstation.
Кратко рассмотрим его возможности:
поддержка протоколов X, RDP, VNC, SSH, Telnet, ICA и Tarantella;
возможность использовать браузер Firefox;
загрузка по сети при помощи Etherboot, PXE (при помощи
Etherboot-загрузчика или PXELinux), HDD, CD или floppy-диска. К
сожалению, отсутствует поддержка USB-flash;
работа на ПК класса x86-100МГц c ОЗУ 16Мбайт;
наличие pre-build образа, и возможность самостоятельной сборки через web-интерфейс;
поддержка локальных дисков, USB и LPT принтеров
Из всех вариантов загрузки наиболее простой – это PXE при помощи
Etherboot-загрузчика. В рамках этой статьи, мы пойдем по самому
простому пути – использовании заранее скомпилированного образа.
Установка и первоначальная настройка
Начнем с того, что скачаем со странички
http://struktur.kemi.dtu.dk/thinstation/download/, доступной по ссылке
в официального сайта последний из архивов, в моем случае – это был
Thinstation-2.0.2-prebuilt-NetBoot.zip. Архив содержит в себе все что
необходимо, включая TFTP/DHCP сервер Tftpd32 который удобен при
первоначальной настройке и конфигурировании. Кстати, если вы будете его
использовать, то я бы порекомендовал сразу же обновить его с домашней
странички, где имеется более свежая версия. Кстати, Tftpd32
(http://tftpd32.jounin.net/) – сама по себе отличная программа. Причем
настолько, что даже рекомендуется Cisco для некоторых потребностей
клиентов компании.
Развернув архив, мы получаем пять директорий:
BootDisk – образ дискеты с Etherboot-загрузчиком, для ПК, с неподдерживаемыми сетевыми картами
BootPXE – загрузчик через PXE для эмуляции Etherboot
BuildFiles – примеры конфигурационных файлов
TFtp – сервер Tftpd32
TftpdRoot – корневая директория TFTP сервера
Итак, первым делом, запускаем самораспаковывающийся архив
thinstation.nbi (autoextract).exe, содержащий один единственный файл
thinstation.nbi. архив сделан для того чтобы у вас была возможность
ознакомиться с «CITRIX(R) LICENSE AGREEMENT».
Теперь копируем TFtp и TftpdRoot на Windows сервер в нашем сегменте
сети. В качестве такого сервера при использовании Tftpd32 может
выступать любая Windows-машина со статическим IP-адресом. Допустим, мы
скопировали обе директории на диск C:\. Запускаем на исполнение
C:\TFtp\Tftpd32.exe. Внешний вид окна программы представлен на рисунке.
Необходимо задать параметры сервера. Нажимаем кнопку «Settings», и
прописываем в качестве «Base directory» значение «C:\TftpdRoot». Далее
идем на вкладку «DHCP server». Там необходимо указать начальный
IP-адрес выделяемый DHCP-сервером («IP pool starting address»), размер
пула адресов («Size of pool»), маску подсети («Mask»), имя файла с
Etherboot-загрузчиком(«Boot file»), в нашем случае это -
thinstation.nbi.zpxe. Нажимаем кнопку «Save», для сохранения настроек,
и сворачиваем приложение.
Все готово для работы. Вы можете попробовать включить одну из машин
с сетевой картой, поддерживающей загрузку по протоколу PXE, не забыв
выставить порядок загрузки в BIOS станции. При включении, машина должна
получить IP-адрес из выделенного диапазона и загрузить по протоколу
TFTP файл thinstation.nbi.zpxe. Он содержит загрузчик, эмулирующий
работу сетевой карты с поддержкой Etherboot. Затем, управление
передается загрузчику, который в свою очередь еще раз запрашивает по
DHCP адрес, и загружает файл с именем, совпадающим с названием файла
самого загрузчика минус расширение zpxe, то есть thinstation.nbi.
Данный файл и есть образ Thinstation. Когда образ загружен, Thinstation
пытается загрузить из корневой директории TFTP сервера конфигурационный
файл thinstation.conf-, затем thinstation.conf-.
Если такие файлы найдены, то Thinstation объединяет их содержимое с
общим конфигурационным файлом thinstation.conf.network, который, в
отличие от двух выше перечисленных обязан присутствовать на
TFTP-сервере. Постарайтесь избежать конфликтов между главным файлом
настроек и специфическим к группе или конкретной станции. Кроме того,
можно объединять одним конфигурационным файлом целые группы IP и
MAC-адресов. Это делается при помощи файла thinstation.hosts, имеющего
следующий формат:
# HOST MAC GROUPS COMMENTS
ws-oper1 0002B3655065 hi_res # Оператор №1
ws-oper2 0002B3651075 hi_res # Оператор №2
ws-oper3 0002B365A021 hi_res ssh_en # Оператор №3
В данном примере предполагается, что имеются два файла
thinstation.conf.group-hi_res и thinstation.conf.group-ssh_en.
Настройки прописанные в первом файле применяются ко всем трем станциям,
а настройки из второго – только к компьютеру ws-oper3.
То, как отображаются сессии терминальных клиентов в оснастке диспетчера терминальных служб, вы можете увидеть на рисунке.
Клиенты с именами вида ts_ - это как раз клиентские терминалы, работающие под управлением Thinstation. Клиенты с именами вида P
работают под управлением дистрибутива PXES, рассмотрение которого
выходит за рамки данной статьи. Далее я приведу простой, но вполне
работоспособный вариант конфигурационного файла с комментариями.
# Опции сессий
#
# Первая сессия должна обязательно начинаться с номера 0.
# При отсутствии необходимости выбора сессии, например, когда вы используете
# только rdesktop, можно снять комментарий со следующего параметра, и
# исключить меню выбора сессий.
#AUTOSTART=On
SESSION_0_TITLE="Windows 2003 terminal server (16 bit color depth)"
SESSION_0_TYPE=rdesktop
SESSION_0_RDESKTOP_SERVER=192.168.0.1
SESSION_0_RDESKTOP_OPTIONS="-u Administrator -p password -a 16"
SESSION_1_TITLE="VNC server"
SESSION_1_TYPE=vncviewer
SESSION_1_VNCVIEWER_SERVER=192.168.0.2
SESSION_2_TITLE="Telnet server"
SESSION_2_TYPE=telnet
SESSION_2_TELNET_SERVER=192.168.0.3
SESSION_3_TITLE="SSH server"
SESSION_3_TYPE=ssh
SESSION_3_SSH_SERVER=192.168.0.4
# Общие опции
#
# Раскладка клавиатуры. В случае работы с rdesktop она роли не играет
KEYBOARD_MAP=en_us
# Опции XServer
#
SCREEN_RESOLUTION="1024x768"
SCREEN_COLOR_DEPTH="16"
SCREEN_HORIZSYNC="30-64"
SCREEN_VERTREFRESH="56-87"
MOUSE_RESOLUTION=100
# Опции печати
#
PRINTER_0_NAME=usb
PRINTER_0_DEVICE=/dev/usb/lp0
PRINTER_2_TYPE=U
В заключение статьи, хочу сказать, что после отладки работы с
терминальными клиентами, лучше всего передать функции TFTP- и DHCP-
серверов программному обеспечению, способному работать в режиме службы
на Windows NT/2000/2003/XP, например как я уже говорил, «родным»
службам Windows, либо воспользоваться соответствующими сервисами любой
другой операционной системы.
Кроме того, на сайте проекта thinstation.sourceforge.net при помощи
веб-интерфейса вы можете самостоятельно перекомпилировать образ
Thinstation без загрузки исходных кодов, включив какие-либо
отсутствующие в prebuild образе функции, например, браузер, или
исключив ненужные модули.
Андрей Маркелов.