Хакер № 05/09 (125)

Виртуальная машина забесплатно. Берем на вооружение программу VirtualBox
Степан «Step» Ильин (step@glc.ru)
Если бы год назад мне сказали, что VirtualBox в скором станет в один ряд с такими любимыми нами продуктами, как VMware или Parallels, я бы, скорее всего, просто рассмеялся. «Интересная, но жутко непутевая, тормозящая и малофункциональная поделка энтузиастов» - вот общее впечатление о Virtualbox'е того периода. Но то, что в апреле я увидел на конференции Sun Tech Days, повергло меня в шок: совсем другой продукт! Прямо на месте было решено: во что бы то ни стало, о разработке надо рассказать.
Виртуальные машины я взял на вооружение давно и использую их постоянно. Несмотря на то, что большую часть времени провожу под Виндой, никс мне нужна довольно часто. Нет ничего удобнее, чем просто переключиться на всегда готовую ОС, запущенную на виртуалке. После последнего апгрейда компьютера гостевую систему с Linux'ом я даже не выключаю – она постоянно висит в памяти.
Сейчас уже сложно представить, во что бы превратилась рабочая система, установи я на нее весь софт, с которым приходится иметь дело. А операционке под виртуалкой все нипочем! Что бы ни происходило, какую бы пакость ни натворила только что установленная утилита, и какой бы сомнительной деятельностью ни занималась, ось возвращается в работоспособное приложение парой кликов мыши – достаточно лишь выбрать нужный снимок системы (snapshot). Трудно найти средство мощнее, чтобы в виртуальных условиях воссоздать сетевую инфраструктуру любой сложности, с нужным количеством хостов на различных системах. Провозившись часок, мы получаем платформу, на которой легко можно потестить новую x-toolz'у, попробовать самому расковырять сетевой демон, разобраться с настройкой сети или подготовиться к экзамену для получения престижного сертификата. Запускаем на двух виртуалках Backtrack и Damn Vulnerable Linux, связываем сеть - и используем весь специально собранный арсенал пентест-утилит первого дистра на специально оставленных багах и уязвимостях последнего. Оба дистрибутива, кстати говоря, были на нашем прошлом диске.
Даже не беря в расчет серверные решения, на которых виртуализация применяется сплошь и рядом, виртуальные машины плотно укрепились и на обычных рабочих станциях. Подходящих платформ немало. Если не заикаться об WMware Workstation, то это – Parallels Workstation, вполне работоспособная Microsoft Virtual PC и, наконец, VirtualBox. В моем личном хит-параде любимая «вмвара» долгое время занимала первое место. Но что странно: несмотря на большой штат сотрудников, новые версии появляются все реже, а каких-то революционных решений не видно вовсе. Когда-то недосягаемому лидеру теперь не просто наступают на пятки, но и по многим фронтам его начинают опережать конкуренты, в чем я лично убедился, поработав c VirtualBox'ом.
Что можно виртуализировать?
Первая версия программы стала публично доступна 15 января 2007 года, выйдя из недр компании Innotek, а уже в феврале 2008 разработку приобрела компания Sun Microsystems. Вероятно, это и стало тем волшебным пинком, который заставил все механизмы внутри VirtualBox'а работать, как надо. Со временем разработка, изначально ориентированная на запуск только Windows и Linux, научилась запускать самые разные системы, в том числе, такие как Solaris, OpenSolaris, и OpenBSD. Умельцы даже умудряются в качестве гостевой ОСи запихнуть Mac OS, правда, используют для этого адаптированную для Intel'овских процессоров версию Hackintosh. А 64-битные гостевые системы также не проблема, после того, как разработка стала поддерживать все аппаратные технологии виртуализации, которыми снабжаются современные процессоры. В общем, VirtualBox стал продуктом, который действительно можно использовать. К тому же, версии есть для Windows, Linux, Solaris/OpenSolaris/MacOS X.
Запустить операционку под VirtualBox'ом не сложнее, чем просто установить ее на компьютер. А возможно, даже и проще, потому что в соседнем окне можно почитывать мануал :).
Сам интерфейс программы очень прост. Надо очень сильно постараться, чтобы не суметь найти заветную кнопку «Создать», с помощью которой и создается новая виртуальная машина. В ходе работы мастера необходимо выполнить несколько этапов:
- выбрать тип операционки и название виртуальной машины;
- указать размер оперативки, выделенной гостевой ОС;
- создать новый или использовать уже имеющийся виртуальный жесткий диск;
Единственный нюанс - это тип диска: выбирай сам – или статический, который сразу займет все выделенное ему место, или динамический, файл которого будет расширяться по мере необходимости. Заготовка создана, теперь переходи в настройки и устанавливай различные параметры виртуальной машины. Для начала можно примонтировать в качестве привода ISO-образ с дистрибутивом (или просто предоставить в распоряжение свой CD/DVD-драйв), после чего нажать кнопку «Старт» и приступить к установке.
Если с виртуализацией ты раньше дела не имел, то отнесись к виртуалке как обычному компьютеру, который теперь работает внутри стандартного окна системы. Работа гостевой системы мало отличается от той же операционки, установленной на компе. VirtualBox поддерживает виртуализацию аудиоустройств. Более того, программа реализует виртуальный USB-контроллер, позволяющий подключить произвольное USB-устройство к виртуальной машине, без необходимости устанавливать драйвера на машину-хост. Особенно рекомендую систему снепшотов - так называемых сохраненных состояний виртуальной машины. К любому из таких снепшотов можно быстро произвести откат из любого состояния гостевой системы. Идеальная площадка для экспериментов!
Сетевые настройки
Раз уж я заикнулся о том, что на виртуалках можно воссоздать практически любую инфраструктуру, то хочу подробнее коснуться настройки сетевых интерфейсов. Еще год назад поддержку сети едва ли можно было назвать полноценной, но теперь все отлично работает. Для каждой виртуальной машины может быть установлено до четырех виртуальных интерфейсов, но самое главное в том, что работать они могут в разных режимах. Режим, в котором интерфейс будет функционировать, выбирается в свойствах виртуальной машины из следующих вариантов:
- Not attached (Не подключен);
- Network Address Translation (NAT);
- Bridged networking (Сетевой мост);
- Internal networking (Внутренняя сеть);
- Host-only networking (Виртуальная сеть хоста).
По умолчанию, виртуальные сетевые адаптеры работают в режиме NAT'а, идеально подходящем для того, чтобы предоставить гостевой операционной системе простейший доступ в инет (серфинг веба, почта и т.д.). Но отсутствие реального IP-адреса сводит на нет полезность такого режима, поэтому во многих случаях лучше использовать «Сетевой мост». В этом случае виртуальный сетевой адаптер получает точно такой же доступ в сеть, как и сетевой адаптер машины-хост. Например: все мои виртуалки имеют IP-шники, выданные тем же самым DHCP-сервером точки доступа, и со стороны разобраться, какие хосты - настоящие, а какие - запущены под виртуальной системой, практически невозможно. Режим «Внутренняя сеть» отлично подходит для локальных экспериментов, когда виртуальные машины нужно связать в локальную сеть, не предоставляя им доступ наружу и к машине-хосту. Включить в эту сеть машину-хост позволит режим «Виртуальная сеть хоста».
Удаленное подключение к виртуальной машине
Функция, за которую я особенно полюбил VirtualBox, - это возможность удаленного подключения к виртуальным машинам по стандартному протоколу RPD (вернее, его модифицированным версиям - VRDP, VirtualBox Remote Desktop Protocol). Причем, для подключения используются стандартные клиенты: виндовая утилита mstsc или, например, никсовый rdesktop. Штука просто умопомрачительная: можно запустить на хостовой машине сразу несколько виртуальных машин, дать к ней прямой доступ из инета - и полноценно использовать виртуалки, где бы ты ни находился.
В свойствах виртуальной машины есть раздел «Удаленный дисплей», откуда активируется опция «Включить VRDP-сервер». Важный момент - для каждой конкретной виртуальной машины необходимо указать свой уникальный порт, иначе одновременно работать с несколькими виртуалками не получится. Например, для виртуалки с Виндой можно оставить порт по умолчанию 3389 (имей в виду, что он может быть занят непосредственно сервером RDP хостовой машины), а для машины с никсами - 3390.
Стандартный виндовый клиент можно запустить по команде mstsc или найти его через меню «Пуск -> Стандартные -> Подключение к удаленному рабочему столу». В первый раз я долго пытался присоединиться к гостевым ОС, указывая их собственные IP (предварительно для них был создан сетевой мост, чтобы они вошли в мою обычную локалку) и не понимая, почему ничего не работает. Решение оказалось простым: для подключения необходимо указывать не адрес гостя, а IP-шник хостовой машины с нужным портом!
Под никсами выполнить подключение не менее просто через rdesktop, который в любом современном дистрибутиве установлен по умолчанию:
rdesktop host_system_ip:port
Другой важный момент, о котором я пока умолчал, - настройки авторизации. Самый небезопасный метод - полностью отключить процедуру аутентификации, но в этом случае доступ к виртуалке получит любой желающий. Вместо этого можно выбрать авторизацию через аккаунты хостовой системы или аккаунты гостевой системы. Для того чтобы данные было невозможно отснифать, любая RPD-сессия шифруется с помощью симметричного RC4 алгоритма с 128-битным ключом, который меняется каждые 4096 отправленных пакетов.
Дополнения гостевой системы
Неприятный момент в использовании виртуальных машин связан с «захватом» ими клавиатуры и мышки. Последние работают либо в гостевой ОС, либо в хостовой - освободить захваченные виртуалкой манипуляторы можно специально назначенной клавишей Host Key (правый <Ctrl> по дефолту). Переключения туда-сюда, особенно в случае нескольких виртуалок, начинают выводить из себя уже через несколько минут. Нервные клетки нужно беречь, поэтому рекомендую в каждой гостевой ОС установить так называемые Guest Additions. После этого граница между окном с гостевой ОС и хостовой системой становится прозрачной – ничего не захватывается, а буфер обмена становится общим. Если ты работал с VMware, то должен понимать, о чем я говорю - там тот же подход.
В случае с Windows заинсталить Guest Additions просто как дважды два: надо лишь в меню запущенной виртуальной машины выбрать «Устройства -> Установить Дополнения гостевой ОС». В систему примонтируется виртуальный CD, с которого быстренько и устанавливается все необходимое. В случае с никсами надо помнить, что официально поддерживаются дистрибутивы Fedora Core, Redhat Enterprise Linux, (open)SUSE, Ubuntu, но в действительности дополнения устанавливаются и на многие другие туксы.
Перед установкой настоятельно рекомендую установить фреймворк DKMS (Dynamic Kernel Module Support). Под Ubuntu это делается с помощью команды:
sudo apt-get install dkms
Далее монтируем образ VBoxGuestAdditions.iso в качестве виртуального CD-драйва, переходим в эту директорию и под рутом отдаем команду:
sh ./VBoxLinuxAdditions-x86.run
Чтобы перекомпилировать модули ядра на гостевой машине, делаем:
/etc/init.d/vboxadd setup
После компиляции остается перегрузить гостевую машину и убедиться, что все новые модули нормально работают.
Режим Seamless windows
Установить дополнения для гостевых ОС стоит и ради другой классной функции - режима Seamless windows. Что это? Если включить опцию, то окна виртуальной машины будут отображаться так же, как если бы это были окна обычной хостовой операционки. В основную систему они переносятся одним нажатием клавиши. Все работает настолько здорово, что через некоторое время забываешь, какое из них на самом деле запущено на виртуальной машине. Таскбар гостевой ОС при этом отображается рядом с панелью задач привычной хостовой системой.
Чтобы включить режим Seamless, необходимо нажать на Host key вместе с «L» - после чего размер виртуалки будет выставлен в соответствии с расширением экрана, окна перенесутся в хостовую машину, а фон виртуалки будет вырезан. Для возвращения в обычный режим используется та же комбинация клавиш.
Функция довольно специфичная, поэтому работает пока только для гостевых ОС на Windows, а также Solaris/OpenSolaris с сервером X.org старше версии 1.3.
Опция Shared Folders
Те же самые Guest Additions добавляют еще одну функцию - Shared Folders, или общие папки. Вещь очень удобная – позволяет физически не расшаривать ресурсы, но примонтировать их в гостевых ОС, как если бы они были доступны по сети. Для каждой конкретной виртуалки такие папки настраиваются в отдельности – каждая гостевая машина будет видеть только то, что ей полагается. Реализуется это с помощью специально запущенной службы на хостовой системе и файлового драйвера на гостевых ОС.
Как сделать такую расшаренную папку? На уже запущенной виртуалке выбери меню «Устройства -> Общие папки», выбери нужные каталоги основной системы, задай им сетевое имя и уровень доступа (полный или только для чтения). Готово! Можно примонтировать их под виртуалкой. Под Виндой сетевой диск подключается с помощью команды:
net use x: \\vboxsvr\sharename
где
x: - буква для сетевого диска
vboxsvr - фиксированное имя, обозначающее хост-машину
sharename - название папки, которое ты указал в момент создания общей папки
Под Linux'ом все то же самое выполняется командой:
mount -t vboxsf [-o OPTIONS] sharename mountpoint
Поддержка 3D в гостевых ОС
Одной из интереснейших фич, которую в Питере лично показывали разработчики VirtualBox'а - это поддержка 3D в гостевых системах на базе Винды и тукса. Благодаря этой новой функции, программе не приходится больше эмулировать 3D-ускорение внутри виртуальной машины (что дико медленно) - вместо этого VirtualBox использует графический процесс хостовой машины, причем не важно будь та на Windows, Linux, Mac, Solaris. Короче говоря, Quake3 на виртуальной машине или полюбившиеся многим эффекты Compiz'а под линуксом - теперь вполне нормальное явление. Работает это реально хорошо. Разработчикам удалось достичь подобного результата за счет дополнительного 3D-драйвера, который устанавливается вместе с Guest Additions в гостевую ОС и выполняет роль своеобразного посредника. Когда какое-то приложение (например, старая добрая квака) в гостевой системе пытается воспользоваться аппаратным ускорением 3D через интерфейсы OpenGl, соответствующие вызовы передаются на хостовую систему по организованному VirtualBox'ом туннелю, где они успешно и выполняются.
Пока, правда, функция считается экспериментальной и поэтому, по умолчанию, в настройках виртуальной машины отключена. Более того, на текущий момент поддерживается только OpenGL-ускорение, однако, Direct3D разработчики обещают уже в будущих релизах.
Управляем ВМ через консоль!
Поддержка любых сетевых конфигураций, удаленный доступ через RDP - что еще может потребоваться гику? Я отвечу: автоматизация! К счастью, в VirtualBox никто не обязывает тебя использовать GUI-интерфейс. Любые, подчеркиваю – любые, действия можно выполнить через консольную утилиту администрирования VBoxManage.exe и использовать в своих сценариях.
Можешь попробовать ввести команду «VBoxManage list vms» - получишь в консоли список всех существующих виртуальных машин, их имена и идентификаторы UUID:
c:\Program Files\Sun\xVM VirtualBox>VBoxManage.exe list vms
VirtualBox Command Line Management Interface Version 2.2.0
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.
"w7" {7f5e06fb-fee2-4984-af22-a113bf67e646}
"xp" {778f2a40-dce8-4519-97fd-9c4c0d6797c4}
"ub" {afc68d97-3883-48c1-8e1f-4fae39dc2d6c}
Хочешь запустить одну из них? Отдаем соответствующую команду, указав имя нужной виртуалки: «VBoxManage.exe startvm w7». Словом, через эту консольную утилиту ты можешь сделать абсолютно все: тулза с радостью расскажет, какие команды и как использовать, если ты запустишь ее без параметров.
Впрочем, кого и такой вариант не устраивает, еще больше интеграции c VirtualBox'ом можно достичь с помощью открытого API программы. Благодаря вызовам, которые хорошо документированы в SDK, разработчик получает полный контроль над движком виртуализации. В качестве примера, когда разработчик воспользовался открытым API, стоит привести утилиту BoxVmService (http://sourceforge.net/projects/vboxvmservice). Ее цель - позволить администратору грамотно запустить VirtualBox в виде Windows-сервиса. Слово «грамотно» означает, что виртуальные машины должны стартовать прямо в момент загрузки Винды (еще до логина пользователя в системе), и вместе с ней же корректно завершать работу. К сожалению, проект ныне не поддерживается, однако, по-прежнему является вполне работоспособным. Кстати, этот же разработчик очень скоро обещает выпустить первую версию другого своего проекта - vboxWebAdmin для управления виртуальными машинами через веб-интерфейс.
Последний трик
Я не упомянул еще одну изюминку проекта. VirtualBox абсолютно бесплатен и, более того – часть его исходников открыта! Поэтому, если ты еще не успел пощупать виртуализацию своими руками или наоборот являешься давним и закоренелым пользователем той же VMware Workstation, всячески рекомендую тебе попробовать VB.
Sun Tech Days 2009
Неизвестно, когда бы я еще взглянул на VirtualBox, если бы не попал на конференцию Sun Tech Days, проходившую в Питере 8-10 апреля. Мероприятие, надо сказать, поражает своими масштабами. Увидеть тысячи довольных разработчиков, собранных в одном месте и радужно что-то обсуждающих, не так-то просто. Люди прилетают и приезжают из разных уголков страны, и делают это уже несколько лет подряд. Впрочем, легко понять, что их привлекает в этом ивенте: за несколько дней они имеют возможность посетить более 45 выступлений и практических занятий по самым разным тематикам: премудростям сред SunStudio и NetBeans, настройке openSolaris, программированию на JavaFx и т.д. Что важно, все доклады читали сами специалиста из Sun, многие из которых специально для этого прилетели для этого в Питер, а на открытии конференции не давал скучать Джит Коул, вице-президент подразделения клиентского программного обеспечения Sun Microsystems, Inc.
Не могу поделиться и тем, что за день до конференции мне удалось побывать еще и в Питерском офисе Sun’а. Приятно осознавать, что это не маркетинговая структура, а самый настоящий центр разработки. Несколько сотен программистов трудятся над различными продуктами компании Sun и в том числе VirtualBox.
WWW
INFO
Поднятые виртуальные машины не составит труда запустить на другом компьютере. Нужно лишь экспортировать конфигурацию в файл специального формата OVF (открытый формат виртуализации) через меню «Файл -> Экспорт конфигурации». В ходе процедуры скопируется и виртуальный жесткий диск с файлами.
DVD
- Дистрибутив VirtualBox'а, а также SDK разработчика и дополнительные утилиты ждут тебя на нашем диске.
- Процедура миграции с другого продукта сильно упрощена за счет того, что VirtualBox поддерживает образы жестких дисков VMDK (VMware) и VHD (Microsoft Virtual PC).
Содержание
ВИДЕО К ЭТОМУ НОМЕРУНа седьмом небе с Windows Se7en В семерке и сопутствующих инструментах сделан ряд действительно полезных усовершенствований, которые позволят получить действительно легко управляемую и безопасную систему...
Во власти гипервизора В этом ролике мы установим Citrix XenServer и создадим виртуальную машину при помощи XenConsole...
Вскрываем SSL То, насколько просто могут утечь логины и пароли, мы покажем в этом видео. Будь осторожен!...
|
 |
|