Виртуальная машина VirtualBox, доступная с хост-машины, с доступом в интернет и к другим виртуальным машинам


Zeboton

Есть задача. Сделать возможным подключение к виртуальной машине VirtualBox по ssh при отсутствии «внешней сети» ( в данной заметке под «внешней сетью» подразумевается сеть «внешняя» по отношению к железу компьютера, то есть и внутренняя (домашняя/корпоративная) сеть ), при этом из виртуальной машины должна быть возможность подключиться к другим виртуальным машинам на этой же хост-машине. В случае, когда «внешняя сеть» доступна, должна быть возможность работы из виртуальной машины в этой сети.

Для чего такое нужно? Пример из жизни — виртуальная машина, как сервер для web-разработки в условиях отсутствия «внешней сети», например, на ноутбуке где-то далеко от сетевой цивилизации 🙂


Решение задачи:

  1. В основном окне VirtualBox переходим в меню Файл — Свойства.
  2. В открывшемся окне переходим в раздел Сеть.
  3. Щёлкаем на иконке сетевой карты со знаком плюс, расположенной справа от списка Виртуальные сети хоста. После этого в списке Виртуальные сети хоста должна появиться запись vboxnet0 VirtualBox Network Settings Закрываем настройки VirtualBox.
  4. Открываем контекстное меню нужной виртуальной машины и выбираем пункт Свойства ( Ctrl+S ).
  5. Переходим в раздел Сеть.
  6. В качестве Адаптер 1 устанавливаем NAT, чтобы иметь доступ к «внешней сети». VirtualBox Virtual Machine Network Settings NAT
  7. На вкладке Адаптер 2 устанавливаем флаг Включить сетевой адаптер, в поле Тип подключения выбираем Виртуальный адаптер хоста, в поле Имя устанавливаем vboxnet0. Это позволяет хост-машине иметь доступ к виртуальной машине при отсутствии «внешней сети». VirtualBox Virtual Machine Network Settings vboxnet0
  8. На вкладке Адаптер 3 устанавливаем флаг Включить сетевой адаптер, в поле Тип подключения выбираем Внутренняя сеть, в поле Имя устанавливаем intnet. Теперь виртуальные машины, у которых так же установлен адаптер с внутренней сетью и именем сети intnet, будут видеть друг-друга, так как будут располагаться в одной сети. VirtualBox Virtual Machine Network Settings intnet
  9. Щёлкаем OK в окне свойств виртуальной машины.
  10. Запускаем виртуальную машину.
  11. Редактируем файл с сетевыми интерфейсами ( sudo nano /etc/network/interfaces ). После редактирования файл должен быть похож на:
     # The loopback network interface
    auto lo
    iface lo inet loopback
    
    # The primary network interface
    auto eth0
    iface eth0 inet dhcp
    
    # Static IP for access virtual machine from host machine
    auto eth1
    iface eth1 inet static
            address 192.168.56.10 # IP scope 192.168.56.* was set in VistualBox Network Settings into interface vboxnet0
            netmask 255.255.255.0
  12. Удаляем автоматически созданную конфигурацию сети, чтобы при загрузке система создала новую с учётом добавленного правила:
    sudo rm /etc/udev/rules.d/70-persistent-net.rules
  13. Перезапускаем виртуальную машину:sudo shutdown -r now

Готово. Проверяем. С хост-машины выполняем ssh your_user@192.168.56.10 . Подключаемся и, если есть «внешняя сеть», выполняем ping meandubuntu.ru . Всё работает, отлично!

Похожие записи: