Удаленное подключение к virtualbox

Удаленное подключение к virtualbox

Содержание статьи

Если хоть раз попробуешь установить Linux под VirtualBox’ом, может сложиться впечатление, что это очень простой инструмент. Интерфейс виртуальной машины не содержит ничего лишнего, а работа с приложением предельно понятна и прозрачна. На самом же деле под этой простотой скрывается масса дополнительных возможностей, которая нужна далеко не всем. Но эта история не про нас.

Работая с VirtualBox’ом каждый день, открываешь для себя все новые и новые фишки. Например, недавно, когда мне понадобилось отснифать весь трафик виртуальной машины, оказалось, что необязательно использовать сниффер: для этого есть встроенная опция в самой программе. А встроенный API, как оказалось, за последние полтора года сильно шагнул вперед, и я буквально за часик разобрался и сварганил скрипт, который автоматически выполнял нужные мне действия внутри гостевой системы. Сегодня мы решили аккумулировать свой опыт и составить несколько полезных и подчас неочевидных приемов работы с VirtualBox, к которым нам нередко приходится прибегать.

Трик 1. Управляем виртуальными машинами через RDP

Удаленный доступ — это то, что я использую каждый день. С этой стороны особенно приятно, что к любой виртуальной машине VirtualBox можно удаленно подключиться и комфортно работать с ней, используя стандартный протокол RDP (Remode Desktop Protocol). Подойдут любые знакомые клиенты: виндовая утилита mstsc или, например, никсовый FreeRDP (www.freerdp.com). Для каждой виртуальной машины выделяется отдельный порт, поэтому нет никакой проблемы, чтобы запустить на хостовой машине сразу несколько виртуалок и в случае необходимости обращаться к любой из них. Соответственно, все, что нужно для подключения — это указать IP-адрес хостовой машины с нужным портом. Стандартный виндовый клиент вызывается по команде mstsc. Под никсами выполнить подключение не менее просто через rdesktop, который в любом современном дистрибутиве установлен по умолчанию:

Включить доступ по RDP и назначить порт можно в настройках каждой виртуальной машины на вкладке «Удаленный дисплей». Для виртуалки с виндой можно оставить порт по умолчанию 3389 (имей в виду, что он может быть занят непосредственно серверо м RDP хостовой машины), а для машины с никсами — 3390 и т.д. Если планируется несколько одновременных подключений, необходимо активировать соответствующую опцию. Помимо этого здесь настраиваются параметры авторизации.

Самый небезопасный метод — полностью отключить процедуру аутентификации, но в этом случае доступ к виртуалке получит любой желающий. Вместо этого можно выбрать авторизацию через аккаунты хостовой системы или учетные записи гостевой системы. Для того, чтобы данные было невозможно отснифать, любая RPD-сессия шифруется с помощью симметричного RC4 алгоритма с 128-битным ключом, который меняется каждые 4096 отправленных пакетов.

Трик 2. Устанавливаем веб-морду

Чтобы иметь доступ к виртуальным машинам извне, на домашнем роутере мне приходится пробрасывать порты для каждой из них.
Все хорошо ровно до того момента, пока не окажешься в сети, где админ режет весь подозрительный (с его точки зрения) трафик, и попытки подключения по RDP летят в тартарары. К счастью, старый добрый протокол HTTP разрешен везде, и этим фактом нельзя не воспользоваться. Мы уже когда-то рассказывали о веб-интерфейсе для управления виртуальной машиной с помощью VirtualBox Web Console (code.google.com/p/vboxweb). Ныне этот проект не развивается и не поддерживается, но зато он был взят за основу актуального решения phpVirtualBox (code.google.com/p/phpvirtualbox). По сути, это точная копия интерфейса десктопной версии VirtualBox, но реализованная на PHP и AJAX. Получается, что из любого места, имея под рукой лишь браузер, можно обратиться к серверу с установленным phpVirtualBox и получить доступ к свои виртуальным машинам. Блеск.

