Настройка сети VirtualBox
Виртуальные машины VirtualBox очень часто используются для тестирования различного программного обеспечения и его взаимодействия между собой. Обычно, таким программам необходим доступ к интернету. Время от времени возникает необходимость протестировать работу программ по сети или даже создать небольшую тестовую лабораторию из виртуальных машин.
В этой инструкции мы рассмотрим как выполняется настройка сети VirtualBox различными способами. Вы узнаете как объединить машины в одну локальную сеть, как дать им доступ к интернету и как связать их с основной системой. Но сначала поговорим о том, как может работать сеть.
Виды сетевых адаптеров VirtualBox
Существует несколько способов как настроить сеть в virtualbox, и каждый из них подходит для лучше для решения одной задачи и меньше для другой. Рассмотрим основные:
Теперь рассмотрим каждый вариант настройки более подробно.
Настройка сети Virtualbox
1. Настройка сети NAT
Здесь почти нет о чем говорить. Получение доступа к сети через NAT включено по умолчанию. Проброс портов я рассматривал в отдельной статье. Но если вы раньше отключали сетевые адаптеры, то чтобы включить NAT обратно достаточно открыть настройки нужной машины:
Перейти на вкладку «Сеть»:
Выбрать один из адаптеров. К виртуальной машине можно подключить несколько адаптеров и это очень удобно, так как вы можете комбинировать вместе адаптер виртуального хоста и NAT чтобы получить преимущества обоих режимов. Дальше вам нужно выбрать пункт «NAT» в списке «Тип подключения».
На вкладке «Дополнительно» вы можете настроить марку устройства адаптера и MAC адрес:
Если вы собираетесь устанавливать туда в Windows, то лучше будет работать Intel PRO/1000 MT Desktop, а для Linux можно оставить AMD PCNet FAST III, так как он поддерживается всеми операционными системами.
2. Настройка сети NAT
Теперь все машины, подключенные к этой сети, будут доступны друг другу, как в VMWare.
3. Настройка адаптера виртуального хоста
Нажмите кнопку «Создать», затем, в появившемся адаптере, напротив пункта DHCP установите галочку «Включен».
Теперь вернитесь к списку виртуальных машин, зайдите в настройки машины, «Сеть»:
Для всех машин, которые вы хотите объединить в одну сеть нужно выбирать один и тот же адаптер хоста. Если вы захотите добавить машинам также доступ в интернет, просто перейдите на вкладку «Адаптер 2», включите его и настройте NAT, как описано в первом пункте.
4. Настройка сетевого моста VirtualBox
В поле «Имя» вам необходимо выбрать сетевой интерфейс, который будет использоваться для связи с внешним миром. Минус такого способа в том, что внешние компьютеры смогут получить доступ к виртуальной машине, а это не очень хорошо с точки зрения безопасности.
5. Внутренняя сеть VirtualBox
Выводы
В этой небольшой статье мы рассмотрели как выполняется настройка сети VirtualBox, как видите, это не так уж сложно, как может показаться на первый взгляд, несмотря на операционную систему, которую вы используете. В большинстве случаев достаточно сети NAT, но иногда может понадобиться виртуальный адаптер хоста, все же остальные режимы используются намного реже.
Настройка сети в VirtualBox
Оригинал: VirtualBox Networking
Автор: Robin Catling
Дата публикации: май 2012 г.
Перевод: Семененко В.
Дата перевода: 5 октября 2012 г.
Сетевые настройки VirtualBox
Для начала установите любую версию виртуальной машины 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)
Галочка напротив надписи «Кабель подключен» выполняет ту же роль, что и подключение или отключение физического кабеля в реальности. Эта настройка отвечает за подключение виртуального сетевого адаптера к сети. Не стоит путать ее с другой более важной настройкой «Включить сетевой адаптер», которая включает или выключает сам адаптер на виртуальной машине.
Кнопка «Проброс портов» открывает диалоговое окно, в котором производится настройка правил поведения трафика на конкретном адаптере; каким образом будет перемещаться трафик определенного типа между хостом и гостевой виртуальной машиной. Эти правила применяются к сетевым моделям, которые будут рассмотрены немного позже. Сами сетевые модели определяются на вкладке «Тип подключения». Эта настройка является наиболее сложным моментом в установке соединений в VirtualBox. Она доставила мне наибольшие проблемы в экспериментах.
«Подводные камни»
Типы подключения к сети
В 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.
Поэтому моему хосту назначен роутером IP-адрес 192.168.0.2. Виртуальной машине в режиме «Сетевой мост» присвоен адрес 192.168.2.6. При этом не имеет значения тот факт, что VirtualBox передает и получает трафик как бы «сквозь» хост, минуя его. В результате получается, что виртуальная машина становится просто еще одним компьютером в локальной сети. Если я пересчитаю свой компьютер и три виртуальные машины (VM), работающие в режиме «Сетевой мост», то у меня получиться четыре компьютера в физической локальной сети.
Протокол NAT полезен, потому что он защищает гостевые операционные системы со стороны Интернет. Но для того, чтобы получить доступ к ним извне (а на некоторых ОС у меня имеются установленные web-сервера), потребуется дополнительная настройка для перенаправления трафика. Тип подключения «Сетевой мост» позволяет получить доступ к ним, но системы в этом случае становятся незащищенными.
Если ваше сетевое устройство доступа (это может быть маршрутизатор, сетевой коммутатор или же настройки, предоставленные Интернет-провайдером) позволяет предоставлять только один IP-адрес для сетевого интерфейса, возможно, вам не удастся настроить «Сетевой мост».
Виртуальный адаптер хоста (Host-only)
Как правило, хост имеет свой собственный сетевой адрес, который используется для выхода в Интернет. Обычно это 192.168.0.101. В режиме «Виртуальный адаптер хоста» машина-хост также выступает в роли роутера VirtualBox и обладает IP-адресом по умолчанию 192.168.56.1. Создается внутренняя локальная сеть, обслуживающая все гостевые операционные системы, настроенные для режима «Виртуальный адаптер хоста» и видимые для остальной части физической сети. Адаптер vboxnet0 использует адреса из диапазона, начинающегося с 192.168.56.101. Но при желании можно изменить адрес по умолчанию.
Подобно адаптеру в режиме «Сетевой мост», в режиме «Виртуальный адаптер хоста» используются разные диапазоны адресов. Можно легко настроить гостевые системы для получения IP-адресов, используя для этого встроенный DHCP-сервер виртуальной машины VirtualBox.
В дополнение нужно сказать, что в режиме «Виртуальный адаптер хоста» созданная им сеть не имеет внешнего шлюза для выхода в Интернет, как для хоста, так и для гостевых операционных систем. Он работает только как обычный сетевой коммутатор, соединяя между собой хост и гостевые системы. Поэтому адаптер в режиме «Виртуальный адаптер хоста» не предоставляет гостевым машинам выход в Интернет; vboxnet0 по умолчанию не имеет шлюза. Дополнительные возможности для этого адаптера значительно упрощают настройку сети между хостом и гостевыми ОС, однако все же отсутствует внешний доступ или перенаправление портов. Поэтому может потребоваться второй адаптер в режиме «Виртуальный адаптер хоста» или «Сетевой мост», который подключается к гостевой операционной системе для получения полного доступа к ней.
Внутренняя сеть (Internal Network)
Если на практике вам потребуется настроить взаимосвязь между несколькими гостевыми операционными системами, работающими на одном хосте и могущими сообщаться только между собой, тогда можно воспользоваться режимом «Внутренняя сеть». Конечно, для этой цели можно использовать режим «Сетевой мост», но режим «Внутренняя сеть» обладает большей безопасностью. В режиме «Сетевой мост» все пакеты отправляются и получаются через адаптер физической сети, установленный на машине-хосте. В этом случае весь трафик может быть перехвачен (например, путем установки сниффера пакетов на машине-хосте).
Доступ к гостевой операционной системе
Во-первых, мне нужен доступ в Интернет из гостевой системы для установки обновлений, скачивания пакетов и других подобных задач. Мне также необходим доступ к Сети с машины-хоста. Но мне не нужно, чтобы сервер был доступен из внешней сети.
Оставляю выбранным по умолчанию сетевой адаптер в режиме NAT. Это позволит гостевым системам выходить в Интернет через настроенное соединение хоста, на котором установлены эти машины. Гостевые системы не видны извне в локальной сети; я также не имею доступа к любой из гостевых систем со стороны хоста; аналогично, гостевые системы не могут взаимодействовать между собой.
Настройка виртуального адаптера хоста
По умолчанию, адаптер vboxnet0 динамически получает IP адрес во время сессии подключения от DHCP-сервера. Для моего виртуального web-сервера WordPress необходимо, чтобы он имел статический IP-адрес. Поэтому на вкладке «DHCP сервер» я убрал галочку с надписи «Включить сервер». Таким образом, DHCP-сервер у меня отключен.
Добавление виртуального адаптера хоста
Я собираюсь добавить еще один сетевой адаптер (в режиме «Виртуальный адаптер хоста») к гостевой машине, что позволит создать самодостаточную частную виртуальную сеть. Эта сеть будет состоять только из хоста и любой гостевой операционной машины, настроенной в режиме «Виртуальный адаптер хоста».
Настройка гостевой системы
Мне необходимо, чтобы гостевой виртуальный сервер имел статический IP-адрес в сети, работающей в режиме «Виртуальный адаптер хоста». Иначе адрес сервера будет меняться от сессии до сессии, каждый раз при подключении. Я буду вынужден снова и снова решать задачу настройки, чтобы соединиться с хостом. Поэтому захожу в гостевую систему, открываю в ней терминал и ввожу в нем две следующие команды:
Однако, эти настройки являются временными. Если я произведу перезагрузку системы, все они бесследно пропадут. Для того, чтобы установить их постоянными, нужно добавить (используя учетную запись root) в файл /etc/network/interfaces следующие строки:
Присвоение имен
Так как я не слишком «дружу» с числами и IP-адресами, то для себя я всегда использую имена для гостевых систем вместо присвоения им IP-адресов. Для этого я редактирую файл /etc/hosts на машине-хосте и добавляю туда ссылки. Таким образом, я могу просматривать запущенные гостевые системы по их именам.
В файл /etc/hosts я добавляю строку:
Если я добавляю еще несколько гостевых систем с сеть, то мне достаточно отредактировать этот файл и дописать нужное количество строк. Благодаря такому приему я легко могу обратиться к любой из этих систем.
Альтернативный маршрут
Эксперты сетевых технологий могут заметить, что в моей конфигурации существует альтернативный маршрут для доступа к виртуальному серверу.
Используя адаптер по умолчанию, работающий по протоколу NAT, можно запустить дополнительную конфигурацию, которая позволит мне получить доступ к виртуальному серверу с хоста, не используя при этом сетевую настройку «Виртуальный адаптер хоста».
Используя панель настроек «Сетевой адаптер» в гостевой операционной системе, можно настроить проброс портов в виртуальной машине VirtualBox. Для этого переходим к настройкам адаптера NAT (кнопка внизу окна) для настройки перенаправления портов. При нажатии на нее откроется диалоговое окно, в котором настраиваются правила проброса для данного сетевого адаптера и гостевой системы.
Не мудрствуя лукаво, я назвал эти правила Apache и TCP, соответственно; оба используют TCP-протокол. Если говорить о привязке номеров портов, то порт 8888 на хосте перенаправляет трафик на гостевую систему для сервера Apache; порт 2222 на хосте перенаправляет трафик на порт 22, расположенный на гостевой операционной системе; такая настройка предоставляет мне доступ к гостевой системе для управления ее службами. Любой другой трафик будет отклонен виртуальной машиной, как не подпадающий под правила.
Это означает, что любые другие гостевые системы, которые я запущу на виртуальной машине, не смогут соединиться с виртуальным сервером, так как просто не существует сетевого маршрута под NAT.
Настройка сети в гостевой Ubuntu 16.04 Server на VirtualBox + Windows 7
Весна, снова потянуло на эксперименты. Ну, в моем понимании этого слова. Решил поставить себе в Windows 7 виртуальную машину, а в эту машину — Ubuntu 16.04 Server (под которой работает хостинг для моих сайтов). И не то чтобы меня как-то OpenServer не устраивает — он как раз весьма неплох в качестве домашнего WAMP-а, но всё же иногда хочется иметь под рукой локально и LAMP, ну просто потому что. В качестве виртуальной машины [ожидаемо] выбрал VirtualBox.
В целом, установка Ubuntu 16.04 Server на VirtualBox каких-то особых вопросов не вызвала, но вот настройка сети в Ubuntu так, чтобы ее было видно из Windows, поставила меня в тупик. Ибо опыта в этом деле — 0, а мануалы по теме хотя и гуглятся во множестве, но в каждом из них тема почему-то раскрыта лишь частично, и требует уже определенного уровня знания Linux и принципов работы сетевых интерфейсов.
В конечном итоге я этот вопрос решил и теперь делюсь с теми, кому оно тоже актуально. Приступим.
2. Скачиваем Ubuntu Server 16.04 www.ubuntu.com/download/server
3. Устанавливаем VirtualBox в систему (ставится легко, раскрывать этот вопрос здесь не буду, в крайнем случае — в сети есть много шпаргалок по теме).
4. Ставим Ubuntu Server 16.04 в VirtualBox. Здесь тоже всё не сложнее (а то и проще), чем установка винды, например, и много всяких хороших руководств с картинками (они, в общем, и не требуются — всё интуитивно понятно). Но есть пара нюансов:
4.1 При установке сети выберите автоматическую настройку.
4.2 При установке пакетов сразу поставьте галки на сервер OpenSSH и LAMP (остальное по желанию) — так проще.
5. Я полагаю, что все у вас прошло нормально, Ubuntu загрузилась, и интернет в ней наличествует ( проверить можно командой ping yandex.ru например). Однако, остается вопрос, как, например, законнектиться с Ubuntu из Windows скажем, через SSH. Или просто даже открыть в браузере сайт, работающий на убунтовском Apache.
6. Итак, остановим нашу Ubuntu, закроем окно с терминалом, и уже в главном окне VirtualBox идем в Файл → Настройки → Сеть → Виртуальные сети хоста — справа три маленькие иконки — жмем на нижнюю с изображением отвертки.
7. Видим IP-адрес: 192.168.56.1 — это адрес, по которому Windows обращается к VirtualBox.
8. Рядом вкладка «DHCP сервер» в нашем случае она пуста (чекбокс не выбран). И пусть таковой и остается.
9. Далее идем в настройки гостевой системы (в нашем случае — Ubuntu 16.04.2 Server), щелкаем правой кнопкой на вкладке с системой и выбираем самый верхний пункт «Настроить. ».
10. Здесь снова идем в «Сеть» (у нас получается два одноименных пункта «Сеть», но в первом случае мы настраивали сеть Windows и VirtualBox, а теперь мы настраиваем сеть гостевой системы — Ubuntu в связке с остальным). Здесь мы видим, что для первого адаптера отмечена NAT. Не меняем.
11. Открываем вкладку «Адаптер 2», ставим галку на «Включить сетевой адаптер» и в списке выбираем тип подключения: «Виртуальный адаптер хоста». Жмем ОК. Это действие добавит нам в Ubuntu сетевой адаптер, через который мы и прорубим окно во внешний мир, и в которое можно будет посмотреть на Ubuntu из Windows, через браузер или SSH-клиент, например.
12. Далее идем в окно терминала Ubuntu, логинимся (если еще не), и сразу ставим mc
Чем значительно облегчаем себе дальнейшую жизнь (здесь вспоминается высказывание древнего философа: — Это как же нужно было не любить людей, чтобы содать vi )
13. Смотрим какие сетевые интерфейсы нам доступны:
Нужно это для того, чтобы понять, какое имя в Ubuntu носит тот самый «Виртуальный адаптер хоста», который мы создали в шаге №11
На скрине вы видите уже настроенные интерфейсы, но у вас будет примерно то же самое. Нас в данной ситуации исключительно интересует какое имя носит сетевой интерфейс, через который мы и будем осуществлять доступ из винды в убунту.
Здесь мы видим, что есть три интерфейса: lo — локальная петля, enp0s3 — это «Адаптер 1» который у нас настроен как NAT (через него идет интернет-трафик в Ubuntu) и, наконец, enp0s8 — это и есть вышеупомянутый «Адаптер 2» («Виртуальный адаптер хоста»). Теперь осталось его настроить.
14. Запускаем mc от имени суперпользователя:
15. И открываем для правки файл
(переводим на него курсор и жмем F4), либо просто командой
Но лично я предпочитаю через mc — меньше буковок набирать приходится 
16. И добавляем туда в конец текста такие строки:
auto enp0s8
iface enp0s8 inet static
address 192.168.56.107
netmask 255.255.255.0
Получается что-то вроде как показано на скрине:
Если двумя словами, то мы тем самым нашему «Адаптеру 2» дали статический IP-адрес: 192.168.56.107 (можете поменять его на 192.168.56.101 например, или 192.168.56.110, без разницы). И теперь через этот адрес, Ubuntu будет видна из Windows.
17. Сохраняем изменения — F2 и выходим из редактора — F10.
18. Далее перезапускаем интерфейсы, например так:
sudo service networking restart
или можете просто перезагрузить Ubuntu Server.
19. Теперь, если звезды на небе расположены правильно, то открыв браузер, и набрав в адресной строке:
вы увидите приветственную страницу установленного в составе LAMP (см.п. 4.2 выше) Apache2.
Либо можете законнектиться по SSH через 22 порт по этому же IP-адресу: 192.168.56.107






















