Настроить сеть виртуальной машины virtualbox. Настройка сети на платформе виртуализации Oracle VM VirtualBox. Нюансы сетевых настроек

Правильная настройка сети в виртуальной машине VirtualBox позволяет связать хостовую операционную систему с гостевой для наилучшего взаимодействия последних.

В данной статье настроим сеть на виртуальной машине под управлением Windows 7.

Настройка VirtualBox начинается с установки глобальных параметров.

Перейдем в меню «Файл – Настройки» .

Затем откроем вкладку «Сеть» и «Виртуальные сети хоста» . Здесь выбираем адаптер и нажимаем кнопку настройки.

Сперва устанавливаем значения IPv4 адреса и соответствующей маски сети (см. скриншот выше).

После этого переходим на следующую вкладку и активируем DHCP сервер (вне зависимости от того, статический или динамический вам присвоен IP-адрес).

Следует задавать значение адреса сервера, соответствующее адресам физических адаптеров. Значения «Границ» обязаны охватывать все использующиеся в ОС адреса.

Теперь о настройках ВМ. Заходим в «Настройки» , раздел «Сеть» .

В качестве типа подключения устанавливаем подходящий вариант. Рассмотрим эти варианты подробнее.

1. Если адаптер «Не подключен» , VB сообщит пользоваелю о том, что он имеется, однако подключения нет (можно сравнить с тем случаем, когда Ethernet-кабель не подключен в порт). Выбор этого параметра может симулировать отсутствие подключения кабеля к виртуальной сетевой карте. Таким образом, можно информировать гостевую операционную систему о том, что соединения с интернетом нет, однако его можно настроить.

2. При выборе режима «NAT» гостевая ОС сможет выходить в интернет; в этом режиме происходит перенаправление пакетов. Если необходимо из гостевой системы открывать веб-страницы, читать почту и скачивать контент, то это подходящий вариант.

3. Параметр «Сетевой мост» позволяет осуществлять больше действий в интернете. К примеру, сюда входит моделирование сетей и активных серверов в виртуальной системе. При выборе этого режима VB осуществит подключение к одной из доступных сетевых карт и начнет прямую работу с пакетами. Сетевой стек хост-системы не будет задействован.

4. Режим «Внутренняя сеть» применяется для организации виртуальной сети, к которой можно получить доступ из ВМ. Эта сеть не имеет отношения к программам, запущенным на главной системе, или сетевому оборудованию.

5. Параметр «Виртуальный адаптер хоста» используется для организации сетей из главной ОС и нескольких ВМ без задействования реального сетевого интерфейса основной ОС. В главной ОС организуется виртуальный интерфейс, посредством которого устанавливается подключение между ней и ВМ.

6. Реже остальных используется «Универсальный драйвер» . Здесь пользователь обретает возможность выбрать драйвер, входящий в VB либо в расширения.

Выберем Сетевой мост и назначим для него адаптер.

После этого осуществим запуск ВМ, откроем сетевые подключения и зайдем в «Свойства».





Следует выбрать протокол интернета TCP/IPv4 . Жмем «Свойства» .

Теперь нужно прописать параметры IP-адреса и т.д. Адрес реального адаптера выставляем в качестве шлюза, а в качестве IP-адреса может быть значение, следующее за адресом шлюза.

После этого подтверждаем свой выбор и закрываем окно.

Настройка Сетевого моста завершена, и теперь можно выходить в интернет и взаимодействовать с хостовой машиной.

Все началось с того, что мне понадобилось запустить Wordpress в песочнице. Самым простым было создание виртуального Ubuntu 11.10 сервера в качестве гостевой системы внутри VirtualBox хоста. Затем я понял, что знаю о сетях гораздо меньше, чем я думал; тематика полная пакетов, свитчей и роутинга. Еще меньше я знал о сетях в VirtualBox, где все виртуализовано программно. Несколько попыток и ускоренный курс сетей чуть позже, миссия выполнена, чтобы уберечь вас от моих ошибок, и вот, что я обнаружил.

Настройки сети в VirtualBox

Установим любую версию VB, начиная с версии 3.0, и увидим, что окно настроек выглядит примерно одинаково.

Для любой из своих виртуальных машин нажимаем Настройки > Сеть. Это дефолтный вид.

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

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

