от alabal(9-09-2006)

рейтинг (12)   [ добре ]  [ зле ]

Printer Friendly Вариант за отпечатване

Статията има за цел да опише за какво и как може да се инсталира и използва един изключително полезен модул на rdesktop - seamlessrdp. Rdesktop с този модул е тестван от автора в две дистрибуци на Линукс – Gentoo и Debian при взаимодействие с Windows XP и Windows Server 2003 R2. В допълнение е дадено и кратко обяснение как да инсталираме и използваме виртуална машина с помощта на qemu, за тези които имат желание да тестват този модул.

И тъй!

Среда и необходимост

Търсейки бюджетно решение за инсталирането и поддръжката на значителен брой компютри, както и на подход за лесно централизирано управление на потребителите, различен от обичайния Windows/Samba Primary Domain Controller, си спомних за две статии от сайта описващи използването на тънки клиенти.

След около седмица експерименти се оказа, че ltsp е точно това което ми трябва - леко, гъвкъво, невероятно евтино и добро спестяващо пари, време и усилия решение.

След като успях да инсталирам и настроя в две мрежи ltsp - общо взето подобни, едната с пет, другата с осем тънки клиента (всъщност пълноценни конфигурации с инсталиран Windows XP, просто за целите на демонстрациите "боотваха" от мрежата, без използване на твърдия диск) и по един "сървър" работещи съответно под Debian и Gentoo - резултатът беше впечатляващ. Идеята беше одобрена и като бюджет и като форма за централизирано управление на достъпа на потребителите. (Невероятно приятно е да видиш колко учудени остават хората от тази всъщност доста стара и леко позабравена идея за използването на терминали.)

НО!

Имаше едно голямо "НО!!!". Общо взето възраженията (напълно справедливи, според мен) се състояха в следното: "Харесваме идеята, искаме да я използваме, но ние имаме лицензи за програми, които работят под Windows и не можем да отделим нови средства за закупуване на лицензи под Linux на същите програми, а имаме и други, които ни се налага да използваме, а те нямат Linux аналози."

Следователно решението трябва да се търси в използването на някакъв вариант на емулация или използването на възможностите на rdp протокола.

Изпробвах wine, но срещнах сериозни затруднения дори за емулирането на относително добре поддържания Office XP. Тогава единственото решение се оказа rdesktop. При него проблемът пък бе, че след осъществяване връзката с машина работеща под Windows ви се отваря цял пълноценен десктоп, което само би объркало бъдещите потребители на системата.

Предположението ми, че и други са се сблъсквали с подобни проблеми се оказа вярно и след известно търсене по google попаднах на seamlessrdp


Как работи

След като изтеглите seamlessrdp от адреса по-горе трябва да разархивирате в някоя удобна директория на машината работеща под Windows, например C:\seamlessrdp.

Трябва да разрешите remote desktop на съответната машина и да укажете кои потребители могат да управляват машината отдалечено. След свързването с rdesktop seamlessrdpshell.exe осигурява различен шел от Explorer и разполагате с напълно функциониращо Windows приложение, работещо в собствената си среда и изобразено в един-единствен прозорец в работното поле на машината от която се свързвате.

Свързването към машината отнема минимално време, а в работата на приложенията не се забелязва почти никакво забавяне.

Ограничения и слабости:

Ltsp:

  • основното ограничение, според мен, при решение за използване на тънки клиенти е мрежата – ако се налага да използвате тежки графични приложения, трансфер на видео и аудио сигнал мрежа 10/100MBit е неподходяща;
  • при по-голям брой тънки клиенти (20 и повече), може да се наложи използване на два сървъра и някакво load-balancing решение. Подобно решение се налага и ако трябва да осигурите висока степен на сигурност и непрекъстнатост на работа.

Windows:
  • Seamlessrdp може да работи само с Windows XP Professional и Windows Server 2003 (R2), без допълнително инсталиране на Terminal Services и Remote Desktop. При по-стари или ограничени версии се налага инсталирането на тези услуги.

  • Windows XP Professional позволява само една-единствена връзка с един потребител. ВАЖНО!!! За да работи seamlessrdp е ЗАДЪЛЖИТЕЛНО да няма потребители, които да са “логнати” в момента на свързване. Всеки втори опит за свързване е обречен на неуспех. На този адрес има кратко описание как да се инсталират конкурентни връзки към Remote Desktop на Windows XP Professional.
Rdesktop:

  • Seamlessrdp работи с версия на rdesktop по-висока от 1.5.0.


Инсталиране

Gentoo:

