Итак, легенда - тонкие клиенты работают очень шустро, почти как и машина от которой он запитан и при этом сам клиент может представлять собой "динозавра" в мире компьютеров. Решил я это проверить...
В наличии: серверная машинка с 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, который настроим чуть ниже
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
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
service dnsmasq restart
По идее, DHCP уже должен работать и все должно "крутиться", но..., увы, при подключении к будущему терминальному серверу любого ПК с ОСью, в которой сетевой адрес машина получает от DHCP, проще говоря - автоматически, ничего не произошло, т.е. этот клиент не получил адреса. Как выяснилось, заявленный вначале кандидат на установку, как дополнительный пакет, isc-dhcp-server не установился, поэтому, нужно проверить его наличие в системе, если нет, то устанавливаем.
apt-get install isc-dhcp-server
11. Снова редактируем очередной файл настроек
gedit /etc/default/isc-dhcp-server
Код: Выделить всё
INTERFACES="eth1"
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";
}
}
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"
gedit /opt/ltsp/i386/etc/lts.conf
Код: Выделить всё
[[default]]
LTSP_CONFIG=True
SYSLOG_HOST=192.168.10.1
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
Для своих слабых компьютеров я таки нашел современный, шустрый дистрибутив, но об этом в другой раз...
Источники:
https://interface31.ru/tech_it/2014/02/ ... quid3.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/se ... 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