Для моего виртуального веб-сервера, на котором запущен Wordpress, все немного сложнее, поэтому приступим… Тип адаптера (Adapter type) определяет тип виртуального оборудования доступного вашей виртуальной машине (VM). VB постарается сделать так, чтобы выбранный вами виртуальный адаптер хорошо работал с любой физической сетевой картой, которая стоит у вас на хост машине. Откроем меню Advanced и увидим дополнительные опции. Я пройду по настройкам намеренно не по порядку, начиная с Adapter Type.

Adapter Type : VB постарается эмулировать некоторые распространенные типы сетевых карт, для которых у него есть драйверы и протоколы. PCnet-FAST III стоит по умолчанию, хотя я всегда выбираю Intel PRO/1000MT адаптеры, если ищу хорошей совместимости с аппаратным обеспечением Intel. Есть две серверные версии с большой пропускной способностью, если вы собираетесь запустить свою VM в производственной среде. Владельцам десктопов не стоит беспокоиться об этом. Если у вас проблемы с одним адаптером, попробуйте другой, включая PCnet-FAST II для старых машин.

Mode : довольно колоритно звучащий «Promiscuous mode» должен управлять поведением виртуального маршрутизатора, используемого Внутренней Сетью; Сетевым мостом (Bridged) и Виртуальным адаптером хоста (Host Only). Вы можете заставить сетевой порт VM принимать трафик, направленный другим виртуальным машинам, или, даже хосту, дополнительно к трафику направленному на эту виртуальную машину. Promiscuous mode - это та штука, которую 99% пользователей не нужно трогать, и существует для того, чтобы диагностировать причины возникновения некоторых сетевых проблем.

MAC Address : сокращение от Media Access Control, MAC-адрес это аппаратный адрес, который является уникальным идентификатором каждого сетевого ресурса или нода сети. Это уникальный идентификационный номер, который обычно жестко прописан в физическом сетевом адаптере. VirtualBox генерирует MAC-адреса сетевых карт виртуальных машин.

Есть небольшая кнопка справа, которая генерирует новый MAC-адрес; если вы скопируете виртуальную машину, ей нужен будет свой уникальный MAC-адрес для работы в вашей виртуальной сети наряду с оригиналом.

Чекбокс «Кабель подключен» (Cable connected) делает тоже самое, что и физическое подключение или отключение кабеля. Эта опция подключает виртуальный адаптер к виртуальной сети. Он отличается от самой верхней опции «Включить сетевой адаптер» (Enable network adapter), которая позволяет установить или извлечь сетевой адаптер из машины.

Наконец кнопка «Проброс портов» (Port forwarding) открывает другой диалог, позволяющий определить правила перенаправления трафика для адаптера; как трафик определенного типа перенаправляется между хостом и гостевой машиной. Это применимо лишь к нескольким типам подключения, которые будут рассмотрены ниже. Тип подключения определяется опцией «Тип подключения» (Connection type) (с дополнительной опцией «Имя»), которая является краеугольным камнем работы с сетью в VirtualBox и которая создала мне множество проблем в начале моего эксперимента.

«Здесь обитают драконы»

Существует четыре типа подключений и множество возможных комбинаций настроек. Это как раз то место, где сетевые настройки VirtualBox могут показаться средневековым волшебством. Следовать правильному варианту для достижения вашей цели — легко. Можно найти даже несколько решений для достижения одной и той же цели.

Типы подключения

- NAT Network Adress Translation
- Сетевой мост (Bridged)
- Виртуальный адаптер хоста (Host Only)
- Внутренняя сеть (Internal Network)

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

Network Adress Translation NAT

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

Когда гостевая машина посылает IP пакет на удаленную машину, сервис NAT VirtualBox перехватывает этот пакет, извлекает из него TCP/IP сегменты, меняет IP адрес на IP адрес машины-хоста и отправляет его. Внешний мир видит лишь IP хост-машины. Хост-машина получает ответ и перенаправляет его гостевой машине.

Например, в вашей домашней сети ваши хост и другие физические машины, обычно имеют адреса начинающиеся с 192.168.x.x. В VirtualBox NAT адаптерах адреса начинаются с 10.0.2.1, и далее до 10.0.2.24 в так называемой подсети. Обычно она не соединена с основной сетью, следовательно в подсеть нельзя попасть с хост-машины. Ваша гостевая машина может выходить в Интернет за обновлениями, веб-серфингом, но невидима для остальной вашей сети.

