Терминальный сервер на базе Linux Mint

Пришло время, и мои коллеги обратили мое внимание на невозможность нормально проводить занятия из-за тормозов самой операционной системы и программного обеспечения на наших стареньких компьютерах (2004 -2008 гг. поставки). Однажды я слышал о таких понятиях как загрузка по сети, тонкие клиенты, терминальный сервер и пр., но не придавал должного значения этим терминам и тем возможностям, которые они предоставляют, а вот сейчас необходимость заставила вплотную заняться этим вопросом.
Итак, легенда - тонкие клиенты работают очень шустро, почти как и машина от которой он запитан и при этом сам клиент может представлять собой "динозавра" в мире компьютеров. Решил я это проверить...
В наличии: серверная машинка с CPU 2,4 Ггц х 4, MEM 8 Ггб, HDD 250 Ггб, две сетевые карты, одна "смотрит" в Интернет, а другая во внутреннюю сеть. Русскоязычной информации по настройке терминального сервера не так уж и много, но кое-что есть, ну и не надо сбрасывать со счетов англоязычные ресурсы (постепенно я начинаю все лучше и лучше их понимать, а вот говорить пока не могу). Знатоки наверняка скажут, что это слишком слабая, на сегодня, конфигурация для таких вещей, но задача-то сейчас просто проверить, а в случае удачного эксперимента предпринимать соответствующие шаги, нужно запустить хотя бы 2-3 машинки...
Во всех найденных мною ресурсах сразу начинают устанавливать ltsp-сервер, так это чудо-юдо называется. Обратимся к Википедии: "Linux Terminal Server Project (LTSP) — это свободно распространяемый дополнительный пакет для Linux с открытым исходным кодом, который позволяет нескольким людям с маломощными компьютерами (терминалами) использовать вычислительные мощности одного, более производительного компьютера (сервера). При этом, все приложения запускаются на сервере, а терминалы, так же называемые тонкими клиентами (или X-терминалами), просто принимают видеоряд, посылаемый сервером, и кроме него ничего не обрабатывают. Как правило, терминал представляет собой маломощный компьютер, в нём даже может отсутствовать жесткий диск, вследствие чего он может работать тише, чем обычный настольный компьютер." Все, почему-то предполагают, что у всех потенциальных пользователей LTSP уже установлен сервер с десктопом и он настроен для работы (в будущем) в качестве терминального сервера. Смею уверить Вас - нет, такого нет и в принципе быть не должно, давайте загрузим наш рабочий сервер, на котором крутятся наши базы данных, внутренняя почта, прокси-сервер и админзнаетчто еще там происходит, еще и функциями терминального сервера, LTSP лучше возложить на ругой компьютер.
Процесс настройки терминального сервера начинается с установки того десктопного дистрибутива, который Вы желаете увидеть на рабочих машинах (тонких клиентах). Потом нужно установить желаемое ПО, можно настроить рабочий стол, меню и пр., потом внести изменения в каталоге /etc/skel/ (что именно там менять, это уже отдельная тема) для того, чтобы пользователи тонких клиентов получили точно такой же рабочий стол, каким его Вы настроили. Я не стал изощряться и установил в качестве подопытного образца свою школьную сборку Linux_for_School на базе Linux Mint 17.1 MATE. Честно признаюсь, получилось не сразу, раза три переустанавливал все и, в конце-концов, выработал свой алгоритм, которым и хочу поделиться.
Для начала нужно уяснить, что для достижения успешного результата нужно проверить или настроить DHCP-сервер на будущем терминальном сервере. Если Вы доделываете/переделываете существующий сервер (что маловероятно, вряд ли Вы рискнете поломать "свой домик" ради эксперимента или по причинам изложенным выше), то наверняка DHCP там уже установлен и работает, нужно только проверить на какие адреса во внутренней сети он все раздает. В нашем случае, идеальным будет решение  использования внутренней сети с адресами 192.168.0.1...255, поскольку, по-умолчанию, после установки пакета ltsp-server-standalone нужно настроить сетевые интерфейсы и тут надо быть внимательным, потому что от Вашей внимательности напрямую зависит результат работы, а умолчательный вариант адресации сети именно вида 192.168.0.1...255. Здесь важно не спешить менять "все и вся", важно настроить, чтобы работало все, а потом подстраивать "по себя", и можно будет изменить и IP-адресацию.
Как я писал выше, для эксперимента я не стал заниматься кастомизацией и тратить на это время, а  взял уже готовую сборку. если кто захочет повторить "подвиг", можно брать любую десктопную систему и "вылизать" ее "под себя", и только после всего этого приступать к установке ltsp-сервера.

Я думаю, вступительных слов достаточно, приступим:
1. sudo -s
Если мы начнем устанавливать apt-get install ltsp-server-standalone, то нас уведомят об установке дополнительных пакетов debconf-utils debootstrap isc-dhcp-server ldm-server ltsp-server ltsp-server-standalone ltspfs nbd-server openbsd-inetd openssh-server openssh-sftp-server tftpd-hpa. Осмотревшись, замечаем (после всего прочитанного материала, см. ссылки в конце), что нам не хватает для полного счастья только ssh, dnsmasq, nfs-kernel-server поэтому после установки ltsp-сервера добавим пару пакетов.
apt-get install ltsp-server-standalone

