На сегодняшний день существует уже куча приложений для виртуализации. И VirtualBox один из них, и как правило почти каждая вторая виртуальная машина имеет доступ по сети. У каждой виртуальной машины своё предназначение, например, кому-то нужно просто протестировать ОС или просто запустить приложение, требующее определенную ОС.

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

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

Требования

Для начала убедитесь, что у вас уже установлен сам VirtualBox и создана виртуальная машина.

Типы сетей

В таблице ниже рассмотрим какие типы сетей вы можете использовать в VirtualBox и какие доступы вы будете иметь.

Тип сети VM > Host Host > VM VM1 > VM2 VM > LAN LAN > VM
NAT + Port forwarding - + Port forwarding
Bridged + + + + +
Internal - - + - -
Host-Only + + + - -
NATservice + Port forwarding + + Port forwarding

Когда вы создаёте новую виртуальную машину (сервер) ему автоматом добавляется виртуальный сетевой адаптер (1 активный и 3 неактивных). Как правило хватает только одного сетевого активного адаптера. По умолчанию тип адаптера выставлен в NAT.

enter image description here

NAT

virtualbox NAT

Не буду сильно расписывать о том, что это такое просто скажу, что при использовании такого типа происходит сопоставление IP-адреса с другим путем изменения заголовка IP-пакетов. И в этом случае IP-адрес вашей виртуальной машины будет из подсети 10.0.2.0. Отмечу что это самый простой способ дать доступ виртуальной машине к внешней сети.

virtualbox NAT 1

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

Т.е. если вам просто нужен доступ в интернет и вас совсем не беспокоит что в итоге весь траффик по сети идёт от вашего локального компьютера то используем NAT.

Также если вам вдруг всё же очень сильно нужен NAT и доступ к виртуальной машине из вне или локальной сети вы можете настроить Port Forwarding. Но в таком случае для доступа к виртуальной машине нужно будет обращаться к IP-адресу хоста.

virtualbox NAT 2

Если вдруг вам не нравится какие IP-адреса назначаются вашим виртуальным машинам можете изменить это в настройках VirtualBox (Менеджер сетей > NAT).

virtualbox NAT 3 virtualbox NAT 4

NATservice

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

Сама сеть настраивается в (Менеджер сетей > NAT).

virtualbox NAT 5

Также как и в NAT доступен Port Forwarding.

virtualbox NAT 6

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

virtualbox Bridged networking

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

Тут если у вас в сети нет DHCP сервера, то придётся прописывать IP-адрес на виртуальной машине вручную. IP-адрес как правило из той же подсети что и IP-адрес на локальном хосте, с тем же шлюзом.

При использовании такого типа подключения помимо доступа к интернету с виртуального хоста вы еще получаете и входящие подключения по IP-адресу виртуального хоста.

Для примера представим ситуацию что у меня нет DHCP сервера в следствии чего мои настройки будут следующими:

  • Локальный хост
    DNS-суффикс подключения . . . . . :
    IPv4-адрес. . . . . . . . . . . . : 192.168.8.11
    Маска подсети . . . . . . . . . . : 255.255.255.0
    Основной шлюз. . . . . . . . . : 192.168.8.1
    
  • Виртуальная машина
    DNS-суффикс подключения . . . . . :
    IPv4-адрес. . . . . . . . . . . . : 192.168.8.12
    Маска подсети . . . . . . . . . . : 255.255.255.0
    Основной шлюз. . . . . . . . . : 192.168.8.1
    

С такими настройками я легко смогу попасть в интернет через виртуальную машину, но также буду иметь доступ по локальной сети к локальному хосту (192.168.8.11) и наоборот, если только не включен файрволл.

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

virtualbox Internal networking

При использовании такого типа соединения доступ по сети будет доступен только внутри сети образованной из ваших виртуальных машин. Т.е. это локальная сеть, которая будет доступна только для виртуальных машин.

Естественно ни, а какой речи доступа к интернету тут не может идти и речи так как доступа у вириальных машин к вашей сети нету и соответственно наоборот тоже.

Для примера представим мои настройки сети будут следующими:

  • Локальный хост
    DNS-суффикс подключения . . . . . :
    IPv4-адрес. . . . . . . . . . . . : 192.168.8.11
    Маска подсети . . . . . . . . . . : 255.255.255.0
    Основной шлюз. . . . . . . . . : 192.168.8.1
    
  • Виртуальная машина
    DNS-суффикс подключения . . . . . :
    IPv4-адрес. . . . . . . . . . . . : 192.168.8.12
    Маска подсети . . . . . . . . . . : 255.255.255.0
    
  • Виртуальная машина 2
    DNS-суффикс подключения . . . . . :
    IPv4-адрес. . . . . . . . . . . . : 192.168.8.13
    Маска подсети . . . . . . . . . . : 255.255.255.0
    

При таких настройках я с легкостью смогу получить доступ с одной виртуальной машины на другую через локальную сеть, например, запущу ping с 192.168.8.12 на 192.168.8.13 или наоборот. Но я никак не смогу получить доступ с локального хоста (192.168.8.11) до виртуальных машин и наоборот (даже если пропишу шлюз 192.168.8.1).

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

virtualbox Host-Only networking

Виртуальный адаптер хоста можно рассматривать как что-то среднее между Internal networking (Внутренняя сеть) и Bridged networking (Сетевой мост).

Когда используется Host-Only Networking (Виртуальный адаптер хоста) VirtualBox создаёт новый виртуальный адаптер, благодаря которому ваши виртуальные машины соединяются с вашим локальным хостом и наоборот. Только тут отличие в том, что вы должны подключаться не к IP-адресу вашего хоста, а к IP-адресу, который вы должны задать в настройках VirtualBox (Менеджер сетей).

virtualbox Host-Only Networking 2

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

virtualbox Host-Only Networking 3