Руководство к VirtualBox более прозрачно:

«В режиме NAT гостевым сетевым интерфейсам назначаются IP адреса из диапазона 10.0.x.0/24 по умолчанию, где x отвечает за экземпляр NAT интерфейса +2. Поэтому x=2 когда активен только один экземпляр NAT. В этом случае гостю назначается адрес 10.0.2.15, гейту — 10.0.2.2, а сервер имен можно найти на 10.0.2.3.» (Oracle Corporation, 2012, Chapter 9)

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

Сетевой мост (Bridged Adapter)

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

Сетевой мост соединяется через хост-систему с вашим сетевым устройством, которому назначен IP адрес вашей физической сети. VirtualBox подключается к одной из установленных у вас сетевых карт и обменивается пакетами напрямую; он соединяет физическую и виртуальную сети. В нормальных условиях он будет пытаться получить стандартный 192.168.x.x IP адрес от вашего маршрутизатора, так что ваша виртуальная машина будет выглядеть как физическое устройство наряду с другими устройствами в вашей сети.

У вас может быть более одного активного сетевого устройства на вашем хосте одновременно; например, у моего ноутбука есть ethernet разъем сетевой карты (называемый eth0) и беспроводной адаптер (называемый wlan0). Опция «Имя» позволяет выбрать, какой из них вы будете связывать мостом с VirtualBox.

В моем случае я использую беспроводной адаптер wlan0, потому что он подключен к маршрутизатору, в то время как у eth0 даже не подключен сетевой кабель.

Итак, мой хост подключается под адресом 192.168.0.2, который ему выдал маршрутизатор. Моя виртуальная машина, связанная сетевым мостом, появляется и требует свой IP адрес, на что маршрутизатор выдает ей 192.168.2.6, не зная и не заботясь о том, что VirtualBox ведет трафик через адаптер хост-машины. Моя виртуальная машина становится просто еще одним устройством в сети. Если считать хост-машину и три виртуальных машины, связанных сетевым мостом, то в моей физической сети будет четыре машины.

Идем сюда, тут еще…

NAT полезен, потому что защищает гостевые системы от Интернет, но в случае, когда к ним надо получить доступ с хост-машины, нам нужно настроить перенаправление портов (у меня есть сервера на некоторых моих гостевых машинах). Сетевой мост предоставляет доступ, но делает гостевые машины открытыми.

Если ваш маршрутизатор, коммутатор или провайдер не выделяют вам больше одного IP адреса, то, скорее всего, вы не сможете использовать сетевой мост.

Виртуальный адаптер хоста (Host-only Adapter)

Под виртуальным адаптером хоста виртуальные машины могут общаться между собой и с хост-машиной, но не с внешним миром. Виртуальный адаптер хоста использует свое обособленное сетевое устройство, называемое vboxnet0, для того чтобы установить подсеть и назначить IP адреса гостевым машинам. Гостевые машины не могут общаться с внешним миром, так как они не подключены через физический сетевой интерфейс. Виртуальный адаптер хоста предоставляет ограниченные сервисы, полезные для создания локальной сети под VirtualBox хостом для гостей.

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

У вашего хоста свой сетевой адрес, тот, который он использует для выхода в Интернет, — обычно 192.168.0.101. Под виртуальным адаптером хоста хост-машина становится маршрутизатором с IP адресом по умолчанию 192.168.56.1. Хост создает внутреннюю локальную сеть, обеспечивающую всем гостевым машинам, настроенным на виртуальный адаптер хоста, видимость в локальной сети. Адаптер vboxnet0 начинает использовать адреса с 192.168.56.101 и далее, но вы можете это изменить в настройках.

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

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

Поэтому виртуальный адаптер хоста не предоставляет гостевым машинам доступ в Интернет; у vboxnet0 нет гейта, так что хотя добавление vboxnet0 здорово упрощает сетевое общение хоста и гостей, у вас не будет внешнего доступа или проброски портов, так что вам по-прежнему нужен будет еще один адаптер NAT или сетевой мост, подключенный к вашим гостевым машинам, для получения полного доступа.

Внутренняя сеть (Internal network)

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

Внутренняя сеть создает, согласно руководству по VirtualBox, «программную сеть, которая видна для выбранных машин, но не для приложений, запущенных на хосте или в окружающей среде». Это дает нам сеть, в которой есть хост и виртуальные машины, но ни одна из них не использует физические адаптеры — они полностью виртуальные, и VirtualBox работает виртуальным коммутатором. Вы получаете полностью приватную ЛВС для своих гостевых машин, без доступа из вне, что делает ее очень защищенной. Возможные варианты использования — работа сверх-секретных серверов разработки и клиентов, проведение тестирования на проникновение, или наоборот создание безопасной интрасети для команды или организации. Это идеальный вариант закрытия пространства от неавторизованной установки приложений, скачивания, загрузок и зависания в Фэйсбуке в течении рабочего дня.

Теперь мы видим, что различные типы сетей подходят для различных целей. Что и приводит меня к тому с чего я начал - созданию виртуального сервера для разработки под Wordpress и тестирования.

Гостевой доступ в Интернет

Для начала моей гостевой машине нужен доступ в Интернет для установки обновлений, скачивания пакетов и все такое. Мне нужен доступ к ней с моей хост-машины, но я не хочу, чтобы мой сервер был доступен еще откуда-то из сети.

Отыскав мою машину в менеджере VirtualBox, я выбираю Настройки > Сеть.

Я начинаю со стандартного NAT. Он позволяет гостевой машине получить доступ в Интернет через подключение моего хоста. Гостевая машина не видна из моей сети; я также не могу получить доступ к ресурсам гостевой машины с хост-машины, как и другие гостевые машины.

Настройка виртуального адаптера хоста в менеджере VirtualBox

Простой способ — использовать стандартный виртуальный адаптер хоста, предоставляемый VirtualBox, тот что назван vboxnet0, но вы можете добавить и другие, если хотите использовать несколько отдельных сетей. Если в основном окне VirtualBox вы перейдете Файл > Настройки > Сеть, то сможете настроить vboxnet0 или добавить другие адаптеры.

Чтобы увидеть стандартные настройки, нажмите кнопку редактирования - это кнопка с иконкой отвертки и подписью «Редактировать виртуальную сеть хоста». IP адрес 192.168.56.1 это адрес, по которому гости могут получить доступ к хосту. Я оставил эту настройку как есть.

По умолчанию, у vboxnet0 есть DHCP сервер, настроенный на автоматическую выдачу IP адресов на основе сессий. Я хочу, чтобы мой виртуальный Wordpress сервер сохранял статический IP адрес, поэтому на вкладке DHCP я снимаю галку «Включить сервер».

Добавляем виртуальный адаптер хоста гостевой машине

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

На вкладке «Адаптер 2» моей гостевой машины я устанавливаю «Тип подключения» виртуальный адаптер хоста и стандартное имя vboxnet0. Promiscuous mode не важен, но мне необходима включенная опция «Кабель подключен».

Конфигурирование гостевой машины

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

ifconfig eth1 192.168.56.101 netmask 255.255.255.0 up

Это установит IP адрес для гостя и поднимет сетевой интерфейс. Он использует 192 — префикс домашних сетей, .168 — в качестве начала ID хоста, .56 — диапазон сети виртуального адаптера хоста и последний идентификатор, любой больше.1 (мой хост) в моей сети виртуального адаптера хоста. Адаптер NAT находится на eth0, поэтому виртуальный адаптер хоста связан с eth1. Теперь я могу использовать SSH или зайти на гостевую машину с хоста, используя IP адрес.

Порт во время шторма?

Специалисты по сетям уже увидели альтернативный способ добраться до моего виртуального сервера.

Используя NAT адаптер, я могу поработать с конфигурацией, чтобы получить доступ к моему виртуальному серверу с хоста, не используя виртуальный адаптер хоста.

Я могу настроить проброс портов в VirtualBox, используя панель настройки гостевого сетевого адаптера. Переключаемся на NAT адаптер, большая кнопка внизу «Проброс портов». Она открывает окно конфигурации, где я могу настроить проброс портов для данного адаптера именно этой гостевой машины.

Мне нужны два правила; одно для доступа к Apache веб-серверу на моем госте, другое для работы с TCP трафиком (в основном http запросы).