2. Создаем загрузочный образ, который будут грузить наши клиенты
ltsp-build-client

3. Доустановим недостающие "для полного счастья" пакеты
apt-get install ssh dnsmasq nfs-kernel-server tftpd-hpa

4. Редактируем сетевой интерфейс
gedit /etc/network/interfaces
заполняем подобным содержанием:

auto eth0     #эта сетевая карта "смотрит в мир"
    iface eth0 inet static
        address 192.168.50.2     #сетевой адрес моего модема 192.168.50.1
        netmask 255.255.255.0 
        gateway 192.168.50.1
        dns-nameservers 192.168.50.1

auto eth1   #эта сетевая карта "смотрит" во внутреннюю сеть, класс, офис...
    iface eth1 inet static
        address 192.168.0.1  #это адрес этой карточки, а в будущем и DHCPсервера для клиентов
        netmask 255.255.255.0

post-up /etc/nat  #заставляем в работе использовать NAT, который настроим чуть ниже


Из автозагрузки уберите NetworkManager, а то потом будет мешать...

5. Перезапустим сервис
service networking restart


6. Создаем настройки NAT "NAT (от англ. Network Address Translation — «преобразование сетевых адресов») — это механизм в сетях TCP/IP, позволяющий преобразовывать IP-адреса транзитных пакетов.
gedit /etc/nat
заполняем таким содержанием:

#!/bin/sh

#Включаем форвардинг(перенаправление) пакетов
echo 1 > /proc/sys/net/ipv4/ip_forward

#Разрешаем траффик на lo
iptables -A INPUT -i lo -j ACCEPT

#Разрешаем доступ из внутренней сети наружу
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

#Включаем NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE

#Разрешаем ответы из внешней сети
iptables -A FORWARD -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

#Запрещаем доступ снаружи во внутреннюю сеть
iptables -A FORWARD -i eth0 -o eth1 -j REJECT

7. Даем право файлу nat на исполнение
chmod +x /etc/nat

8. Перегружаем компьютер любым удобным способом
reboot

9. Теперь настроим наш DHCP и DNS, без первого у нас вообще ничего не получится, а второй позволит получить еще кучу преимуществ, которые предусматривает использование кеширующего сервера:
gedit /etc/dnsmasq.conf
заполняем таким содержанием:

listen-address=127.0.0.1, 192.168.0.1
dhcp-range=192.168.0.20,192.168.0.200,255.255.255.0,12h


10. Перезапустим сервис
service dnsmasq restart
По идее, DHCP уже должен работать и все должно "крутиться", но..., увы, при подключении к будущему терминальному серверу  любого ПК с ОСью, в которой сетевой адрес машина получает от DHCP, проще говоря - автоматически, ничего не произошло, т.е. этот клиент не получил адреса. Как выяснилось, заявленный вначале кандидат на установку, как дополнительный пакет, isc-dhcp-server не установился, поэтому, нужно проверить его наличие в системе, если нет, то устанавливаем.
apt-get install isc-dhcp-server

11. Снова редактируем очередной файл настроек
gedit /etc/default/isc-dhcp-server

INTERFACES="eth1"

"eth1" - у меня это сетевая карта, которая "смотрит" во внутреннюю сеть и представляет собой сетевой интерфейс DHCP будущего терминального сервера для будущих тонких клиентов.

12. Устал уже писать о редактировании... При его открытии там уже что-то есть, сравните с тем, что у меня, и если что - подправте "под себя"
gedit /etc/ltsp/dhcpd.conf


      -
      -  Default LTSP dhcpd.conf config file.
      -
    
    authoritative;
    
    subnet 192.168.0.0 netmask 255.255.255.0 {
        range 192.168.0.20 192.168.0.200;        # здесь задаётся диапазон адресов
        option domain-name "mnvk.edu";
        option domain-name-servers 192.168.0.1;
        option broadcast-address 192.168.0.255;
        option routers 192.168.0.1;
        next-server 192.168.0.1;
      #     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";
        }
    }

Вместо доменного имени "mnvk.edu" подставьте своё.


13. Далее переходим в каталог /etc/dhcp и делаем бэкап файла /etc/dhcp/dhcpd.conf :

cd /etc/dhcp
cp dhcpd.conf dhcpd.conf.bak


Теперь этот файл копируем в /etc/dhcp

cp /etc/ltsp/dhcpd.conf /etc/dhcp/dhcpd.conf
и рестартуем DHCP-сервер
/etc/init.d/isc-dhcp-server restart

Вот теперь можно проверить работу DHCP, и если на испытуемом подключенном образце появится сетевое подключение с IP типа 192.168.0.хх - значит все в порядке, Ваш DHCP работает, можно двигаться дальше, если нет, нужно проверить все и при необходимости устранить допущенные ошибки.


14. Настроим NFS-сервер. Он будет отдавать полный образ системы. Создаём директорию, где он будет содержаться и собираться (у меня она уже была):
mkdir /opt/ltsp

