Журнал LinuxFormat - перейти на главную

LXF169: Вир­туа­ли­за­ция Офис на Virtual Box

Материал из Linuxformat
(Различия между версиями)
Перейти к: навигация, поиск
(На­строй­ка сер­ве­ра вир­ту­аль­ных ма­шин)
(На­строй­ка тон­ких кли­ен­тов)
Строка 144: Строка 144:
 
От­ре­дак­ти­ру­ем файл /etc/inetd.conf, най­дя стро­ки та­ко­го ви­да:
 
От­ре­дак­ти­ру­ем файл /etc/inetd.conf, най­дя стро­ки та­ко­го ви­да:
  
#:BOOT: TFTP service is provided primarily for booting. Most sites
+
#:BOOT: TFTP service is provided primarily for booting. Most sites
  
# run this only on machines acting as "boot servers".
+
# run this only on machines acting as "boot servers".
  
 
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
 
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
Строка 266: Строка 266:
 
В ди­рек­то­рии /tftpboot соз­да­дим файл thinstation.hosts со­от­вет­ст­вия имен и MAC-ад­ре­сов для всех тон­ких кли­ен­тов, сле­дую­ще­го со­дер­жания:
 
В ди­рек­то­рии /tftpboot соз­да­дим файл thinstation.hosts со­от­вет­ст­вия имен и MAC-ад­ре­сов для всех тон­ких кли­ен­тов, сле­дую­ще­го со­дер­жания:
  
#Имя_компьютера Mac_адрес Имя_группы Коментарии
+
#Имя_компьютера Mac_адрес Имя_группы Коментарии
  
 
terminal1 006008C7A3D8 Firma #
 
terminal1 006008C7A3D8 Firma #

Версия 09:35, 14 ноября 2018

Вир­туа­ли­за­ция. Поль­за от вир­ту­аль­ных ма­шин.

Содержание

VirtualBox: 6 XP в од­ном Ubuntu

Мак­сим Че­ре­па­нов из­ла­га­ет, как по­стро­ить и ад­ми­ни­ст­ри­ро­вать офис­ные ра­бо­чие мес­та с ми­ни­му­мом за­трат и мак­си­му­мом эф­фек­тив­но­сти.

(thumbnail)
Наш эксперт Мак­сим Че­ре­па­нов зам­ди­рек­то­ра не­боль­шой ком­мер­че­ской фир­мы. Пе­ре­шел в Linux в 2008 г. и уже ус­пел ра­зу­чить­ся чис­тить ре­естр и за­быть сло­во «ан­ти­ви­рус».

Слу­чи­лось так, что пе­ре­до мной вста­ла сле­дую­щая за­да­ча: ор­ганизо­вать пе­ре­езд «по­ле­во­го», или уда­лен­но­го (т. е. не под­клю­чен­но­го к основ­ной локаль­ной се­ти), фи­лиа­ла некой фир­мы, из 8 ра­бо­чих стан­ций. Все они бы­ли на­строе­ны и ра­бо­та­ли на раз­ных вер­си­ях раз­ных ОС на раз­но­ма­ст­ном ре­аль­ном же­ле­зе, ко­то­рое глю­чи­ло по-раз­но­му. 6 ра­бо­чих мест бы­ли ти­по­вые офис­ные, т. е. на них на­кла­ды­ва­лись стан­дарт­ные тре­бо­вания: поч­та, офис, со­вме­ст­ное поль­зо­вание фай­ла­ми, пе­чать до­ку­мен­тов; при­чем на трех из них дол­жен был быть доступ в Ин­тернет. Ос­таль­ные два ра­бо­та­ли с Windows XP на ре­аль­ном же­ле­зе: на од­ном – несколь­ко ли­цен­зи­он­ных про­грамм и тер­мо­прин­тер эти­ке­ток, на вто­ром 1С.

Но все это бы­ло в ста­ром по­ме­щении, а при пе­ре­ез­де в но­вое нера­зум­но та­щить за со­бой ста­рые про­бле­мы. За­ру­чив­шись со­гла­си­ем ру­ко­во­дства на неко­то­рые до­полнитель­ные тра­ты, за 2 ме­ся­ца до пе­ре­ез­да я стал го­то­вить же­ле­зо и софт.

Обо­ру­до­вание и се­те­вая ин­фра­струк­ту­ра

Ти­по­вые ра­бо­чие мес­та я сра­зу же ре­шил сде­лать вир­ту­аль­ны­ми, соз­дав их на сер­ве­ре, к ко­то­ро­му они долж­ны бу­дут под­клю­чать­ся с тер­ми­на­лов. К на­ча­лу про­ек­та бы­ли в на­ли­чии:

» Сер­вер для досту­па во внешний мир. Же­ле­зо – Intel® Core™ 2 Duo, 2 Ethernet, на од­ном ppp на оп­ти­че­­ском мо­де­ме, вто­рой со ста­ти­че­­ским IP смот­рит внутрь локаль­ной се­ти. Софт – со­вер­шен­но стан­дарт­ный на­бор: Ubuntu 10.04 Server, SSH, Webmin, Squid, Shorewall, Postfix. Этот ком­пь­ю­тер успеш­но ра­бо­тал в прежнем по­ме­щении, сис­те­ма бы­ла пе­реуста­нов­ле­на за­но­во. Внут­ренний ста­ти­че­­ский IP – 192.168.0.200.

» Два обыч­ных ком­пь­ю­те­ра (пе­ренесе­ны из ста­ро­го по­ме­щения). ОС на них воз­вра­ще­на к ис­ход­но­му ви­ду из слеп­ков, все про­грам­мы пе­реуста­нов­ле­ны за­но­во.

» Не­сколь­ко прин­те­ров – се­те­вых и с об­щим досту­пом.

» Шесть ли­цен­зий Windows XP PRO SP3 Get Genuine Kit. Стро­го го­во­ря, в них не бы­ло необ­хо­ди­мо­сти, но они бы­ли уже ку­п­ле­ны до ре­кон­ст­рук­ции фи­лиа­ла. Не со­лить же их!

Для до­уком­плек­та­ции по­тре­бо­ва­лись сле­дую­щие при­об­ре­тения:

» Для 6 ти­по­вых ра­бо­чих мест – тер­ми­на­лы Neoware CA-21: VIA Eden 800 МГц CPU, 512 МБ ОЗУ, 1 ГБ Flash, 4 пор­та USB, VGA, LAN. Ко­ро­че, все что на­до для нор­маль­ной ра­бо­ты. По слу­чаю по­лу­чи­лось ку­пить на аук­ционе eBay – в пе­ре­сче­те на россий­ские руб­ли, по 700 руб./шт.

» Но­вые кла­виа­ту­ры и мы­ши с разъ­е­ма­ми PS для пол­ной со­вмес­ти­мо­сти с тер­ми­на­ла­ми. Хо­тя по­том вы­яснилось, что они так­же пре­крас­но ра­бо­та­ют с USB-пе­ри­фе­ри­ей. При­об­рел ско­рее для то­го, что­бы все бы­ло чис­то и кра­си­во – преж­няя пе­ри­фе­рия ра­бо­та­ла, но бы­ла из­но­ше­на прак­ти­че­­ски до пре­де­ла.

» Ком­пь­ю­тер для сер­ве­ра вир­ту­аль­ных ма­шин Intel® Core™ i3-2100 CPU @ 3.10 ГГц, 4 яд­ра, 12 ГБ опе­ра­тив­ной па­мя­ти, 1-ТБ вин­че­стер. Ви­део и сеть ин­тег­ри­ро­ван­ные. Софт: Ubuntu-12.04 Server, в ней за­пу­щен VirtualBox с до­полнитель­ны­ми па­ке­та­ми, внут­ри ко­то­ро­го кру­тят­ся 6 вир­ту­аль­ных ядер Windows XP (ра­бо­чие стан­ции), Samba для об­ще­го поль­зо­вания фай­ла­ми, сис­те­ма за­пуска ядер, сис­те­ма за­груз­ки тер­ми­на­лов про­ме­жу­точ­ной ОС. Внут­ренний IP – 192.168.0.250.

На­строй­ка сер­ве­ра вир­ту­аль­ных ма­шин

Ис­ход­ное со­стояние – све­жеуста­нов­лен­ный Ubuntu 12.04 Server; конеч­но, уста­нов­ле­ны и на­строе­ны служ­ба SSH и фай­ло­вый менед­жер mc.