1. Для работы phpVirtualBox необходим запущенный на хостовой машине демон vboxwebsrv (он распространяется вместе с VirtualBox). На никсовых машинах он, как правило, располагается в папке /usr/bin. Под виндой он находится в папке с VirtualBox, то есть, скорее всего, в C:Program FilesOracleVirtualBox. Важный момент: программа должна быть запущена под тем же пользователем, что и сам VirtualBox. Лучше всего отключить весь вывод программы, в противном случае будет сильно страдать производительность.

"C:Program FilesOracleVirtualBoxvboxwebsrv.exe"
>nul

2. Далее нам понадобится любой работающий веб-сервер с PHPинтерпретатором. Чтобы не париться с настройкой, можно взять готовую сборку XAMP или XAMPPLite (www.apachefriends.org). Файлы из архива phpVirtualBox необходимо разместить в папке htdocs.

3. В завершение необходимо прописать некоторые настройки VirtualBox’а в файле config.php, назначив новые значения для переменных $username, $password, $location. Все. После этого можно попробовать открыть админку (http:// : ) и убедиться, насколько все здорово работает. На сайте VirtualBox можно скачать SDK разработчика, в котором помимо прочего находятся исходники RDP-клиента, реализованного на Flash’е. Технология называется RDP Web Control и позволяет прямо из вкладки браузера управлять виртуальной машиной так же, как через любой RDP-клиент. Разработчики phpVirtualBox, само собой, встроили RDP Web Control в свою оболочку. Так что через веб-оболочку доступно не только управление настройками виртуальных машин, но и полноценная работа с ними. Это очень круто!

Трик 3. Управляем ВМ через консоль!

Но удаленный доступ — это не все, что нужно для эффективного использования виртуальных машин. Еще одна важная часть — возможность автоматизации. К счастью, в VirtualBox никто не обязывает тебя использовать GUI-интерфейс. Любые действия можно выполнить через консольную утилиту администрирования VBoxManage.exe и использовать ее в любых своих сценариях. Можешь попробовать ввести команду «VBoxManage list vms» — получишь в консоли список всех существующих виртуальных машин, их имена и идентификаторы UUID:

Хочешь запустить одну из них прямо из консоли? Ничего сложного: отдаем соответствующую команду, указав имя нужной виртуалки — «VBoxManage.exe startvm xp». Верный способ получить справку о том, какие команды доступны, и как их использовать — запустить приложение без параметров. Разработчики гарантируют, что консольная версия ничем не уступает GUI-оболочке, и любые действия с виртуальными машинами можно с не меньшим успехом выполнить через VBoxManage. Выше я упоминал SDK для разработчиков, который обновляется с каждой новой версией VirtualBox и выкладывается на официальном сайте.

Программа предоставляет мощнейший API для управления виртуальными машинами. Система встроенных вызовов такова, что использовать ее можно из самых разных языков программирования: существуют привязки (то есть специальные модули) для Java, Python и других языков. В качестве хорошего примера для старта можно взять из SDK vboxshell.py, в котором через API реализовано несколько полезных опций для управления виртуалками. В том числе запуск программы внутри гостевой ОС, создание скриншота с дисплея виртуальной машины, подключение ISO-образа в качестве CD/DVD-диска, проброс портов из хостовой машины в гостевую ОС и т.д. В прошлом году у нас был материал «Прокачиваем виртуальную машину», где мы уже рассматривали API VirtualBox’а. Тогда из-за отсутствия вызовов для управления поведением гостевой системы (например, запуска приложений) нам пришлось использовать API VMware с более продвинутыми возможностями. Сейчас же API VirtualBox сделала два шага вперед, и мы вполне могли обойтись без использования платной VMware.

Трик 4. Снифаем весь трафик виртуальной машины

Недаром во время установки VirtualBox под винду выводятся предупреждения, что все сетевые подключения будут на небольшое количество времени отключены. Программа устанавливает в систему дополнительные сетевые драйвера и виртуальные сетевые адаптеры. Их можно найти через диспетчер устройств: «VirtualBox Host-Only Ethernet Adapter» — то, о чем я говорю. Весь трафик гостевой системы, конечно же, проходит через эти вспомогательные элементы. И вот за что разработчикам хочется в очередной раз сказать «Спасибо», так это за возможность записать весь трафик напрямую в pcap-файл. Да, для перехвата пакетов можно было воспользоваться и обычным сниффером (причем как под гостевой, так и под хостовой системой), но используя эту встроенную возможность VirtualBox, ты получаешь в распоряжение лог абсолютно всех пакетов, который отправила или получила гостевая ОС. Для включения записи сетевого трафика достаточно двух команд:

VBoxManage modifyvm [your-vm] —nictrace[adapternumber]
on —nictracefile[adapter-number] file.pcap
VirtualBox -startvm [your-vm]
Например, так:
VBoxManage modifyvm "ubuntu" —nictrace1 on
—nictracefile1 file.pcap
VirtualBox -startvm "ubuntu"

В результате в файле file.pcap будет полный дамп трафика, который можно изучить с помощью любого анализатора, например, Wireshark. Важно после всех экспериментов не забыть отключить логирование, иначе pcap-файлы будут разрастаться на диске (особенно если ты решишь скачать под гостевой ОС какие-то тяжелые файлы).

Трик 5. Переносим существующую Windows-систему в виртуальное окружение

Под виртуальной машиной не всегда удобно устанавливать систему с нуля. Избежать геморроя с установкой и настройкой дополнительного софта можно, если перенести под VirtualBox свою существующую систему. Этот процесс называется миграцией, или P2V (Physical-to-Virtual). В отличие от Linux’а, перенести Windows с одного железа на другое — не такая простая задача. Виной тому ядро и драйверы, которые сильно завязаны на текущее оборудование. Каждый, наверное, сталкивался с ситуацией, когда после подключения системного диска с виндой к другому компьютеру система вместо нормального запуска вываливалась в BSOD. В случае с миграцией на виртуальную машину — ровно такая же ситуация. Разработчики VirtualBox не предлагают специальной утилиты для P2V-миграции, но процесс можно проделать вручную. Итак, пошаговая инструкция:

1. Первым делом понадобится вспомогательная тулза MergeIDE (http://bit.ly/Merge_IDE). По какой-то странной причине Windows запоминает, на каком IDE/ATA-контроллере она была установлена, и вылетает, если контроллер меняется (а под виртуальной машиной он, само собой, будет другим). Проблему можно исправить, поковырявшись в реестре, но чтобы не заниматься этим вручную, достаточно просто запустить BAT-файл MergeIDE.

2. Выключаем компьютер. Теперь наша задача — сделать полный образ жесткого диска. Как вариант — можно загрузиться с LiveCDдистрибутива и воспользоваться любой низкоуровневой утилитой для работы с образами. Идеально подойдет dd.

3. Полученный образ необходимо преобразовать в VDI-образ, который далее мы сможем подключить к VirtualBox. Воспользуемся уже знакомой нам программой VBoxManage:

VBoxManage convertfromraw ImageFile.dd OutputFile.vdi

Все, этот образ можно и нужно подключить к VirtualBox’у с помощью менеджера виртуальных носителей (вызывается хоткеем ).

4. Теперь необходимо создать виртуальную машину и подготовить ее к имплантации сложного пациента :). В качестве диска необходимо выбрать только что созданный VDI-образ. Еще один обязательный момент — активация в настройках виртуалки опции «Включить IO APIC».

5. Пробуем загрузить систему. Здесь два варианта: либо все сразу заработает, либо система сразу уйдет в BSOD. Если все пошло по удачному сценарию, можно смело устанавливать Guest Editions и приступать к работе.

6. В противном случае необходимо выключить виртуалку и загружаться с установочного диска Windows. Проходим до места, где указывается раздел для установки, и выбираем вместо полной инсталляции пункт «repair». Установщик сам доставит все необходимые файлы и отконфигурирует винду под новое железо.

Трик 6. Подготовка DualBoot

Но если реальную систему можно подогнать под работу в виртуальном окружении, не получится ли создать универсальный вариант? Чтобы система могла грузиться сама по себе, а в случае необходимости — под виртуальной машиной. Возможно ли такое? Да! Правда, для этого виртуалке необходим доступ «наружу», то есть напрямую к жестким дискам компьютера. В VirtualBox такая возможность называется «raw hard disk access» и предлагается разработчиками с массой предупреждений о том, что это верный способ убить систему. И, кстати, они не шутят :). Еще бы, ведь нарушается целостность понятия изолированной виртуальной системы — она получает доступ вовне. И всетаки, как включить raw hard disk access?

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

