Если Вы решили прочесть данную заметку, значит уже приблизительно знаете, что такое терминальный сервер. На сегодняшний день довольно широкое применение получили терминальные решения от Citrix и, естественно, Microsoft. Естественно, данные решения стоят денег, и не малых денег. К примеру, терминальное решение от M$ на 30 лицензий Вам обойдётся примерно в $4000-5000 (стоимость оси + TS CAL). НО существует бесплатное решение, которое идёт в "коробке" с моим любимым Debian.
В этой статье рассмотрим пример реализации терминального сервера на Linux при помощи VNC. А чтобы "копать" было интереснее, поставим более конкретную задачу: Настроить терминальный сервер на неограниченное количество подключений для работы с 1С бухгалтерия
На самом деле установка и настройка непосредственно терминального сервера происходит до безобразия просто. Установим VNC сервер:
apt-get install vnc4server
Терминальный VNC сервер установлен и его уже можно запускать командой vncserver. При этом VNC запрсит у Вас пароль для подключения клиентом. Учтите, что при логоне удалённым VNC вьювером, сервер даст вам рабочий стол пользователя, от имени которого был запущен vncserver. Помимо этого есть один неприятный, на первый взгляд, момент - Если к запущенному VNC серверу уже подключен один VNC вьювер, то при подключении второго вьювера на этот же порт - клиенты или начнут делить один и тот же сеанс или одного из клиентов просто "выбросит" из сессии, что нас конечно же не устраивает. Выхода из данной ситуации два:
1) Автоматом открыть N VNC-сессий (N=количеству ноебходимых клиентских подключений). При этом каждое подключение будет происходить на отдельный порт 5900 - 590N. Помимо этого, постоянно будут подгружены "неиспользумые" VNC сервера. Также не решается проблема с одновременным подключением нескольких вьюверов на один порт. Данный Вариант нас в корне не устраивает, т.к. нам надо получить работающую систему, максимально похожую на терминальный виндовый сервер для удобства пользователей.
2) Настроить супердемон inetd, чтобы при коннекте на порт 5900 происходил автоматический запуск VNC сервера. При этом все соединения слушаются на одном порту и количество VNC серверов не превышает количество необходимых в данный момент.
Таким образом, выбираем п.2 - правку inetd. В /etc/inetd.conf добавляем слелующую строку:
5900 stream tcp nowait my_user /usr/bin/Xvnc Xvnc -inetd -query localhost -once -depth 24 securitytypes=none
Параметр my_user заменяете на имя пользователя, от чьего имени будет запущен vncservsr. Параметр -query localhost говорит нашему vncserver-у, что авторизация будет происходить локально, используя gdm или xdm (в зависимости от того, что у Вас установлено). Помимо этого можно "поиграть" с настройками geometry, которые зададут разрешение сервера VNC. Все параметры можно увидеть, набрав в консоли Xvnc -h
Всё, терминальный сервер настроен, осталось настроить gdm/xdm (в зависимости от того, что у Вас стоит) принимать запрсы по xdmcp
gdm
Редактируем /etc/gdm/gdm.conf - добавляем
[xdmcp]
Enable=true
xdm
По умолчанию, в целях секьюрности, xdm запрещено слушать xdmcp, поэтому редактируем /etc/X11/xdm/xdm-config Находим строку DisplayManager.requestPort: 0 Перед ней ставим знак "!", т.о. получаем следующее
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
! DisplayManager.requestPort: 0
После это рестартуем inetd, gdm/xdm и пробуем подключиться терминальным VNC клиентом. Благодаря тому, что VNC является открытым, существуют различные программные продукты под разные ОСи.
Таким образом мы получили настроенные терминальный сервер, готовый для установки на него 1С. Для запуска 1С по линухом можно использовать как родной wine с "допиливание", так и wine от etersoft (более стабильно работающий, но уже платный). Я в своём примере использовал "родной" вайн, малость "заточенный" под демонстрационный запуск 1С. И Вот что из этого получилось:
Естественно, что везде есть свои "подводные камни". В нашем случае они тоже имеются. Из замеченного - явно бросается в глаза невозможность "восстановиться" в отвалившуюся сессию. Т.е. если человек работал под своим логином, и у него отвалилась сеть, то при повторном логине он не получит окружение рабочего стола, которое было ДО отваливания. Это немного неудобно, но в конечном итоге не смертельно. По крайней мере не будет "мёртвых" сессий.



Советую также прочитать
Советую также прочитать статью Терминальный сервер под Linux. Debian + FreeNX + WINE@Etersoft + 1C
являюсь начинающим
являюсь начинающим пользователем nix - попробывал всё сделать как в статье - настраивал 2 дня: ubuntu 10.04 . по умолчанию стоит xinetd - это меня сразу вогнало в тупик . с горем пополам снес (наверно) xinetd, установил inetd, в файл /etc/inet.conf внес изменения, с gdm - оказалось сложнее,файла /etc/gdm/gdm.conf - не оказалось, через 3 часа поисков в нете понял, что надо редактировать, /etc/gdm/custom.conf . вообщем заработало - с другой nix системы попал в сеанс, и с windows с помощью mRemote. но вот облом, после входа удаленного пользователя , а также после выхода его из сеанса, больше невозможно подключится r vnc серверу - пишет "vnc server closed connection" и так пока не перезапустишь gdm или целиком систему, а там снова хватает только на один вход. в чём дело ?
Статью писал под Debian Etch.
Статью писал под Debian Etch. Inetd можно было и не ставить. xinetd - практически тоже самое, только "посвежее". Есть подозрение, что не подхватываются настройки inetd или сам inetd не запущен. Что логи говорят?
ок, как посмотреть запущен ли
ок, как посмотреть запущен ли inetd и как смотреть логи ? О_о
Новичок Ubuntu Server
Новичок
Ubuntu Server 11.04
Все таки не ясно с файлом /etc/inetd.conf
1. В папке /etc/ его не оказалось
2. В коментариях "с (наверно) xinetd, установил inetd, в файл /etc/inet.conf внес изменения" уже имя inet.conf
3. 5900 stream tcp nowait my_user /usr/bin/Xvnc Xvnc -inetd -query localhost -once -depth 24 securitytypes=none
в этой строке точно все указано?????
4. надо ли делать файл исполняемым?
Отправить комментарий