Для простоты я назвал их Apache и TCP, и оба они используют протокол TCP. Если вернуться к привычным номерам портов, то 8888 на хосте перебрасывается на 80 гостевой машины, затем 2222 на хосте на порт 22 гостевой машины; это открывает особый доступ на гостевую машину для сервисных запросов. Все остальные запросы будут отвергнуты VirtualBox так как не будет найден путь.

Это также означает, что все другие гости, которых я запущу, не смогут получить доступ к этому виртуальному серверу, так как под NAT нет сетевого пути.

Виртуальные машины 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 похож на "Виртуальный адаптер хоста" , за тем лишь исключением, что из хостовой системы доступа к гостевым не будет, и настроить все немного проще. Достаточно выбрать "Тип подключения" - "внутренняя сеть" , а затем просто выбрать нужную сеть в поле "Имя" , или создать новую, просто изменив имя текущей.

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

Первый шаг — настройка сети в virtualbox. Виртуальная машина должна быть выключена. Идем в «Настройки -> Сеть», выбираем неиспользуемый адаптер, включаем его и выбираем тип подключения — «виртуальный адаптер хоста»:

В windows сеть можно проверить командой «ipconfig»:

На ОС Linux из терминала сеть можно проверить так:

Ifconfig

В ответ вы должны увидеть работающие сетевые интерфейсы:

По ip можно догадаться, какой интерфейс отвечает за организацию локальной сети между компьютером и виртуальной машиной, по умолчанию (если вы сами не настраивали ip в virtualbox) такой ip должен выглядеть так: 192.168.56.* (вместо * обычно бывает 101 или 102 и т. д.).

Этот ip и нужно использовать для доступа к виртуальной машине.

По умолчанию ip выдается dhcp сервером virtualbox. Для удобства можно задать статический ip адрес в самой виртуальной машине. Например в windows это делается редактированием свойств сети. В интерфейсе linux все аналогично, а вот как это сделать в терминале, без графической оболочки, будет показано ниже, на примере добавления нового сетевого интерфейса в ubuntu server.

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

Сначала нужно найти название сетевого интерфейса, который нам нужен. В терминале набираем:

В результате вы получите список всех сетевых интерфейсов.

Находим нужный интерфейс, он чаще всего последний. Возможно скорее всего это либо eth1 (для ubuntu server 14.04), либо enp0s8 (для ubuntu server 16.04), все зависит от количества подключенных сетевых адаптеров к виртуальной машине.

Nano /etc/network/interfaces

Файл /etc/network/interfaces для ubuntu server 14.04:

# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp

В конец файла добавляем строку (для ip, задаваемого динамически):

Auto eth1 iface eth1 inet dhcp

Для статического ip:

Auto eth1 iface eth1 inet static address 192.168.56.101 netmask 255.255.255.0

Вместо eth1 может быть другое название интерфейса, в зависимости от вашей конфигурации.

После этого нужно перезагрузить виртуальную машину и снова набрать команду:

Ifconfig

В списке должен появиться интерфейс eth1, или тот, который прописали вы.

Настройка файла /etc/network/interfaces для ubuntu server 16.04:

# The loopback network interface auto lo iface lo inet loopback # The primary network interface auto enp0s3 iface enp0s3 inet dhcp

Здесь интерфейс называется enp0s3 вместо eth0. Согласно данным, полученным командой «ip a», в моем случае в конец файла нужно добавить:

Auto enp0s8 iface enp0s8 inet dhcp

После внесения изменений так же необходимо перезапустить виртуальную машину, либо можно перезапустить только службу networking:

Sudo service networking restart

На ubuntu server 14.04 у меня она не всегда перезапускается, просто продолжает работать, с ubuntu 16.04 в этом плане все впорядке, но для полной уверенности я считаю что лучше все таки перезапустить виртуальную машину.

После перезапуска машины и набора в терминале команды ifconfig в полученном списке сетевых интерфейсов должен появится интерфейс enp0s8.

Что делать, если сетевой интерфейс так и не заработал?

Тут два основных варианта: либо вы указали неправильный интерфейс в файле /etc/network/interfaces — в таком случае еще раз внимательно посмотрите список всех доступных сетевых интерфейсов командой «ip a» и выберите нужный. Либо виртуальная ОС вообще не видит сетевой адаптер. В этом случае скорее всего в ОС нет подходящих драйверов для этого адаптера. Эту проблему можно решить сменой типа адаптера, например на «паравиртуальная сеть (virtio-net)»:

Можете поэксперементировать с типом адаптера для достижения нужного результата.

ssh-доступ к виртуальной машине в virtualbox

После успешной настройки локальной сети между компьютером и виртуальной машиной можно к ней подключиться, например по ssh. Для этого набираем ip адрес, про который я писал вначале статьи, в ssh клиенте и радуемся успешному подключению)

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

После установки программы перейдите в меню “Настройки – Сеть”. Вид открываемой вкладки соответствует настройкам по умолчанию. Любая из виртуальных машин может быть настроена на использование четырех сетевых адаптеров – в зависимости от того, какой вам необходим в конкретном случае. Но чаще всего на практике требуется только один из них. Как правило, при установке виртуальной машины, по умолчанию создается простой сетевой адаптер. Этого достаточно для выхода в Интернет.

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

Для моего web-сервера с запущенным на нем CMS WordPress дела обстоят несколько сложнее, поэтому идем дальше… Вкладка “Тип адаптера” отвечает за настройку виртуального аппаратного обеспечения. VirtualBox прекрасно справляется с ролью связующего звена между программной сетевой платой и тем физическим интерфейсом, который установлен на реальной машине (хосте). Откройте ссылку “Дополнительно” и вам будут доступны расширенные возможности сетевого адаптера. В этой статье я детально опишу все настройки в порядке их следования, начиная с установки типа адаптера.

Тип адаптера (Adapter Type)

Виртуальная машина VirtualBox имеет встроенную программную эмуляцию большинства наиболее распространенных типов сетевых карт, под которые созданы драйвера и протоколы. Карта PCnet-FAST III является выбором по умолчанию, однако в своей практике я часто выбираю Intel PRO/1000MT. Я поступаю так, если мне необходима наилучшая совместимость с “железом” от Intel, которое установлено на моем компьютере. Если у вас возникнут проблемы в настройке сетевого соединения, можно попробовать изменить тип адаптера, выбрав другой. Для наиболее древнего оборудования подойдет сетевая карта PCnet-FAST II.

Режим (Mode)

Довольно странно звучащий “Неразборчивый режим” (Promiscuous Mode) обычно применяется для работы VM в качестве виртуального маршрутизатора в локальных сетях; как сетевой мост или же хост. В этом режиме порт виртуальной машины способен принимать любые пакеты, отправляемые для других операционных систем; и даже для хоста. То есть, принимаются сетевые пакеты, предназначенные не только для этого адаптера, но и для других сетевых устройств. В 99% случаев обычным пользователям “Неразборчивый режим” не нужен. Он используется сетевыми администраторами для диагностики проблем, возникающих в сети.

MAC адрес (MAC Address)

MAC-адрес (MAC – аббревиатура от Media Access Control) является уникальным “именем” устройства в сети, однозначно идентифицирующим и отличающим его от остальных адаптеров и узлов. Этот адрес прописывается для каждого сетевого устройства на физическом уровне в памяти самого интерфейса. При создании виртуального сетевого адаптера VirtualBox автоматически генерирует для него MAC-адрес.
Если необходимо изменить уже имеющийся MAC-адрес, то для этого служит небольшая кнопка справа, которая генерирует новое значение. В случае клонирования существующей виртуальной машины, для нее необходимо создать свой собственный уникальный MAC-адрес, который будет отличаться от адреса оригинальной машины.

Галочка напротив надписи “Кабель подключен” выполняет ту же роль, что и подключение или отключение физического кабеля в реальности. Эта настройка отвечает за подключение виртуального сетевого адаптера к сети. Не стоит путать ее с другой более важной настройкой “Включить сетевой адаптер”, которая включает или выключает сам адаптер на виртуальной машине.

Кнопка “Проброс портов” открывает диалоговое окно, в котором производится настройка правил поведения трафика на конкретном адаптере; каким образом будет перемещаться трафик определенного типа между хостом и гостевой виртуальной машиной. Эти правила применяются к сетевым моделям, которые будут рассмотрены немного позже. Сами сетевые модели определяются на вкладке “Тип подключения”. Эта настройка является наиболее сложным моментом в установке соединений в VirtualBox. Она доставила мне наибольшие проблемы в экспериментах.

Типы подключения к сети