13. Редактируем настройки
gedit /etc/exports
У меня в файле уже было всякого-разного там, внимательно посмотрите, все ли закоментировано, если нет, поставьте в начале незакоментированной строки значек # (у меня все было закоментировано) и добавьте строку

/opt/ltsp *(ro,no_root_squash,no_subtree_check,async)

Во многих источниках рекомендуют вообще все удалить, а вставить вместо только эту строчку, я придерживаюсь мнения - "ломать - не строить", поэтому если где что и нужно удалить, я стараюсь просто закоментировать ненужное, чтобы потом "не было мучительно больно".

14. Перегружаем сервер
/etc/init.d/nfs-kernel-server reload

15.
gedit /etc/dnsmasq.d/ltsp.conf

вставляем то, что ниже...

dhcp-range=192.168.1.0,proxy
dhcp-option=vendor:PXEClient,6,2b
dhcp-no-override
pxe-prompt="Press F8 for boot menu", 3
pxe-service=x86PC, "Boot from network", /ltsp/i386/pxelinux
pxe-service=x86PC, "Boot from local hard disk"


16.
gedit /opt/ltsp/i386/etc/lts.conf

[[default]]
    LTSP_CONFIG=True
    SYSLOG_HOST=192.168.10.1

17.
service dnsmasq restart

18. Не забываем перед началом тестирования создать несколько пользователей, у меня это test1, test2, test3, ну и пользователь, который был создан во время установки. Добавлять пользователей можно любым способом, мне больше всего нравится при помощи комманды
adduser test1
естественно, вместо test1 Вы пишите своего. Почему предпочитаю этот способ? А потому, что мен так удобнее, и пароль я могу установить состоящий только из одного символа, а через "GUI" только шесть символов подавай...

На клиентах в BIOS выставляем загрузку по сети, у меня на разных машинах этот пункт по-разному называется, где фигурирует абривиатура PXE, а где NIC, но смысл один и тот же. Во время загрузки опрашивается сеть и если нашелся какой-то сервачек, который выдаст нам IP, да еще и предоставит образ для загрузки... В целом у меня все получилось, клиенты загрузились и я не только увидел это чудо - терминальный сервер своими глазами, но сделал его своими руками, я счастлив.


Итоги... Если все делать внимательно, вносить поправки исходя из собственных соображений в зависимости от возникшей ситуации, все достижимо и можно наслаждаться результатом своих стараний. А что же с результатами, вполне резонно спросите Вы? Загрузил я три клиента, больше не стал, ведь моя цель была попробовать, пока что...То, как работает операционная на машине 2004 года выпуска просто поражает, все крутится-вертится, менюшки мелькают, все быстро и красиво, но нужно попробовать то, ради чего все и затевалось. Запускаем браузер - сносно, онлайн видео, конечно не посмотришь, но в целом, нормально, далее пробуем офис, LibreOffice 5-й версии, Writer, Calc работали прекрасно, а вот с Impress пришло разочарование, лучше, конечно, чем на локальной машине та же презентация на той же ОС, но все равно не то. Это же касается и Blender-а и других более-менее затрагивающих мультимедийные возможности программ. Т.е., если Вы будете исполльзовать компьютеры в качастве офисных, бухгалтерских, т.е. где мультимедийные возможности не нужны, то использование терминального сервера просто идеальное решение, в остальных случаях - довольно сомнительное предприятие. К сожалению более современного/мощного компьютера под рукой нет, так что приходится довольствоваться полученными результатами.
В файл /opt/ltsp/i386/etc/lts.conf я добавил параметры
[6e:bd:c2:74:ff:e1]
XSERVER=nvidia
На одном из испытуемых была видеокарточка от nvidia, [6e:bd:c2:74:ff:e1] - это MAC-адрес сетевой карты этого ПК, таким образом я "привязал" именно этот параметр к конкретному компьютеру. Что-то пошло не так и я увидел на экране только курсор. Разбираться не стал, поскольку машины с карточками от nvidia как раз меньше всего нуждаются в описанной технологии, а вот 2004-ные..., супер VIA..., и добавить-то нечего.
Для своих слабых компьютеров я таки нашел современный, шустрый дистрибутив, но об этом в другой раз...


Источники:
https://interface31.ru/tech_it/2014/02/ubuntu-server-nastraivaem-router-nat-dhcp-squid3.html
https://ru.wikipedia.org/wiki/NAT
http://foraqis.ru/?p=117
http://melfis.ru/ubuntu-nat-dhcp-squid-прозрачный-кэширующий-прокси-се/
http://blog.bobbyallen.me/2015/07/19/setup-a-ubuntu-14-04-lts-mate-terminal-server-with-ltsp/
http://www.odmins-it.ru/article/180/
https://habrahabr.ru/post/277783/
http://nix.zeya.org/wiki/терминальное_решение_на_основе_ltsp
http://linuxnow.ru/view.php?id=25
http://pro-spo.ru/-linux/1381--ubuntu-ltsp




Комментариев нет:

Отправить комментарий