1 На сай­те VirtualBox за­хо­дим в https://www.virtualbox.org/wiki/Linux_Downloads. Вы­би­ра­ем свой ди­ст­ри­бу­тив и до­бав­ля­ем в /etc/apt/sources.list нуж­ную стро­ку:

deb http://download.virtualbox.org/virtualbox/debian precise contrib

Ска­чи­ва­ем, со­хра­ня­ем и ус­та­нав­ли­ва­ем пуб­лич­ный ключ Oracle:

wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

Об­нов­ля­ем ре­по­зи­то­рии и ус­та­нав­ли­ва­ем dkms и virtualbox:

sudo apt-get update

sudo apt-get install dkms virtualbox-4.2

Пе­ре­хо­дим на https://www.virtualbox.org/wiki/Downloads, ко­пи­ру­ем ссыл­ку на те­ку­щую вер­сию Oracle VM Virtualbox Extention Pack и за­ка­чи­ва­ем его:

wget http://download.virtualbox.org/virtualbox/4.2.6/Oracle_VM_VirtualBox_Extension_Pack-4.2.6-82870.vbox-extpack

Этот па­кет по­зво­ля­ет ис­поль­зо­вать RDP и USB 2.0.

$ sudo vboxmanage extpack install ~/Oracle_VM_VirtualBox_Extension_Pack-4.2.6-82870.vbox-extpack

Во вре­мя уста­нов­ки VirtualBox до­бавится но­вая груп­па vboxusers. Поль­зо­ва­те­ля, от имени ко­то­ро­го бу­дет за­пускать­ся VirtualBox, нуж­но до­ба­вить в эту груп­пу, ина­че за­пуск бу­дет невоз­мо­жен:

$ sudo usermod -aG vboxusers ian

Здесь мы до­ба­ви­ли в груп­пу vboxusers поль­зо­ва­те­ля ian.

2 Ус­та­нав­ли­ва­ем unzip, Apache и па­кет для под­держ­ки PHP:

$ sudo apt-get install unzip apache2 libapache2-mod-php5

По­сле ус­та­нов­ки Apache дол­жен за­пус­тить­ся. Ес­ли это­го не про­изош­ло, на вся­кий слу­чай пе­ре­за­пус­ти­те его:

$ sudo /etc/init.d/apache2 restart

3 Пе­ре­хо­дим на http://code.google.com/p/phpvirtualbox/, ска­чи­ва­ем и рас­па­ко­вы­ва­ем phpvirtualbox не­об­хо­ди­мой вер­сии:

# wget http://phpvirtualbox.googlecode.com/files/phpvirtualbox-4.2-4.zip

В ар­хи­ве име­ет­ся пап­ка phpvirtualbox-*.* – эту пап­ку (не ее со­дер­жи­мое, а имен­но ее) пе­ре­но­сим в /var/www и пе­ре­име­но­вы­ва­ем в /var/www/phpvirtualbox. Пе­ре­име­но­вы­ва­ем внут­ри этой пап­ки файл config.php-example в config.php и ре­дак­ти­ру­ем его – на­до ука­зать ло­гин поль­зо­ва­те­ля c пра­вами ад­минист­ра­тора, от имени ко­то­ро­го бу­дет за­пускать­ся VirtualBox, а так­же его па­роль:

var $username = 'ian'

var $password = 'pass'

и вы­брать рус­ский язык для ин­тер­фей­са:

var $language = ‘ru’

4 Соз­да­ем кон­фи­гу­ра­ци­он­ный файл для за­пус­ка vboxweb-service:

$ sudo touch /etc/default/virtualbox

Его ми­ни­маль­ное со­дер­жа­ние –

VBOXWEB_USER=ian

а имен­но ло­гин поль­зо­ва­те­ля, имею­ще­го ад­минист­ра­тив­ные пра­ва, от имени ко­то­ро­го бу­дет за­пускать­ся VirtualBox.

Опи­сание дру­гих оп­ций мо­жо по­смот­реть на http://code.google.com/p/phpvirtualbox/wiki/vboxwebServiceConfigLinux.

5 Стар­ту­ем сер­вис:

$ sudo /etc/init.d/vboxweb-service start

От­кры­ва­ем брау­зер на сво­ем ком­пь­ю­те­ре и пи­шем в ад­рес­ной стро­ке: http://имя_сервера/phpvirtualbox. Ло­гин и па­роль по умол­чанию – admin и опять же admin.