В VirtualBox имеются четыре готовые модели для подключения к сети:

  • Трансляция сетевых адресов (NAT), которая является настройкой по умолчанию
  • Сетевой мост (Bridged)
  • Виртуальный адаптер хоста (Host Only)

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

Трансляция сетевых адресов (NAT)

Протокол NAT позволяет гостевой операционной системе выходить в Интернет, используя при этом частный IP, который не доступен со стороны внешней сети или же для всех машин локальной физической сети. Такая сетевая настройка позволяет посещать web-страницы, скачивать файлы, просматривать электронную почту. И все это, используя гостевую операционную систему. Однако извне невозможно напрямую соединиться с такой системой, если она использует NAT.

Принцип трансляции сетевых адресов заключается в следующем. Когда гостевая ОС отправляет пакеты на конкретный адрес удаленной машины в сети, сервис NAT, работающий под VirtualBox, перехватывает эти пакеты, извлекает из них сегменты, содержащие в себе адрес пункта отправки (IP-адрес гостевой операционной системы) и производит их замену на IP-адрес машины-хоста. Затем заново упаковывает их и отправляет по указанному адресу.

Например, в вашей домашней локальной сети хост и другие физические сетевые устройства имеют адреса в диапазоне, начинающемся с 192.168.х.х. В VirtualBox адаптеры, работающие по протоколу NAT, имеют IP-адреса в диапазоне, начинающемся с 10.0.2.1 и заканчивающемся 10.0.2.24. Такой диапазон называется под-сетью. Как правило, этот диапазон не используется для присвоения адресов устройствам в основной сети, поэтому такая система недоступна извне, со стороны хоста. Гостевая ОС может выполнять обновление программного обеспечения и web-серфинг, но остается невидимой для остальных “участников”.

В руководстве VirtualBox этот момент описан более подробно:

“В режиме NAT гостевому сетевому интерфейсу присваивается по умолчанию IPv4 адрес из диапазона 10.0.х.0/24, где х обозначает конкретный адрес NAT-интерфейса, определяемый по формуле +2. Таким образом, х будет равен 2, если имеется только один активный NAT-интерфейс. В этом случае, гостевая операционная система получает IP-адрес 10.0.2.15, сетевому шлюзу назначается адрес 10.0.2.2, серверу имен (DNS) назначается адрес 10.0.2.3.” (Oracle Corporation, 2012, Глава 9).

Протокол NAT полезен в том случае, когда нет разницы в том, какие IP-адреса будут использовать гостевые ОС на виртуальной машине, поскольку все они будут уникальными. Однако, если потребуется настроить перенаправление сетевого трафика, или же расширить функциональность гостевой ОС, развернув на ней web-сервер (к примеру), то необходимы дополнительные настройки. В режиме NAT также недоступны такие возможности, как предоставление общего доступа к папкам и файлам.

Сетевой мост (Bridged)

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

Адаптер в режиме “Сетевой мост” подключается, минуя хост, к устройству, которое распределяет IP-адреса внутри локальной сети для всех физических сетевых карт. VirtualBox соединяется с одной из установленных сетевых карт и передает пакеты через нее напрямую; получается работа моста, по которому передаются данные. Как правило, адаптер в модели “Сетевой мост” получает стандартный адрес из диапазона 192.168.х.х от роутера. Поэтому виртуальная машина в сети выглядит так, как будто это обычное физическое устройство, неотличимое от остальных.

На хосте могут быть активными одновременно несколько сетевых устройств; например, на моем ноутбуке имеется проводное подключение (называемое eth0) и беспроводное подключение (называемое wlan0). Поле “Имя” позволяет выбрать, какой из сетевых интерфейсов вы бы хотели использовать в качестве моста на VirtualBox.

В моем случае, я использую беспроводной адаптер wlan0 , так как он подключен к маршрутизатору. В то время как проводной интерфейс eth0 не имеет даже кабеля.

Поэтому моему хосту назначен роутером IP-адрес 192.168.0.2. Виртуальной машине в режиме “Сетевой мост” присвоен адрес 192.168.2.6. При этом не имеет значения тот факт, что VirtualBox передает и получает трафик как бы “сквозь” хост, минуя его. В результате получается, что виртуальная машина становится просто еще одним компьютером в локальной сети. Если я пересчитаю свой компьютер и три виртуальные машины (VM), работающие в режиме “Сетевой мост”, то у меня получиться четыре компьютера в физической локальной сети.