# echo 'net-misc/rdesktop ~x86' >> /etc/portage/package.keyword
# emerge -av rdesktop


Debian:

# apt-get install build-essential cvs

И като обикновен потребител:
cvs -d:pserver:anonymous@rdesktop.cvs.sourceforge.net:/cvsroot/rdesktop login

cvs -z3 -d:pserver:anonymous@rdesktop.cvs.sourceforge.net:/cvsroot/rdesktop co -P rdesktop

cd rdesktop

./bootstrap

./configure

make

su

make install

ln -s /usr/local/bin/rdesktop /usr/bin/rdesktop

Свързване:

След като rdesktop е инсталиран и Remote Desktop е разрешен за даден потребител (user) със съответна парола (password) на машина отговаряща на IP адрес 172.20.0.15, за да стартирате, примерно, notepad използвайте следната команда:

$ rdesktop -A -a 16 -s "c:\seamlessrdp\seamlessrdpshell.exe notepad" 172.20.0.15 -u user -p password

Ако имате домейн контролер трябва да добавите и: -d domain

За да стартирате кое да е друго приложение, трябва да опишете пътя до неговия стартиращ файл. Например за MS Word 2003 ще трябва да изпълните следното:

$ rdesktop -A -a 16 -s "c:\seamlessrdp\seamlessrdpshell.exe c:\program files\microsoft office\office11\winword.exe" 172.20.0.15 -u user -p password

Ако всичко работи тези команди могат да бъдат записани в скрипт и със съответни линкове разположени (копирани) в десктопите на всеки потребител да бъде улеснено свързването. Примерно скрипт за MS Word 2003 за конкретния потребител ще изглежда така:

#!/bin/bash
rdesktop -A -a 16 -s "c:\seamlessrdp\seamlessrdpshell.exe c:\program files\microsoft office\office11\winword.exe" 172.20.0.15 -u user -p password

Тестване с виртуална машина:

Aко вече имате инсталиран Windows на виртуална машина, то се уверете, че тя се “вижда” от хост машината, чрез:

ping IP_address_na_virtualnata_mashina

след което опитайте да се свържете с нея по гореописания начин.

Aко нямате инсталирана виртуална машина, можете да използвате следното:

Инсталирайте qemu, за предпочитане с kqemu модул.

Уверете се, че имате компилиран модула tun за Universal TUN/TAP (modprobe -l | grep tun), ако го нямате ще трябва да го компилирате – намира се в раздел Device Drivers->Network device support -> Universal TUN/TAP device driver support.

Уверете се, че имате поддръжка на iptables в ядрото – ако не, компилирайте ново ядро с необходимите модули. Ето едно упътване как да стане това: HOWTO IPtables for newbies

След което:

# su
# modprobe kqemu
# modprobe tun
# qemu-img create disk.img 4G ## Създаване на дял от 4G
# nano /etc/qemu-ifup

Копирайте следния скрипт в този файл:

#!/bin/sh
/sbin/ifconfig $1 172.20.0.1
# chmod +x /etc/qemu-ifup

Стартирайте quemu така:
# qemu -net user -net nic,model=rtl8139 -net tap -m 512 -localtime -hda disk.img -cdrom /dev/cdrom -boot d

Това ще стартира qemu със първо boot устройство /dev/cdrom и използване на 512 MB от RAM (-m 512) ако е много - намалете я на 256. Ще бъде създадено устройство tap0 с адрес 172.20.0.1, ако желаете друг адрес – променете /etc/qemu-ifup. След като инсталирате Windows (за предпочитане Server 2003, вижте по-горе защо) създайте потребители, дайте им права за Remote Desktop, задайте следните настройки:

IP:172.20.0.XX
netmask 255.255.0.0
gateway:172.20.0.1
DNS:- този на вашата машина.

За да имате Интернет изпълнете това:

# echo "1" > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Изтеглете seamlessrdp и го инсталирайте. Тествайте!

Заключение:

Дори и с варианта на допълнителна машина работеща под Microsoft Server 2003 алтернативата е все още приемлива и мисля, че значително по-евтина от другите варианти. Точните изчисления за цените на различните алтернативи, подробно howto за ltsp и някои специфични настройки ще бъдат дадени в една или две бъдещи статии.

***************************************************

Връзки:



Статия на Никола Антонов - линк

Статия на Станимир Иванов - линк

Howto Quemu – Gentoo - линк

Howto Seamlessrdp (Ubuntu) - линк

Howto Ltsp (Gentoo) - линк

Linux Terminal Server Project - линк

ThinStation - линк


<< SSH без парола :) | Съхранение на поверителна информация в БД >>