На рис. 1 изо­бра­же­но то, что вы долж­ны уви­деть: та­кой же ин­тер­фейс, как у де­ск­топ­ной вер­сии.

Ус­та­нав­ли­ва­ем столь­ко и та­кие вир­ту­аль­ные ма­ши­ны, как тре­бу­ет­ся. В мо­ем слу­чае это шесть Windows XP. Я сде­лал од­ну ма­ши­ну, а все осталь­ные клониро­вал с нее. Обя­за­тель­но уста­нав­ли­ва­ем до­полнения госте­вой сис­те­мы.

6 Ор­ганизу­ем ав­то­за­пуск неко­то­рых вир­ту­аль­ных ма­шин од­но­вре­мен­но с host-сер­ве­ром и ав­то­ма­ти­че­­ское кор­рект­ное вы­клю­чение вир­туа­лок вме­сте с сер­ве­ром.

За­би­ра­ем скрипт на странице: http://mmm-dev.blogspot.ru/2011/04/virtualbox.html. Со­хра­ня­ем его в /etc/init.d под именем vboxcontrol и де­ла­ем ис­пол­няе­мым:

$ sudo chmod +x /etc/init.d/vboxcontrol

Соз­да­ем кон­фи­гу­ра­ци­он­ные фай­лы /etc/virtualbox/config и /etc/virtualbox/machines_enabled.

В пер­вом ука­зы­ва­ет­ся поль­зо­ва­тель, от имени ко­то­ро­го за­пуска­ет­ся скрипт (с ад­минист­ра­тив­ны­ми при­ви­ле­гия­ми):

VM_USER=ian

Во вто­ром пе­ре­чис­ля­ют­ся вир­ту­аль­ные ма­ши­ны, ко­то­рые бу­дут ав­то­ма­ти­че­ски стар­то­вать вме­сте с хос­том (по име­ни ма­ши­ны, ка­ж­дая с но­вой стро­ки):

XP_main

XP_1

XP_2

Ос­та­лось об­но­вить скрип­ты init.rc –

$ sudo update-rc.d vboxcontrol defaults 99 10

по­сле че­го ста­но­вят­ся доступ­ны ко­ман­ды service vboxcontrol start|stop|status|savestate|poweroff (для виртуальной машины из спи­ска), а так­же service vboxcontrol vm-start|vm-stop|vm-poweroff|vm-savestate|vm-reset VM_NAME (для кон­крет­ной вир­ту­аль­ной ма­ши­ны).

На­строй­ка тон­ких кли­ен­тов

По боль­шо­му сче­ту на­до толь­ко вклю­чить на­строй­ку по се­ти в BIOS (будь­те внима­тель­ны, обыч­но она вклю­ча­ет­ся в двух мес­тах BIOS’а. Я для удоб­ст­ва за­пи­сы­ваю на внут­рен­нюю флэш-па­мять еще ка­кой-нибудь ма­лень­кий Linux ти­па Puppy или CorePlus) и, конеч­но, за­пи­сать MAC-ад­рес Ethernet кар­ты тер­ми­на­ла. До­пустим, он 00:60:08:C7:A3:D8 – обыч­но он за­пи­сан на кор­пу­се, или его мож­но уз­нать, на­брав в кон­со­ли тер­ми­на­ла ifconfig (вот еще для че­го я став­лю внутрь ма­лень­кий Linux: ма­ло ли что на­пи­са­но на кор­пу­се).

Те­перь на­стро­им за­груз­ки по се­ти в сер­ве­ре вир­ту­аль­ных ма­шин.

1 Ус­та­но­вим на сер­вер вир­ту­аль­ных ма­шин де­мон TFTP:

$ sudo apt-get install tftp tftpd

По умол­чанию TFTP-сер­вер на­стро­ен на ис­поль­зо­вание ди­рек­то­рии /srv/tftp. Мы пе­ре­стро­им его на ис­поль­зо­вание /tftpboot: в этой ди­рек­то­рии бу­дут хранить­ся фай­лы, ко­то­рые мы мо­жем ска­чать с сер­ве­ра или за­ка­чать в него.

От­ре­дак­ти­ру­ем файл /etc/inetd.conf, най­дя стро­ки та­ко­го ви­да:

#:BOOT: TFTP service is provided primarily for booting. Most sites
# run this only on machines acting as "boot servers".

tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp

По­след­няя стро­ка долж­на по­лу­чить­ся та­кой:

tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot

Соз­да­дим ра­бо­чую ди­рек­то­рию и по­ме­ня­ем пра­ва дос­ту­па:

$ sudo mkdir /tftpboot

$ sudo chown -R nobody /tftpboot

Пе­ре­за­пус­тим сер­вер inetd:

$ sudo /etc/init.d/openbsd-inetd restart

По­мес­тим в ди­рек­то­рию /tftpboot ка­кой-ни­будь файл (myfile) и вы­пол­ним ко­ман­ду

$ tftp localhost

На при­гла­ше­ние TFTP-сер­ве­ра вве­дем

tftp> get myfile

Ес­ли файл по­лу­чен, зна­чит, все пра­виль­но, и перед вами появится сообщение

Received 168 bytes in 0.1 seconds

Ес­ли вы не ви­ди­те это­го со­об­ще­ния, про­ве­ряй­те все за­но­во.

2 Ус­та­но­вим сер­вер DHCP и на­стро­им его для уда­лен­ной за­груз­ки тер­ми­на­лов.

$ sudo apt-get install dhcp3-server

От­ре­дак­ти­ру­ем /etc/dhcp3/dhcpd.conf:

ddns-update-style none;

default-lease-time 600;

max-lease-time 7200;

authoritative;

log-facility local7;

server-name “192.168.0.200”; # Ад­рес DNS сер­ве­ра, у ме­ня это дру­гая ма­ши­на

subnet 192.168.0.0 netmask 255.255.255.0 {

pool {

range 192.168.0.170 192.168.0.190; # Диа­па­зон ра­бо­ты DHCP, ос­таль­ные ма­ши­ны у ме­ня со ста­ти­че­ски­ми IP

next-server 192.168.0.250; # Ад­ре­се tftp сер­ве­ра с за­груз­чи­ком

filename “pxelinux.0”; # Имя фай­ла с за­груз­чи­ком

}

}

Пе­ре­за­пус­тим DHCP-сер­вер:

$ sudo /etc/init.d/dhcp3-server restart

3 На­пол­ня­ем ди­рек­то­рию /tftpboot: за­хо­дим на http://www.kernel.org/pub/linux/utils/boot/syslinux/, за­би­ра­ем и рас­па­ко­вы­ва­ем syslinux, от­ту­да бу­дем брать необ­хо­ди­мые фай­лы.

Соз­да­дим ди­рек­то­рию /tftpboot/boot и за­гру­зим в нее файл vesamenu.c32 (для соз­дания и ре­дак­ти­ро­вания за­гру­зоч­но­го ме­ню).

В ди­рек­то­рию /tftpboot за­гру­зим файл pxelinux.0 (се­те­вой за­груз­чик).

Соз­да­дим ди­рек­то­рию /tftpboot/pxelinux.cfg, а в ней – файл default сле­дую­ще­го со­дер­жания:

default /tftpboot/boot/vesamenu.c32

menu color border 0 #ffffffff #00000000

menu color sel 7 #ffffffff #ff000000

menu color title 0 #ffffffff #00000000

menu color unsel 0 #ffffffff #00000000

menu color disabled 0 #ffffffff #00000000

menu color timeout_msg 0 #ffffffff #00000000

menu color timeout 0 #ffffffff #00000000

menu background #1F45A5

menu title PXE Network Boot Menu

prompt 0

timeout 20

label Thinstation

kernel /tftpboot/pxe/thinstation/vmlinuz

append ramdisk_blocksize 4096 initrd=/tftpboot/pxe/thinstation/initrd root=/dev/ram0 ramdisk_size=524288 splash=silent vga=791 console=ttyS3

label Boot from first hard disk

localboot 0x80

menu end

За­хо­дим на http://www.thinstation.org/, за­би­ра­ем и рас­па­ко­вы­ва­ем ди­ст­ри­бу­тив Thinstation. Сей­час уже доступ­на вер­сия 5, но я ис­поль­зую 2.5, по­это­му мне неиз­вест­но, бу­дет ли ра­бо­тать все пе­ре­чис­лен­ное на но­вой вер­сии.

