С течением времени, “парк виртуалок” сильно разростается, появляется необходимость объединять виртуалки в сегменты локальных сетей по определённому признаку. И разберём ниже, делать это можно весьма гибко.
определим терминологию, дабы не запутаться.
Термины
- Хостовая машина, HOST – наш сервер или десктопная машина, “реальная”, на которой и работает гипервизор с виртуальными машинами.
- Гостевая машина, VM – собственно, сама виртуальная машина, которых, к слову, может быть несколько. Создавал как-то конфигурацию с одновременно работающими 6-ю гостевыми машинами. Ну вот нужно было )
- Мост, Bridge – механизм объединения двух сетевых интерфейсов. Условно, как патчкорд, соединяющий два порта. Может быть программным.
- NAT – механизм трансляции сетевых адресов, когда на хосте работает специальная служба, которая занимается самой трансляцией – отображением виртуального (частного) адреса или группы адресов в один реальный и обратно.
- Сегмент – некое подобие VLAN, чисто на программном уровне, объединение различных виртуальных интерфейсов в один домен коллизий.
Общие принципы построения сети
Мост
Используется в случаях, когда нужно организовать сопоставление физического интерфейса хостовой машины и виртуального интерфейса гостевой машины. Хостовая машина при этом будет выступать как бы коммутатором. Можно назначить IP-адрес на виртуальную машину из той же сети, что и хостовая.
NAT
Используется в случаях, когда нужно отобразить целую подсеть из частного диапазона (RFC 1918) на IP-адрес хостовой машины. При этом на хостовой – работает служба от гипервизора, которая занимается трансляцией адресов. Хостовая машина при этом выступает как бы в роли маршрутизатора.
Виртуальная сеть
Используется в случаях, когда нужно разграничить сегменты, в которых находятся гостевые машины между собой. Что-то типа именованных VLAN-ов. Сетевое соединение не будет иметь выход на реальную машины, но это не всегда и нужно. Удобство в том, что эти VLAN-ы можно именовать, что позволяет упростить последующую настройку и отладку. Хостовая машина при этом не участвует.
Виртуальный адаптер хоста
И ещё один тип сетевого подключения – в хостовой машине создаётся виртуальный сетевой интерфейс (а то и несколько) и на него бриджуется сетевое соединение гостевой системы. Отличие от моста, что используется не физический интерфейс, а виртуальный, дополнительный.
Рассмотрим несколько типовых сценариев:
Типовые сценарии
Сейчас распишу типовые сценарии. Самое главное, что тут нужно запомнить – эти сценарии можно комбинировать между собой, т.к. у виртуальной машины в VirtualBox имеется возможность использования 4-х виртуальных сетевых адаптеров, которые могут иметь различные настройки.
1. Выход VM в сеть Интернет
Типовой сценарий, на нашу хостовую машину подаётся Интернет (любым способом, пусть кабель или WiFi), на хосте запущена гостевая VM и нужно на гостевую подать Интернет. Здесь возможно несколько вариантов. Если у нас “выше по течению” есть маршрутизатор с DHCP – можно сделать сетевое подключение типа “Сетевой мост” и связать его с нашим реальным сетевым интерфейсом (на скрине это Realtek PCIe GBE). В этом случае наша виртуальная машина запросит по DHCP адрес и получит его с роутера. Адрес в той же самой подсети, что и хостовая машина, со всеми вытекающими плюсами.
Альтернативным способом можно сделать выход через NAT.
Заходим в настройки VirtualBox и идём в раздел “Сеть”:
Добавляем новую сеть NAT, даём ей имя (я обычно указываю подсеть, чтобы не запутаться, если их будет несколько).
В настройках можно включить DHCP или настроить проброс портов:
Теперь в настройках виртуальной машины можно выбрать тип подключения “Сеть NAT” и в выпадающем списке найти нашу сеть:
Т.к. у нас настроен DHCP, получим адрес автоматически и убедимся, что всё работает:
2. Соединение двух (и более) виртуальных машин
Вариантов масса, можно банально всем выставить мост с реальным интерфейсом и выделить каждой IP-адрес из той же сети.
Но можно пойти иным путём:
Выбрать тип подключения “Внутренняя сеть”, задать ему имя. И у всех остальных виртуалок выставить то же самое имя в выпадающем списке. Ну и на гостевые машины, соответственно, задать адреса из произвольной подсети.
3. Различные гостевые машины в разных сегментах
Соответственно, можно аналогичным образом создать несколько машин, когда одна из машин имеет 2 сетевых интерфейса (один – в одном именованном сегменте, второй – в другом). Например гостевая 1 имеет интерфейс с IP: 10.0.2.2/24 в сегменте “LAN1”, гостевая 2 имеет интерфейс с IP: 192.168.100.2/24 в сегменте LAN2, а гостевая 3 имеет интерфейс 10.0.2.1/24 в LAN1 и интерфейс 192.168.100.1/24 в LAN2. То есть двумя концами смотрит в две сети. На такой схеме можно поотрабатывать навыки настройки маршрутизации.
Вы наверняка заметили, что этот сценарий практически идентичен сценарию 2. На самом деле можно реализовывать практически любые конфигурации комбинируя эти два сценария.
Например, на одну машину повесить один мост с реальной сетью, а также виртуальный сегмент для доступа к другим виртуалкам. Можно протестировать работу прокси-сервера Squid, чтобы через “жирную” гостевую машину, имеющую выход мостом в Интернет ходили несколько гостевых пользователей, закрытых в том же сегменте.