VBoxManage internalcommands createrawvmdk
-filename /path/to/file.vmdk -rawdisk \.
PhysicalDrive0 -register

Это пример для винды. Под линуксом путь к физическому диску, конечно же, будет другим, например, /dev/sda. Создание образа предполагает, что у тебя есть доступ для записи и чтения с указанного девайса. Те же права потребуются для обращения к файлам из виртуальной машины. После создания VMDK-файла остается подключить его к виртуальной машине:

VBoxManage storageattach WindowsXP
—storagectl "IDE Controller" —port 0
—device 0 —type hdd —medium /path/to/
file.vmdk

Если все сделано правильно, виртуальная машина будет грузиться с указанного физического диска. Но это лишь часть работы. Чтобы система работала и под виртуальной машиной, и без нее, придется немного поковыряться. Подробнейшие пошаговые инструкции доступны на форуме VirtualBox: для Windows XP (http://bit.ly/dualbox_xp) и Windows 7 (http://bit.ly/dualboot_w7). Повторяться не будем.

Трик 7. Wi-Fi и вардрайвинг под виртуальной машиной

Используя виртуальную машину, на которой установлен Linux, я не раз сталкивался с ограничениями из-за отсутствия прямого доступа к Wi-Fi-адаптору. Да, сделать инет в гостевой системе через хостовую ОС — не проблема, но использовать беспроводной адаптер со специальными приложениями просто не выйдет.

Поэтому всякий раз, когда была необходимость поэкспериментировать с беспроводными сетями с помощью aircrack’а и kismeta, чтобы послушать эфир или оценить защиту хотспота, приходилось запускать линукс с загрузочной флешки. Проблема эта, как оказалось, легко решаема благодаря возможности VirtualBox обращаться к USB-устройствам напрямую. Другими словами, можно купить за $20 USB’шный Wi-Fi-адаптер (причем сразу на правильном чипсете и с возможностью использовать внешнюю антенну) и сделать так, чтобы гостевая система думала, что он подключен к ней. Конечно, после подключения устройства к компьютеру/ноутбуку девайс определяется и устанавливается в основной системе (в моем случае — Windows). Но если зайти в свойства виртуальной машины и найти там раздел USB, то любое из устройств можно «примонтировать» к гостевой ОС. Для этого нажимаем на кнопку «Добавить новый фильтр» и из контекстного меню выбираем наш USB’шный адаптер. Все, устройство отключится от хостовой ОС и станет доступным в виртуальной машине. Пробуем запустить под Backtrack’ом aircrack и убеждаемся, что все работает. Наконец-то все это стало возможным без перезагрузки в Linux.

Моя фамилия Бубнов. А блог про админство, шаманство и прочие радости

27.10.2011

VRDP в VirtualBox

В VirtualBox’е есть фича: можно подключаться к рабочему столу гостевой системы, не настраивая этот доступ на самом госте (даже не имея сети на нем). Фича довольно полезная, поэтому после установки гостевых машин захотелось её включить. Всё оказалось не так просто.

Итак, хост — Ubuntu 11.10, VirtualBox 4.1.2, гостевые системы — неважно (у меня Win7 x64 + Zentyal x64). Настроена сеть: по 2 адаптера на каждом госте (NAT + Bridge). Хотя всё вышеперечисленное неважно.
Удаленное управление работает по протоколу VRDP. Т.е. никаких требований к ОС хоста и гостя нет. Сети гостя тоже не имеют значения (её может и не быть). Главное, чтобы была сеть на хостовой ОС, и нужные порты не были заблочены фаерволом.
Для включения "удаленного дисплея" требуется установить плагин для VirtualBox’а — VirtualBox Extension Pack . Качаем его, и устанавливаем, через меню Файл — Свойства — Плагины. Затем, в настройках VirtualBox для нужной виртуальной машины в меню дисплей устанавливаем галочку во вкладке удаленный дисплей, выбираем нужный метод авторизации (гостевую использовать не рекомендуется. У меня стоит "без авторизации"). И в меню устройства нужной гостевой системы ставим галку удаленный дисплей. Возможно, ещё потребуется поставить пакет дополнений для гостевой системы. Это образ диска, который качается с серверов Oracle и ставится на гостя. Хотя у меня заработало без него.
Порты ниже 1024 прописывать не рекомендуется, если это критично, то для доступа к ним требуются права root’а.

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

В этой инструкции мы рассмотрим как выполняется настройка сети VirtualBox различными способами. Вы узнаете как объединить машины в одну локальную сеть, как дать им доступ к интернету и как связать их с основной системой. Но сначала поговорим о том, как может работать сеть.

Виды сетевых адаптеров VirtualBox

Существует несколько способов как настроить сеть в virtualbox, и каждый из них подходит для лучше для решения одной задачи и меньше для другой. Рассмотрим основные:

  • NAT — этот способ используется по умолчанию. Для каждой машины создается отдельная внутренняя локальная сеть, в которой машина получает ip 10.10.0.1. Машина может связаться с интернетом, используя технологию NAT, и вы можете обратиться к машине, используя проброс портов VirtualBox, но если у вас будет две виртуальные машины, то вы уже не сможете между ними так взаимодействовать. И если из основной системы к гостевой можно обратиться, то к основной ни гостевой уже никак не получится;
  • Виртуальный адаптер хоста — создается виртуальный сетевой адаптер, к которому можно подключить несколько виртуальных машин, тем самым объединив их в локальную сеть. Доступа к интернету нет, но зато машины находятся в одной сети и каждая имеет свой ip адрес, теперь они могут взаимодействовать между собой. Основная система тоже доступна по ip 192.168.56.1. Машины доступны не только между собой, но и из основной системы;
  • Сетевой мост — при таком подключении виртуальная машина становится полноценным членом локальной сети, к которой подключена основная система. Машина использует сетевой интерфейс чтобы получить адрес у роутера и становится доступна для других устройств, как и основной компьютер по своему ip адресу.
  • Внутренняя сеть — почти то же самое, что и виртуальный адаптер хоста, только без возможности доступа к виртуальной сети из основной системы, доступа к интернету нет.
  • Универсальный драйвер — позволяет использовать драйвер из расширений VirtualBox для связи между машинами, расположенными на разных физических хостах.

Теперь рассмотрим каждый вариант настройки более подробно.

Настройка сети Virtualbox

1. Настройка сети NAT

Здесь почти нет о чем говорить. Получение доступа к сети через NAT включено по умолчанию. Проброс портов я рассматривал в отдельной статье. Но если вы раньше отключали сетевые адаптеры, то чтобы включить NAT обратно достаточно открыть настройки нужной машины:

Перейти на вкладку "Сеть":

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

На вкладке "Дополнительно" вы можете настроить марку устройства адаптера и MAC адрес:

Если вы собираетесь устанавливать туда в Windows, то лучше будет работать Intel PRO/1000 MT Desktop, а для Linux можно оставить AMD PCNet FAST III, так как он поддерживается всеми операционными системами.

2. Настройка сети NAT

В версии Virtualbox, начиная с 4.3 была добавлена поддержка сетей NAT, это работает очень похоже на виртуальный адаптер хоста, все машины, подключенные к одной сети могут получить доступ друг к другу, а доступ в интернет выполняется через NAT, но основная система доступа к гостевым не имеет. Чтобы настроить такое подключение нужно сначала создать сеть NAT. Для этого откройте "Файл" -> "Настройки", "Сеть". Здесь перейдите на вкладку "Сети NAT". Дальше нажмите кнопку с зеленым плюсом, чтобы создать новую сеть:

Нажмите "Ok" и закройте это окно. Дальше откройте настройки для виртуальной машины, перейдите на вкладку "Сеть" -> "Адаптер 1":

Выберите "Тип подключения""Сеть NAT", а "Имя" — только что созданную сеть.

Теперь все машины, подключенные к этой сети, будут доступны друг другу, как в VMWare.

3. Настройка адаптера виртуального хоста

Теперь задача немного интереснее — нам нужна локальная сеть virtualbox между несколькими виртуальными машинами и хостом. Для того чтобы все это заработало в Linux, нам нужно чтобы были загружены модули ядра vboxnetadp и vboxnetflt:

lsmod | grep vbox

Возможно, для их правильной работы вам придется установить пакет net-tools. Дальше нужно создать сам виртуальный адаптер. Для этого откройте меню "Файл", затем "Настройки" -> "Сеть". Затем нажмите кнопку с зеленым значком плюс, а затем "Ok", все параметры можно оставить по умолчанию. В VirtualBox 5.2 и выше интерфейс был изменен. Теперь вам нужно открыть меню "Инструменты" -> "Менеджер сетей хоста":

Нажмите кнопку "Создать", затем, в появившемся адаптере, напротив пункта DHCP установите галочку "Включен".

Теперь вернитесь к списку виртуальных машин, зайдите в настройки машины, "Сеть":

Выберите "Тип подключения""Виртуальный адаптер хоста", а имя vboxnet0, тот, который вы создали раньше.

Для всех машин, которые вы хотите объединить в одну сеть нужно выбирать один и тот же адаптер хоста. Если вы захотите добавить машинам также доступ в интернет, просто перейдите на вкладку "Адаптер 2", включите его и настройте NAT, как описано в первом пункте.

4. Настройка сетевого моста VirtualBox

Режим сетевого моста позволяет виртуальной машине выступать в роли реального сетевого устройства с отдельным ip адресом. Чтобы это настроить откройте это же меню — настойки виртуальной машины, затем "Сеть". Здесь выберите "Тип подключения""Сетевой мост":

В поле "Имя" вам необходимо выбрать сетевой интерфейс, который будет использоваться для связи с внешним миром. Минус такого способа в том, что внешние компьютеры смогут получить доступ к виртуальной машине, а это не очень хорошо с точки зрения безопасности.

5. Внутренняя сеть VirtualBox

Режим внутренняя сеть Virtualbox похож на "Виртуальный адаптер хоста", за тем лишь исключением, что из хостовой системы доступа к гостевым не будет, и настроить все немного проще. Достаточно выбрать "Тип подключения""внутренняя сеть", а затем просто выбрать нужную сеть в поле "Имя", или создать новую, просто изменив имя текущей.

Как видите, существует тип подключения NAT — где только интернет, Мост — где машина становится членом внешней сети, а все остальные — это настройка виртуальной сети virtualbox, где машины могут видеть друг друга.

Выводы

В этой небольшой статье мы рассмотрели как выполняется настройка сети VirtualBox, как видите, это не так уж сложно, как может показаться на первый взгляд, несмотря на операционную систему, которую вы используете. В большинстве случаев достаточно сети NAT, но иногда может понадобиться виртуальный адаптер хоста, все же остальные режимы используются намного реже.

Ссылка на основную публикацию
Удаленная игра на ps4
Использование приложения (Дистанционное воспроизведение PS4) для управления системой PlayStation®4 с компьютера. При установке этого приложения на ПК или Mac можно...
Телефоны на базе snapdragon
Полный список смартфонов, работающих на процессоре Qualcomm Snapdragon 855. Вы можете изучить характеристики смартфонов, узнать лучшие цены и где купить...
Телефоны поддерживающие оплату nfc
Технология NFC базируется на принципе беспроводной высокочастотной связи малого радиуса действия. Она позволяет осуществлять объем данными между устройствами с максимальным...
Удаленное подключение к virtualbox
Содержание статьи Если хоть раз попробуешь установить Linux под VirtualBox’ом, может сложиться впечатление, что это очень простой инструмент. Интерфейс виртуальной...