Соз­да­дим ди­рек­то­рию /tftpboot/pxe/thinstation, за­гру­зим в нее фай­лы initrd и vmlinuz из вы­бран­но­го ди­ст­ри­бу­ти­ва Thinstation.

В ди­рек­то­рии /tftpboot соз­да­дим файл thinstation.hosts со­от­вет­ст­вия имен и MAC-ад­ре­сов для всех тон­ких кли­ен­тов, сле­дую­ще­го со­дер­жания:

#Имя_компьютера	Mac_адрес Имя_группы	Коментарии

terminal1 006008C7A3D8 Firma #

terminal2 000000000000 Firma #

terminal3 000000000000 Firma #

terminal4 000000000000 Firma #

terminal5 000000000000 Firma #

terminal6 000000000000 Firma #

Пер­вый MAC-ад­рес – из на­ше­го при­ме­ра; ви­до­из­мените файл по ва­шим дан­ным.

Для ка­ж­до­го вы­бран­но­го ва­ми имени тон­ко­го кли­ен­та (пер­вый стол­бец) соз­дай­те в ди­рек­то­рии /tftpboot соб­ст­вен­ный кон­фи­гу­ра­ци­он­ный файл (thinstation.conf-terminal1 для имени terminal1 и по­доб­ные фай­лы для дру­гих тер­ми­на­лов):

AUTOSTART=On

SCREEN_RESOLUTION="1024x768"

SCREEN_COLOR_DEPTH="16"

RDESKTOP_COMPRESSION=On

RDESKTOP_COLOR_DEPTH="16"

KEYBOARD_MAP=en_us # Рас­клад­ка кла­виа­ту­ры

TIME_ZONE="Europe/Moscow"

USB_ENABLED=On # Вклю­че­ние драй­ве­ров USB, нуж­но для кла­виа­ту­ры и мы­ши

AUDIO_LEVEL=67

SESSION_0_TITLE="Terminal 1"

SESSION_0_TYPE=rdesktop

SESSION_0_RDESKTOP_SERVER=192.168.0.250:3391 # RDP-порт вир­ту­аль­ной ма­ши­ны

SESSION_0_RDESKTOP_OPTIONS=”-u user -z”# user – под этим ло­ги­ном бу­дет пред­при­ня­та по­пыт­ка вхо­да в сес­сию RDP вир­ту­аль­ной ма­ши­ны

Об­ра­ти­те внимание на пред­по­след­нюю стро­ку: данный порт на­до бу­дет про­пи­сать в свой­ст­вах нуж­ной вам вир­ту­аль­ной ма­ши­ны, поз­же я на­пом­ню про это.

Ес­ли все сде­ла­но вер­но, то мож­но про­бо­вать за­пускать тер­ми­на­лы. Пер­вым пой­дет за­груз­ка PXE, оп­ре­де­лит­ся сер­вер DHCP, тер­ми­нал по­лу­чит IP, за­тем пой­дет за­груз­ка из /tftpboot, на 2 се­кун­ды вы­ско­чит за­гру­зоч­ное ме­ню и начнет­ся за­груз­ка Thinstation. По­сколь­ку RDP в вир­ту­аль­ных ма­ши­нах еще не вклю­чен, за­груз­ка за­кон­чит­ся се­рым эк­ра­ном с дву­мя оп­ция­ми: Shutdown и Reconnect.

На­строй­ка вир­ту­аль­ных ма­шин

Бу­дем счи­тать, что все ска­зан­ное вы­ше про­шло успеш­но, и вир­ту­аль­ные ма­ши­ны в по­треб­ном ко­ли­че­­ст­ве успеш­но ин­стал­ли­ро­ва­ны че­рез phpvirtualbox. Про на­строй­ку па­мя­ти, се­ти и про­че­го вир­ту­аль­но­го обо­ру­до­вания пи­сать не бу­ду, это­го вполне доста­точ­но в Се­ти. Ос­та­нов­люсь на ак­ти­ва­ции RDP. Для него обя­за­те­лен па­кет рас­ши­рения Oracle VM Virtualbox Extention Pack.

На рис. 2 по­ка­за­но, как пра­виль­но сде­лать на­строй­ку RDP: по­ста­вить га­лоч­ку и про­пи­сать тот порт, ко­то­рый ука­зан в кон­фи­гу­ра­ции. Об­ра­ти­те внимание, что IP при об­ра­щении по RDP у вир­ту­аль­ных ма­шин тот же, что и у сер­ве­ра вир­ту­аль­ных ма­шин, но порт у ка­ж­дой свой. Это важ­но помнить, ес­ли на­до зай­ти уда­лен­но не с тер­ми­на­ла, ко­то­рый ав­то­ма­ти­че­­ски под­гру­жа­ет кон­фи­гу­ра­цию, а вруч­ную с дру­го­го ком­пь­ю­те­ра для по­мо­щи поль­зо­ва­те­лю.

Все, пе­ре­за­гру­жа­ем се­вер вир­ту­аль­ных ма­шин. Про­ве­ря­ем (за­хо­дом на http://имя_сервера/phpvirtualbox), стар­то­ва­ли ли ма­ши­ны из спи­ска. Ес­ли да – пе­ре­за­гру­жа­ем тон­кие кли­ен­ты, для ко­то­рых на­строе­ны кон­фи­гу­ра­ци­он­ные фай­лы. У ме­ня че­рез 65 се­кунд по­сле вклю­чения пи­тания по­яв­ля­ет­ся ок­но при­гла­шения вхо­да в Windows.

До­полнения и за­ме­чания

1 Доступ к phpvirtualbox ор­ганизо­ван сред­ст­ва­ми Shorewall, в rules до­бав­ле­на сле­дую­щая стро­ка:

Web/DNAT net loc:192.168.0.250

Та­ким об­ра­зом, об­ра­ща­ясь к пор­ту 80 на внешний IP, по­па­да­ем на Apache внут­реннего сер­ве­ра вир­ту­аль­ных ма­шин.

2 На сер­ве­ре вир­ту­аль­ных ма­шин за­пу­ще­на Samba для со­вме­ст­но­го поль­зо­вания до­ку­мен­та­ми. По­сколь­ку фи­зи­че­­ски опе­ра­ци­он­ная сис­те­ма и до­ку­мен­ты на­хо­дят­ся на од­ной ма­шине, от­кры­тие до­ку­мен­тов про­ис­хо­дит в ра­зы бы­ст­рее, чем с фи­зи­че­­ской ма­ши­ны, под­клю­чен­ной к это­му же сер­ве­ру по локаль­ной се­ти.

3 Доступ в Ин­тернет ре­гу­ли­ру­ет­ся совершенно так же, как для фи­зи­че­­ских ком­пь­ю­те­ров: с по­мо­щью Squid и ста­ти­че­­ских ад­ре­сов, ко­то­рые про­пи­са­ны в на­строй­ках са­мих вир­ту­аль­ных опе­ра­ци­он­ных сис­тем.

4 Я не стал за­мо­ра­чи­вать­ся с про­бро­сом пор­тов прин­те­ров и сканеров на тер­ми­на­лы. К двум имею­щим­ся фи­зи­че­­ским ма­ши­нам под­клю­чил по­треб­ное ко­ли­че­­ст­во пе­ри­фе­рии про­во­да­ми по­длиннее, от­крыл к ним об­щий доступ, и все.

5 В crontab сер­ве­ра вир­ту­аль­ных ма­шин внесе­на сле­дую­щая запись:

30 23 * * * /etc/init.d/vboxcontrol savestate

00 06 * * * /etc/init.d/vboxcontrol start

В 23:30 еже­днев­но вир­ту­аль­ные ма­ши­ны за­сы­па­ют, в 6 ут­ра про­сы­па­ют­ся. В та­ком со­стоянии их мож­но клониро­вать или соз­дать их ре­зерв­ные ко­пии. Но по­сколь­ку у ме­ня в за­го­тов­ке есть на­стро­ен­ная пол­но­стью ис­прав­ная ма­ши­на, и вре­мя ее раз­вер­ты­вания со­из­ме­ри­мо с раз­вер­ты­ванием из еже­днев­ной ре­зерв­ной ко­пии, я не стал до­полнитель­но на­гру­жать crontab.

6 Ес­ли вы хо­ти­те уда­лен­но по­мочь поль­зо­ва­те­лю, мож­но по­ста­вить га­лоч­ку «Раз­ре­шать несколь­ко под­клю­чений» на свой­ст­вах дис­плея в вир­ту­аль­ной ма­шине (см. рис. 2, но на рисунке га­лоч­ка не сто­ит). Я про­бра­сы­ваю порт в Shorewall внешнего сер­ве­ра – в фай­ле rules впи­сы­ваю стро­ку

DNAT net loc:192.168.0.250:3391 tcp 11011 #RDESKTOP

и об­ра­щением по внешнему IP сер­ве­ра на порт 11011 по­па­даю на ра­бо­чий стол тер­ми­на­ла од­но­вре­мен­но с поль­зо­ва­те­лем.

7 Вир­ту­аль­ные ма­ши­ны мож­но та­со­вать, как кар­ты в ко­ло­де, опе­ри­руя пор­та­ми в RDP. Так­же, из­ме­няя /tftpboot/pxelinux.cfg/default, мож­но соз­дать боль­шое ме­ню для за­груз­ки дру­гих ядер вир­ту­аль­ных ма­шин. Ин­фор­ма­цию про это лег­ко най­ти в Се­ти.

8 В ка­че­­ст­ве тер­ми­на­ла мож­но ис­поль­зо­вать аб­со­лют­но лю­бой ком­пь­ю­тер с функ­ци­ей за­груз­ки по се­ти по спе­ци­фи­ка­ции PXE, нуж­но толь­ко впи­сать в об­щий кон­фиг MAC-ад­рес се­те­вой кар­ты, же­ст­кий диск на та­ком ком­пь­ю­те­ре не обя­за­те­лен.

9 Ес­ли вам по­па­дет­ся монитор с со­от­но­шением сто­рон 16:9, для нор­маль­но­го ото­бра­жения при­дет­ся немно­го из­менить кон­фи­гу­ра­ци­он­ный файл тер­ми­на­ла:

AUTOSTART=On

X_MONITOR_MODELINE='"1366x768" 85.034880 1366 1424 1568 1776 768 772 776 798 -HSync +VSync'

SCREEN_RESOLUTION="1366x768"

SCREEN_HORIZSYNC="31.5-81"

SCREEN_VERTREFRESH="55-76"

I915RESOLUTION_ENABLED=On

I915RESOLUTION_OPTIONS="3c 1366 768 8"

  1. SCREEN_RESOLUTION="1024x768"

SCREEN_COLOR_DEPTH="16"

RDESKTOP_COMPRESSION=On

RDESKTOP_COLOR_DEPTH="16"

KEYBOARD_MAP=en_us # Рас­клад­ка кла­виа­ту­ры

TIME_ZONE="Europe/Moscow"

USB_ENABLED=On # Вклю­че­ние драй­ве­ров USB

AUDIO_LEVEL=67

SESSION_0_TITLE="Terminal 1"

SESSION_0_TYPE=rdesktop

SESSION_0_RDESKTOP_SERVER=192.168.0.250:3391

SESSION_0_RDESKTOP_OPTIONS="-u user -z"

Кро­ме то­го, на сер­ве­ре вир­ту­аль­ных ма­шин на­до яв­но за­дать раз­ре­ше­ние для кон­крет­ной ма­ши­ны:

$ VBoxManage controlvm Terminal1 setvideomodehint 1366 768 16

Ес­ли у вас дру­гие раз­ре­шение эк­ра­на и глу­би­на цве­та, по­ме­няй­те на свои (1366, 768 и 16) и по­сле это­го за­дай­те нуж­ные па­ра­мет­ры эк­ра­на из вир­ту­аль­ной ма­ши­ны. Ка­жет­ся доста­точ­но слож­ным, но к со­жа­лению, у ме­ня без всех этих манипу­ля­ций нор­маль­но­го изо­бра­жения на ши­ро­ко­эк­ран­ных монито­рах не по­лу­ча­лось.

Ав­тор­ст­во

Из все­го при­ве­ден­но­го я не на­пи­сал ни строч­ки, прав­ку кон­фи­гу­ра­ци­он­ных фай­лов под свои ну­ж­ды на­пи­санием не счи­таю. Этот ма­те­ри­ал – про­сто све­дение вме­сте из­вест­ной ин­фор­ма­ции. |

Персональные инструменты
купить
подписаться
Яндекс.Метрика