среда, 13 февраля 2008 г.

Бесшовный Терминал

Организация терминального доступа к Windows с Linux-компьютеров. Недорого.

Несмотря на всю прелесть, удобство и мощность Linux, существует еще немало нужных программ, которые в нем (или в ней?) работать не хотят. В частности это весьма характерно для нишевых и сугубо специальных приложений, разработчики которых дерут такие деньги за свои продукты, что на фоне этих цен, стоимость Windows XP выглядит просто несерьезно.
Например R-Style RS-Bank 5.0 Или Swift Alliance Entry. Или вот MS Access 2003 особенно. Переход на подобные продукты, совместимые с Linux, часто невозможен как и по финансовым, так и по организационным причинам.
Ни серверная часть (что неудивительно), ни клиентские части (что удивительно) этих приложений работать даже под Wine от Ethersoft (*) не хотят.
Тем не менее и в данном случае можно прекрасно обойтись без установки Windows на рабочие станции пользователей.
Вариантов решения проблемы несколько.
Первая и всем известная - .использование Terminal Services в Windows Server Standart и выше. Нужные приложения устанавливаются на компьютере с Windows Server , устанавливается Terminal Licensing Service, покупается и активируется нужное количество лицензий для подключения пользователей к данному терминальному серверу. После чего на стороне Linux станций используется замечательная программа rdesktop (www.rdesktop.org). Практически все современные дистрибутивы содержат в себе эту программу. В моей любимой Mandirva она есть точно.
Если же вас интересует не периодическая, а постоянная работа с терминальным сервером, то вам скорее сюда, к ThinStation. Это дистрибутив Linux, который только и умеет, что подключаться к терминальным серверам Citrix ICA, NoMachine NX, 2X ThinClient, MS Windows Terminal Services (RDP), Cendio ThinLinc, Tarantella, X, telnet, tn5250, VMS term и SSH. Но умеет это хорошо. А мы вернемся к rdesktop.

С помощью rdesktop можно осуществлять доступ ко всему рабочему столу Windows,
1 вариант (рабочий стол в отдельном окне)
Ключ -g определяет размер рабочего окна в пикселах
rdesktop -g 800x600 TERMSERVER

2 вариант (Рабочий стол на весь экран — без границ окна).
Ключ -D отключает границы окна, а размер в пикселях придется подбирать на глаз или с помощью KRuler.

rdesktop -D -g 1024х720 TERMSERVER

С помощью rdesktop можно запускать отдельные приложения и без рабочего стола. Для этого используется ключ -s
rdesktop -s «c:\prog\program.exe» TERMSERVER
Вот так:


Обратите внимание, хоть приложение запустилось и без рабочего стола, отдельно, все равно оно находится внутри терминального окна. И при минимизации оно уходит не на панель задач, а некрасиво и неудобно сворачивается внизу окна терминала.
Вот так :
Пытливые умы программистов и тут придумали, как решить и эту задачу.
На помощь придет так называемый Seamless Shell.
-----------------------------------------------------------------------------
seamless прил. 1) бесшовный, сделанный из одного куска.
Seamless underwear — бесшовное бельё
2) плавный; совершающийся без резких переходов, пауз; однородный Seamless procession of days — непрерывная череда дней
-----------------------------------------------------------------------------
Разыскал я его вот здесь - http://www.cendio.com/seamlessrdp
Его надо скачать отсюда http://www.cendio.com/files/thinlinc/seamlessrdp/seamlessrdp.zip
и распаковать в любой каталог на терминальном сервере.
Пусть будет, например - c:\seamless. В том каталоге окажется и программ а seamlessrdpshell.exe
Что она делает? А делает она очень интересную вещь.
При запуске rdesktop с командной строкой

rdesktop -A -s «c:\seamless\seamlessrdpshell.exe program.exe» TERMSERVER

-A и есть тот ключ для включения seamless-режима.
Причем никаких ключей для принудительного выставления размеров типа -g 800x600 указывать нельзя, так как они с этим режимом несовместимы.
После предварительного моргания терминальным окном в итоге вы получите вот что
И при минимизации, это окно свернется, как и полагается, в панель задач KDE. Я не пробовал, но думаю, что и в GNOME будет тоже самое.
Внешне- полная имитация запуска приложения на рабочем столе пользователя. Хотя само приложение выполняется на терминальном сервере.

