Есть задача. Сделать возможным подключение к виртуальной машине VirtualBox по ssh при отсутствии «внешней сети» ( в данной заметке под «внешней сетью» подразумевается сеть «внешняя» по отношению к железу компьютера, то есть и внутренняя (домашняя/корпоративная) сеть ), при этом из виртуальной машины должна быть возможность подключиться к другим виртуальным машинам на этой же хост-машине. В случае, когда «внешняя сеть» доступна, должна быть возможность работы из виртуальной машины в этой сети.
Для чего такое нужно? Пример из жизни — виртуальная машина, как сервер для web-разработки в условиях отсутствия «внешней сети», например, на ноутбуке где-то далеко от сетевой цивилизации 🙂
Решение задачи:
- В основном окне VirtualBox переходим в меню Файл — Свойства.
- В открывшемся окне переходим в раздел Сеть.
- Щёлкаем на иконке сетевой карты со знаком плюс, расположенной справа от списка Виртуальные сети хоста. После этого в списке Виртуальные сети хоста должна появиться запись vboxnet0 Закрываем настройки VirtualBox.
UPD 2019.07.10
В VirtualBox 6.0 этот функционал измнил своё местоположение. Нужно открыть Файл — Менеджер Сетей Хоста… ( на английском этот пункт называется Host Network Manager… ( Ctrl+H ) ) и в открывшемся окне щёлкаем по иконке с изображением сетевой карты с знаком плюс. - Открываем контекстное меню нужной виртуальной машины и выбираем пункт Свойства ( Ctrl+S ).
- Переходим в раздел Сеть.
- В качестве Адаптер 1 устанавливаем NAT, чтобы иметь доступ к «внешней сети».
- На вкладке Адаптер 2 устанавливаем флаг Включить сетевой адаптер, в поле Тип подключения выбираем Виртуальный адаптер хоста, в поле Имя устанавливаем vboxnet0. Это позволяет хост-машине иметь доступ к виртуальной машине при отсутствии «внешней сети».
- На вкладке Адаптер 3 устанавливаем флаг Включить сетевой адаптер, в поле Тип подключения выбираем Внутренняя сеть, в поле Имя устанавливаем intnet. Теперь виртуальные машины, у которых так же установлен адаптер с внутренней сетью и именем сети intnet, будут видеть друг-друга, так как будут располагаться в одной сети.
- Щёлкаем OK в окне свойств виртуальной машины.
- Запускаем виртуальную машину.
- Редактируем файл с сетевыми интерфейсами ( 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
- Удаляем автоматически созданную конфигурацию сети, чтобы при загрузке система создала новую с учётом добавленного правила:
sudo rm /etc/udev/rules.d/70-persistent-net.rules
- Перезапускаем виртуальную машину:
sudo shutdown -r now
Готово. Проверяем. С хост-машины выполняем ssh your_user@192.168.56.10 . Подключаемся и, если есть «внешняя сеть», выполняем ping meandubuntu.ru . Всё работает, отлично!
Спасибо автору, очень толковая инструкция
Спасибо большое, добра вам.