Что такое сервер терминалов? Предположим, нескольким сотрудникам в вашей организации, необходимо работать с весьма ресурсоёмким ПО, но их компьютеры этого не позволяют, а денег на закупку нового оборудования, у вас нет. Но у вас есть один весьма мощный сервер (или просто компьютер), и вы можете организовать на нём терминальный сервер. В результате, все ресурсоёмкие программы будут выполняться на сервере, а на компьютеры сотрудников (которые будут являться тонкими клиентами для сервера), будет передаваться изображение и управление.
Это лишь одно из достоинство сервера терминалов. Вы можете сильно сэкономить на оборудовании, применив вместо компьютеров бездисковые станции (например дешёвые неттопы), которые будут загружать систему по сети. Также, использование сервера терминалов, серьёзно упрощает администрирование, однако имеет один, главный недостаток - единую точку отказа. Если что-то случиться с сервером, без работы останутся все, кто к нему был подключён. Потому организация сервера требует тщательной и качественной топологии сети, надёжных компонентов, а также грамотного обслуживания. Я приведу два примера сервера терминалов: на базе проекта LTSP (Linux Terminal Server Project) и x2go (форк FreeNX - свободной реализации сервера NX NoMachine).
В качестве ОС для сервера, будем использовать дистрибутив Xubuntu 14.04. Лучше всего использовать дистрибутивы с легковесными графическими окружениями, особенно если к серверу будут подключаться несколько десятков людей. Хотя, если мощности сервера позволяют, можно поставить любое окружение, например KDE или GNOME.
После установки Xubuntu, устанавливаем необходимые пакеты:
sudo apt-get install ltsp-server-standalone
Дополнительно установятся DHCP и TFTP серверы, NFS, OpenSSH и Openbsd-Inetd. Последний нужен для активации сервиса LTSP по запросу (сокет-активация).
Создаём загрузочный образ для тонких клиентов:
sudo ltsp-build-client
Если необходимо создать 32-х битный образ на 64-х битной системе, укажите параметр --arch i386. Для изменения места хранения образа (по умолчанию /opt/ltsp), укажите желаемое место с помощью параметра --base.
Теперь необходимо назначить сетевой карте, статический IP-адрес. Чтобы не было различных конфликтов, удалите менеджер сетевых подключений:
sudo apt-get purge network-manager
а теперь приступаем к настройке:
sudo nano /etc/network/interfaces
Предположим, на сервере две сетевые карты. Одна из них (eth0) - для внешней сети, вторая (eth1) - для внутренней. Назначим ей адрес 192.168.0.100
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
network 192.168.0.0
broadcast 192.168.0.255
Сохраняем и перезапускаем сеть:
sudo ifdown eth1
sudo ifup eth1
Теперь необходимо настроить DHCP-сервер, который установился вместе с LTSP. Он необходим для раздачи динамических IP-адресов тонким клиентам, по которым они будут загружаться с помощью PXE:
sudo nano /etc/ltsp/dhcpd.conf
#
# Default LTSP dhcpd.conf config file.
#
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.250;
option domain-name "example.com";
option domain-name-servers 8.8.8.8;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
next-server 192.168.1.2;
# get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option root-path "/opt/ltsp/i386";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
} else {
filename "/ltsp/i386/nbi.img";
}
}
Обратите внимание на пути конфигов. В качестве сервера имён (DNS), в данном примере используется Гугловский 8.8.8.8. Если в вашей сети есть поднятый DNS-сервер, указывайте его IP. Диапазон IP-адресов, выдаваемых DHCP-сервером, будет от 192.168.0.20 до 192.168.0.255. Теперь необходимо настроить NFS-сервер:
sudo nano /etc/exports
Вписываем строку:
/opt/ltsp *(ro,no_root_squash,async,no_subtree_check)
Для возможности изменения образа (доступа для записи), измените параметр ro на rw. После настройки, перезапустите NFS-сервер. Далее необходимо создать учётные записи для всех пользователей, которые будут подключаться к серверу терминалов. Делается это командой:
sudo adduser "имя пользователя"
Настройка сервера завершена. Настройка тонких клиентов осуществляется посредством правки конфига /opt/ltsp/i386/etc/lts.conf
[08:00:27:3e:a6:77] # для клиента с указанным mac-адресом
XSERVER = vesa # использовать видеодрайвер VESA
LOCALDEV = true
SOUND = true
PRINTER_0_TYPE = P # указание типа принтера - параллельный интерфейс
PRINTER_0_DEVICE = /dev/lp0 # указание устройства к которому принтер подключён
SCREEN_01 = startx # на первом экране запустить графическую систему (по умолчанию)
SCREEN_02 = rdesktop -K -k en-us -a 15 -f -d domain01 <IP сервера> # на первом экране запустить RDP подключение
Выставите в BIOS тонких клиентов, загрузку по PXE (сетевая загрузка), залогиньтесь в нужной учётной записи и приступайте к работе.
x2go - это продолжение развития проекта FreeNX, который является свободной альтернативой NX NoMachine. При этом x2go активно развивается и лишён многих недостатков FreeNX. Его особенности:
Установка и настройка весьма проста. Для начала подключим репозиторий:
sudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession
И всё. Ну, то есть, совсем всё. Никакой дополнительной настройки. Осталось лишь добавить пользователя(ей) и установить клиент на клиентских компьютерах:
sudo adduser "имя пользователя"
sudo apt install x2goclient
Клиенты доступны как для Linux так и для Windows и Mac OS X.
Чтобы подключиться к серверу терминалов, нужно ввести:
Имя сессии - какое хотите.
Хост - IP-адрес сервера, к которому подключаться.
Пользователь - имя пользователя.
Тип сессии - здесь выбираем оболочку рабочего стола. Так как на сервере установлена Xubuntu, выбираем Xfce. Примечание: x2go судя по всему, разрабатывается с оглядкой на KDE, так как в нём он работает идеально, а, например, в GNOME могут быть небольшие косяки. Тем не менее, серьёзных проблем в работе x2go в окружениях, отличных от KDE, не замечено.
На остальных вкладках можете настроить дополнительные параметры при необходимости. Например настроить разрешение экрана, или включить проброс звука с сервера. Если вы хотите запустить удалённо только одно приложение (например 3D редактор), то в списке Тип сессии укажите Приложение, и справа укажите путь к нему или команду запуска.
Для загрузки по PXE рекомендуется устанавливать PXE-сервер x2go на отдельной машине (физической или виртуальной). Это касается только случаев, когда вам нужен и обычный и PXE-сервер. Установим PXE-сервер:
sudo apt-get install x2gothinclientmanagement
При необходимости, измените настройки в файле /etc/x2go/x2gothinclient_settings
Создадим образ системы для загрузки:
sudo x2gothinclient_create
sudo x2gothinclient_preptftpboot
Следуем инструкции на экране. После создания, образ с системой будет храниться в /opt/x2gothinclient/chroot. Если после создания образа, вы меняли какие-либо настройки в конфигурационном файле, выполните
sudo x2gothinclient_update
чтобы применить изменения. Теперь сервер готов к загрузке по PXE. Если вы используете x2go вместе с LTSP на одном сервере, вам нужно вручную сконфигурировать систему для совместного их использования. Примеры конфигов находятся в /usr/share/x2go/tce/tftpboot. Теперь выставьте в BIOS клиентов загрузку по PXE и пользуйтесь :)
Ссылки:
Официальное руководство по x2go (англ.)
Установка и настройка LTSP в CentOS
Это лишь одно из достоинство сервера терминалов. Вы можете сильно сэкономить на оборудовании, применив вместо компьютеров бездисковые станции (например дешёвые неттопы), которые будут загружать систему по сети. Также, использование сервера терминалов, серьёзно упрощает администрирование, однако имеет один, главный недостаток - единую точку отказа. Если что-то случиться с сервером, без работы останутся все, кто к нему был подключён. Потому организация сервера требует тщательной и качественной топологии сети, надёжных компонентов, а также грамотного обслуживания. Я приведу два примера сервера терминалов: на базе проекта LTSP (Linux Terminal Server Project) и x2go (форк FreeNX - свободной реализации сервера NX NoMachine).
В качестве ОС для сервера, будем использовать дистрибутив Xubuntu 14.04. Лучше всего использовать дистрибутивы с легковесными графическими окружениями, особенно если к серверу будут подключаться несколько десятков людей. Хотя, если мощности сервера позволяют, можно поставить любое окружение, например KDE или GNOME.
После установки Xubuntu, устанавливаем необходимые пакеты:
sudo apt-get install ltsp-server-standalone
Дополнительно установятся DHCP и TFTP серверы, NFS, OpenSSH и Openbsd-Inetd. Последний нужен для активации сервиса LTSP по запросу (сокет-активация).
Создаём загрузочный образ для тонких клиентов:
sudo ltsp-build-client
Если необходимо создать 32-х битный образ на 64-х битной системе, укажите параметр --arch i386. Для изменения места хранения образа (по умолчанию /opt/ltsp), укажите желаемое место с помощью параметра --base.
Теперь необходимо назначить сетевой карте, статический IP-адрес. Чтобы не было различных конфликтов, удалите менеджер сетевых подключений:
sudo apt-get purge network-manager
а теперь приступаем к настройке:
sudo nano /etc/network/interfaces
Предположим, на сервере две сетевые карты. Одна из них (eth0) - для внешней сети, вторая (eth1) - для внутренней. Назначим ей адрес 192.168.0.100
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
network 192.168.0.0
broadcast 192.168.0.255
Сохраняем и перезапускаем сеть:
sudo ifdown eth1
sudo ifup eth1
Теперь необходимо настроить DHCP-сервер, который установился вместе с LTSP. Он необходим для раздачи динамических IP-адресов тонким клиентам, по которым они будут загружаться с помощью PXE:
sudo nano /etc/ltsp/dhcpd.conf
#
# Default LTSP dhcpd.conf config file.
#
authoritative;
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.20 192.168.1.250;
option domain-name "example.com";
option domain-name-servers 8.8.8.8;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
next-server 192.168.1.2;
# get-lease-hostnames true;
option subnet-mask 255.255.255.0;
option root-path "/opt/ltsp/i386";
if substring( option vendor-class-identifier, 0, 9 ) = "PXEClient" {
filename "/ltsp/i386/pxelinux.0";
} else {
filename "/ltsp/i386/nbi.img";
}
}
Обратите внимание на пути конфигов. В качестве сервера имён (DNS), в данном примере используется Гугловский 8.8.8.8. Если в вашей сети есть поднятый DNS-сервер, указывайте его IP. Диапазон IP-адресов, выдаваемых DHCP-сервером, будет от 192.168.0.20 до 192.168.0.255. Теперь необходимо настроить NFS-сервер:
sudo nano /etc/exports
Вписываем строку:
/opt/ltsp *(ro,no_root_squash,async,no_subtree_check)
Для возможности изменения образа (доступа для записи), измените параметр ro на rw. После настройки, перезапустите NFS-сервер. Далее необходимо создать учётные записи для всех пользователей, которые будут подключаться к серверу терминалов. Делается это командой:
sudo adduser "имя пользователя"
Настройка сервера завершена. Настройка тонких клиентов осуществляется посредством правки конфига /opt/ltsp/i386/etc/lts.conf
[08:00:27:3e:a6:77] # для клиента с указанным mac-адресом
XSERVER = vesa # использовать видеодрайвер VESA
LOCALDEV = true
SOUND = true
PRINTER_0_TYPE = P # указание типа принтера - параллельный интерфейс
PRINTER_0_DEVICE = /dev/lp0 # указание устройства к которому принтер подключён
SCREEN_01 = startx # на первом экране запустить графическую систему (по умолчанию)
SCREEN_02 = rdesktop -K -k en-us -a 15 -f -d domain01 <IP сервера> # на первом экране запустить RDP подключение
Выставите в BIOS тонких клиентов, загрузку по PXE (сетевая загрузка), залогиньтесь в нужной учётной записи и приступайте к работе.
x2go
x2go - это продолжение развития проекта FreeNX, который является свободной альтернативой NX NoMachine. При этом x2go активно развивается и лишён многих недостатков FreeNX. Его особенности:
- Подключение к удаленному компьютеру производится по ssh.
- Передача звука, расшаривание принтеров.
- Можно запускать просто отдельное приложение на удаленном компьютере.
- Можно подключиться и управлять удаленным компьютером (типа TeamViewer).
Установка и настройка весьма проста. Для начала подключим репозиторий:
sudo add-apt-repository ppa:x2go/stable
sudo apt-get update
sudo apt-get install x2goserver x2goserver-xsession
И всё. Ну, то есть, совсем всё. Никакой дополнительной настройки. Осталось лишь добавить пользователя(ей) и установить клиент на клиентских компьютерах:
sudo adduser "имя пользователя"
sudo apt install x2goclient
Клиенты доступны как для Linux так и для Windows и Mac OS X.
Чтобы подключиться к серверу терминалов, нужно ввести:
Имя сессии - какое хотите.
Хост - IP-адрес сервера, к которому подключаться.
Пользователь - имя пользователя.
Тип сессии - здесь выбираем оболочку рабочего стола. Так как на сервере установлена Xubuntu, выбираем Xfce. Примечание: x2go судя по всему, разрабатывается с оглядкой на KDE, так как в нём он работает идеально, а, например, в GNOME могут быть небольшие косяки. Тем не менее, серьёзных проблем в работе x2go в окружениях, отличных от KDE, не замечено.
На остальных вкладках можете настроить дополнительные параметры при необходимости. Например настроить разрешение экрана, или включить проброс звука с сервера. Если вы хотите запустить удалённо только одно приложение (например 3D редактор), то в списке Тип сессии укажите Приложение, и справа укажите путь к нему или команду запуска.
Для загрузки по PXE рекомендуется устанавливать PXE-сервер x2go на отдельной машине (физической или виртуальной). Это касается только случаев, когда вам нужен и обычный и PXE-сервер. Установим PXE-сервер:
sudo apt-get install x2gothinclientmanagement
При необходимости, измените настройки в файле /etc/x2go/x2gothinclient_settings
Создадим образ системы для загрузки:
sudo x2gothinclient_create
sudo x2gothinclient_preptftpboot
Следуем инструкции на экране. После создания, образ с системой будет храниться в /opt/x2gothinclient/chroot. Если после создания образа, вы меняли какие-либо настройки в конфигурационном файле, выполните
sudo x2gothinclient_update
чтобы применить изменения. Теперь сервер готов к загрузке по PXE. Если вы используете x2go вместе с LTSP на одном сервере, вам нужно вручную сконфигурировать систему для совместного их использования. Примеры конфигов находятся в /usr/share/x2go/tce/tftpboot. Теперь выставьте в BIOS клиентов загрузку по PXE и пользуйтесь :)
Ссылки:
Официальное руководство по x2go (англ.)
Установка и настройка LTSP в CentOS
После команды sudo ltsp-build-client
ОтветитьУдалитьповис на строке
9-0ubuntu6.15 [3 999 kB]
39% [Соединение с archive.ubuntu.com (2001:67c:1562::15)]