Что касается собственно серверной части, то лично у меня лицензионная политика Microsoft своей запутанностью, и неудобностью всегда (а последнее время особенно) вызывала раздражение.
Использование штатного Terminal Server от Microsoft имеет, кроме всего прочего, такие недостатки, как необходимость развертывания службы Terminal Licensing Service. Причем надо иметь в виду, что существуют как отдельные лицензии на подключение к самому Windows Server, так и отдельные лицензии на подключение к Terminal Server внутри этого сервера.
И вообще, как советовал мне менеджер Microsoft, «вашей организации необходимо иметь отдельного специалиста по управлению лицензиями». Было не смешно совершенно.
На закуску хочется добавить, что терминальный сервер для приложений, пригодный для подключения и работы более двух пользователей, у Microsoft встроен только в такие продукты как Windows Server и выше. Ни на Small Business Server, ни на Windows XP, ни на Vista Ultimate штатными средствами это сделать не удастся. (Существуют, правда рецепты ломового принуждения с заменой dll и правкой реестра, но они ,мягко говоря, не очень надежны — что для постоянной повеседневной работы неприемлемо)
Citrix Metaframe? По цене это будет практически то же самое, что и натуральный Windows, если не дороже. И работать будет также только на Windows Server.
И ладно бы если это касалось крупных и богатых организаций(**), а как быть организациям небольшим? В которых 5-10 человек?
Обратите внимание на продукт фирмы Thinstuff http://www.thinstuff.com/
Thinstuff XP/VS Terminal Server for Windows. Это практически точная копия Microsoft Terminal Server по функциональности. Тем не менее отличается от него существенными деталями
1.Он может работать на Windows Small Business Server, Windows XP и Windows Vista. Что делает его очень привлекательным для небольших организаций, в которых мощность и цена Windows Server явно избыточна. Или которые в свое время купили Windows Small Business Server.
2.По заявлениям разработчиков, он куда более совместим со старыми приложениями, несовместимыми с обычным Terminal Server.
3.Позволяет передачу RDP протокола через защищенное SSL HTTPS соединение.
4.Осуществляет доступ к приложениям через Web-портал.
5.Выполняет балансировку нагрузки.
Последние три вкусности доступны для Enterprise версии, а для небогатых покупателей предлагается Light и Standard.
Light-версия, например, на 10 пользователей стоит 200 долларов. Для небольшой организации это вполне доступно. Даже если учесть цену Windows XP, общая стоимость в любом случае будет ниже 500 долларов, что значительно дешевле Windows Server Standard. И это не учитывая возни с лицензированием клиентов в стандартном Terminal Server. Установка же XP/VS Terminal Server проста до неприличия.
Cо стороны RDP-клиентов ( в частности программы rdesktop) никаких изменений и переделок не требуется.
Еще есть аналогичный вариант от другого производителя Elsuvia Terminal Server Pro . Он предназначен исключительно под Windows XP или Small Business Server. Его цена 250 долл.

Систему удаленного управления VNС и ей подобные, я рассматривать не буду, так как это не многопользовательская, а однопользовательская система. Да, она бесплатная, да она многоплатформенная, но для одновременной удаленной работы нескольких пользователей на терминальном сервере эта система не годится.
А вот VmWare Virtual Server опишу с удовольствием.
Многоплатформенная бесплатная система виртуализации, позволяющая иметь на одном компьютере-сервере несколько одновременно работающих операционных систем. Причем практически любых. И DOS и Windows и Linux и FreeBSD и Solaris и.... Даже такую узкоспециализированную как MicroTik.
Удаленный доступ к этим виртуальным машинам легко осуществим и с Windows и с Linux при помощи фирменной программы-консоли от VmWare. Разумеется, бесплатной. Причем никаких лицензий на пользователей не требуется. Зато хоть и VmWare-компьютеры виртуальны, то лицензии на операционные системы, установленные на этих виртуальных машинах, потребуются самые настоящие.
На мой пристрастный взгляд, устанавливать VmWare Virtual Server лучше на Linux, чем на Windows. Во первых быстрее работает. Во-вторых ни Windows XP, ни Windows Server Standard не «видят» оперативной памяти свыше 2 гигабайт. А Linux — видит и использует. Ну и в третьих — дешевле.
И все-таки роли Terminal Server и Virtual Server различны.
Terminal Server — выгоден и удобен тогда, когда с одним приложением должны работать несколько удаленных пользователей одновременно.
Virtual Server удобен и выгоден тогда, когда с приложением в нестандартной ОС (а в Linux-сети такой осью будет именно Windows) должны работать несколько удаленных пользователей не одновременно. А еще он очень удобен при использовании узкоспециализированных программ, требующих строго определенного системного окружения.