Протокол NAT полезен, потому что он защищает гостевые операционные системы со стороны Интернет. Но для того, чтобы получить доступ к ним извне (а на некоторых ОС у меня имеются установленные web-сервера), потребуется дополнительная настройка для перенаправления трафика. Тип подключения “Сетевой мост” позволяет получить доступ к ним, но системы в этом случае становятся незащищенными.

Если ваше сетевое устройство доступа (это может быть маршрутизатор, сетевой коммутатор или же настройки, предоставленные Интернет-провайдером) позволяет предоставлять только один IP-адрес для сетевого интерфейса, возможно, вам не удастся настроить “Сетевой мост”.

Виртуальный адаптер хоста (Host-only)

При подключении типа “Виртуальный адаптер хоста” гостевые ОС могут взаимодействовать между собой, а также с хостом. Но все это только внутри самой виртуальной машины VirtualBox. В этом режиме адаптер хоста использует свое собственное, специально для этого предназначенное устройство, которое называется vboxnet0 . Также им создается под-сеть и назначаются IP-адреса сетевым картам гостевых операционных систем. Гостевые ОС не могут взаимодействовать с устройствами, находящимися во внешней сети, так как они не подключены к ней через физический интерфейс. Режим “Виртуальный адаптер хоста” предоставляет ограниченный набор служб, полезных для создания частных сетей под VirtualBox для ее гостевых ОС.

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

Как правило, хост имеет свой собственный сетевой адрес, который используется для выхода в Интернет. Обычно это 192.168.0.101. В режиме “Виртуальный адаптер хоста” машина-хост также выступает в роли роутера VirtualBox и обладает IP-адресом по умолчанию 192.168.56.1. Создается внутренняя локальная сеть, обслуживающая все гостевые операционные системы, настроенные для режима “Виртуальный адаптер хоста” и видимые для остальной части физической сети. Адаптер vboxnet0 использует адреса из диапазона, начинающегося с 192.168.56.101. Но при желании можно изменить адрес по умолчанию.

Подобно адаптеру в режиме “Сетевой мост”, в режиме “Виртуальный адаптер хоста” используются разные диапазоны адресов. Можно легко настроить гостевые системы для получения IP-адресов, используя для этого встроенный DHCP-сервер виртуальной машины VirtualBox.

В дополнение нужно сказать, что в режиме “Виртуальный адаптер хоста” созданная им сеть не имеет внешнего шлюза для выхода в Интернет, как для хоста, так и для гостевых операционных систем. Он работает только как обычный сетевой коммутатор, соединяя между собой хост и гостевые системы. Поэтому адаптер в режиме “Виртуальный адаптер хоста” не предоставляет гостевым машинам выход в Интернет; vboxnet0 по умолчанию не имеет шлюза. Дополнительные возможности для этого адаптера значительно упрощают настройку сети между хостом и гостевыми ОС, однако все же отсутствует внешний доступ или перенаправление портов. Поэтому может потребоваться второй адаптер в режиме “Виртуальный адаптер хоста” или “Сетевой мост”, который подключается к гостевой операционной системе для получения полного доступа к ней.

Внутренняя сеть (Internal Network)

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

Внутренняя сеть, согласно руководству VirtualBox, является “программной сетью, которая может быть видима для выборочно установленных виртуальных машин, но не для приложений, работающих на хосте или на удаленных машинах, расположенных извне”. Такая сеть представляет из себя набор из хоста и нескольких виртуальных машин. Но ни одно из вышеперечисленных устройств не имеет выхода через физический сетевой адаптер – он полностью программный, используемый VirtualBox в качестве сетевого маршрутизатора. В целом получается частная локальная сеть только для гостевых операционных систем без доступа в Интернет, что делает ее максимально безопасной. Возможное применение такой сети – сверхсекретный сервер с клиентами, предназначенный для разработки; тестирование систем на проникновение или какие-либо другие цели, преследующие создание внутренней сети для команд-разработчиков или организаций. Это идеальный способ для блокировки окружения от неавторизованной установки программного обеспечения, скачивания или закачивания файлов, посещения сервисов типа Facebook в рабочее время.

Итак, мы рассмотрели различные типы сетевых соединений. Каждый из них имеет свои собственные настройки и предназначен для определенных целей.