Управление VirtualBox через терминал на headless‑сервере

- В этой инструкции описано, как установить VirtualBox и VBox Extension Pack, создать виртуальную машину из командной строки (headless), подключить сеть с NAT Network и настроить проброс портов для SSH/RDP. Подойдёт для серверов без графического интерфейса. Дополнительно — чеклисты, сценарии отказа, безопасность и рекомендации по альтернативам.
Быстрые ссылки
- Установка VirtualBox и VBox Extension Pack
- Создание виртуальной машины
- Проброс портов после установки
Кому это пригодится
Кратко: системным администраторам и инженерам DevOps, которые хотят запускать виртуальные машины на собственных серверах без графической оболочки. Под «headless» подразумевается сервер без подключённого монитора/DE — доступ к гостю организуется по сети.
Определение: hypervisor — программный уровень, который создаёт и управляет виртуальными машинами.
Обзор и модель принятия решений
Ментальная модель: если вы хотите просто запускать несколько ОС на хосте и при этом иметь гибкость — используйте Type‑2 гипервизор (VirtualBox) для простоты. Если нужна высокая производительность и интеграция в Linux‑стек — KVM/QEMU. Для простых тестовых сред и обучения VirtualBox в headless‑режиме — хороший компромисс между удобством и функциональностью.
Ключевые варианты:
- VirtualBox (Type‑2) — просто устанавливать, полный CLI, Extension Pack добавляет RDP/VNC и USB 2/3.
- KVM/QEMU (Type‑1/Type‑2 hybrid на Linux) — лучше по производительности, сложнее настройка.
- Proxmox/ESXi — полноценные гипервизоры/платформы для дата‑центров.
1. Установка VirtualBox и VBox Extension Pack
VirtualBox — бесплатное приложение с графическим интерфейсом, но также с полной CLI (VBoxManage), что позволяет управлять ВМ без GUI. Если на сервере есть немного RAM и вы предпочитаете GUI, можно установить лёгкую среду рабочего стола, но в большинстве серверных сценариев удобнее работать только через терминал.
Установка из репозитория APT (пример для Debian/Ubuntu):
sudo apt-get install virtualboxПосле установки проверьте версию VirtualBox — она нужна для подбора подходящего Extension Pack:
VBoxManage -vСкачайте соответствующий Extension Pack с сайта VirtualBox. Пример команды wget (замените версию на ту, что у вас установлена):
wget https://download.virtualbox.org/virtualbox/5.2.42/Oracle_VM_VirtualBox_Extension_Pack-5.2.42.vbox-extpackУстановите пакет расширений (внимание на имя файла):
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.2.42.extpackИногда встроенный VNC‑плагин конфликтует с VRDE. Если VRDE не работает, попробуйте удалить VNC extpack:
sudo VBoxManage extpack uninstall VNCВажно: расширения следует устанавливать версии, совпадающей с VBoxManage -v. Если версии не совпадают — часть функций может не работать.
2. Создание виртуальной машины (VM) через CLI
Просмотреть поддерживаемые типы ОС:
VBoxManage list ostypesСоздадим VM с именем “Ubuntu” и типом Ubuntu_64:
sudo VBoxManage createvm --name "Ubuntu" --ostype Ubuntu_64 --registerВыделим RAM и создадим виртуальный диск. В примере — 4 ГБ RAM и 32 ГБ виртуального HDD (VDI):
sudo VBoxManage modifyvm "Ubuntu" --memory 4096
sudo VBoxManage createhd --filename "Ubuntu.vdi" --size 32000Настроим количество vCPU (подразумевайте, что это потоки/threads):
sudo VBoxManage modifyvm "Ubuntu" --cpus 2Создаём контроллер SAS и прикрепляем диск (в GUI это делается автоматически):
sudo VBoxManage storagectl "Ubuntu" --name "SAS Controller" --add sas --controller LSILogicSAS
sudo VBoxManage storageattach "Ubuntu" --storagectl "SAS Controller" --port 0 --device 0 --type hdd --medium "Ubuntu.vdi"
sudo VBoxManage storagectl "Ubuntu" --name "SAS Controller" --hostiocache onПодключим ISO‑накопитель с установочным образом (пример пути: /home/user/Ubuntu.iso — замените на свой):
sudo VBoxManage storagectl "Ubuntu" --name "IDE Controller" --add ide --controller PIIX4
sudo VBoxManage storageattach "Ubuntu" --storagectl "IDE Controller" --port 0 --device 0 --type dvddrive --medium "/home/user/Ubuntu.iso"Включим оптимизации производительности:
sudo VBoxManage modifyvm "Ubuntu" --nestedpaging on
sudo VBoxManage modifyvm "Ubuntu" --largepages onПримечание о больших страницах (largepages): они требуют поддержки со стороны хоста и соответствующих настроек в системе (hugepages), иначе включение не даст эффекта.
3. Настройка сети: Выбор и создание NAT Network
Типы сетей в VirtualBox (коротко):
- NAT — самый простой; VM выходит в интернет через NAT хоста. По умолчанию нет входящих соединений.
- NAT Network — NAT, но общая подсеть для нескольких ВМ (VM могут общаться друг с другом).
- Bridged — VM получает IP в вашей физической сети (лучше для интеграции в LAN).
- Internal/Host‑Only — изолированные сети; Host‑Only позволяет общение с хостом, но не с интернетом.
В этом руководстве используем NAT Network — гибко и удобно.
Создадим NAT Network на подсети 10.0.0.0/24 и запустим её:
sudo VBoxManage natnetwork add --netname natnet1 --network "10.0.0.0/24" --enable
sudo VBoxManage natnetwork start --netname natnet1Привяжем сеть к VM:
sudo VBoxManage modifyvm "Ubuntu" --nic1 natnetwork --nat-network1 natnet1Если нужно задать статический IP гостя в этой подсети, можно настроить DHCP или вручную внутри гостевой ОС. По умолчанию VirtualBox выдаёт IP через собственный DHCP сервера NAT Network.
4. Доступ к VM на headless‑сервере: VRDE (RDP)
Поскольку сервер headless, после старта VM мы не сможем подключиться к инсталлятору без передачи видео. Для этого включаем VRDE — удалённый RDP‑сервер VirtualBox (поставляется через Extension Pack).
Включаем VRDE и устанавливаем порт (например, 5587):
sudo VBoxManage modifyvm "Ubuntu" --vrde on
sudo VBoxManage modifyvm "Ubuntu" --vrdeport 5587Запускаем VM в headless режиме (без открытия GUI на хосте):
sudo VBoxManage startvm "Ubuntu" --type headlessПодключитесь с любого RDP‑клиента к хоста:5587. По умолчанию VRDE может запросить логин; стандартно — пользователь “admin” и пустой пароль, но это зависит от конфигурации. Настоятельно рекомендуется установить пароль и ограничить доступ firewall’ом.
Важно: headless не означает отсутствие видеовыхода в гостевой ОС — это режим запуска на хосте без локального окна.
5. Проброс портов (port forwarding) после установки
Когда установка завершена, эффективнее управлять гостем по SSH и выключить VRDE. Для этого пробрасываем порты из хоста в гостя через NAT Network.
Пример: пробросить порт 2200 хоста на порт 22 гостя (guest IP 10.0.0.2):
sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "ssh:tcp:[]:2200:[10.0.0.2]:22"Пример проброса RDP (если гостевая ОС использует RDP сервер) с порта 5589 на хосте на порт 3389 гостя:
sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "rdp:tcp:[]:5589:[10.11.0.2]:3389"Удаление правила по имени (название — первая часть до “:”):
sudo VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete rdpПосле проверки SSH/RDP можно выключить VRDE на VM:
sudo VBoxManage modifyvm "Ubuntu" --vrde offЕсли вы используете UFW/iptables/firewalld на хосте — не забудьте открыть соответствующие порты (2200, 5589 и т. п.).
6. Полезные дополнительные команды
Просмотреть список ВМ и состояния:
VBoxManage list vms
VBoxManage list runningvmsОстановить VM (ACPI shutdown или poweroff):
sudo VBoxManage controlvm "Ubuntu" acpipowerbutton
sudo VBoxManage controlvm "Ubuntu" poweroffСнэпшоты и бэкап:
sudo VBoxManage snapshot "Ubuntu" take "before-upgrade"
sudo VBoxManage clonemedium disk "Ubuntu.vdi" "Ubuntu-backup.vdi"Информация о сети VM:
VBoxManage showvminfo "Ubuntu"7. Отладка и типичные ошибки
Важно: часто проблемы связаны с версией Extension Pack, правами и firewall.
Сценарии и решения:
- VRDE не отвечает: проверьте, установлен ли Extension Pack соответствующей версии; проверьте правило firewall на хосте; попробуйте удалить VNC‑extpack, если он конфликтует.
- Ошибка при старте диска: проверьте, что контроллер (SAS/IDE) создан и диск правильно прикреплён.
- VM не получает IP: проверьте natnetwork запущен ли, проверьте DHCP VirtualBox или настройте статический IP внутри гостя.
- Не видно VM в GUI: если VM создана от root, GUI, запущенный под другим пользователем, не увидит эту VM. Запустите GUI от того же пользователя, что и VM (root), или создайте ВМ от обычного пользователя.
Краткий чеклист отладки:
- Проверьте VBoxManage -v → версии совпадают с Extension Pack
- VBoxManage list natnets → натсети видны
- journalctl/syslog → ошибки VirtualBox
- Проверка firewall/selinux → разрешить порты
8. Безопасность и рекомендации по эксплуатации
- Пароли и доступ: не оставляйте VRDE с пустым паролем. Ограничьте доступ по IP в firewall.
- SSH: используйте ключи SSH, отключите root‑логин по паролю в госте.
- Бэкап: регулярно делайте снимки перед апгрейдом гостя и копируйте VDI на удалённое хранилище.
- Обновления: обновляйте VirtualBox и Extension Pack синхронно.
- Сегментация сети: храните тестовые ВМ в отдельной NAT Network, не в bridged с production‑сетями.
Рекомендация: если вы планируете длительно эксплуатировать множество ВМ в продакшене, рассмотрите KVM/Proxmox/ESXi — они лучше масштабируются и дают больший контроль безопасности.
9. Альтернативы и когда VirtualBox не подходит
Когда не выбирать VirtualBox:
- Нужна максимальная производительность и минимальные overhead — выбирайте KVM/QEMU с virtio.
- Нужна совместная инфраструктура для нескольких хостов — рассматривайте Proxmox, oVirt или VMware vSphere.
- Планируется масштабирование на десятки/сотни хостов — корпоративные гипервизоры дают централизованное управление.
Коротко про QEMU/KVM: обеспечивает лучшую интеграцию с Linux, поддерживает live‑migration и SR‑IOV, но требует большей экспертизы.
10. Роль‑ориентированные чеклисты
Для системного администратора (быстрый набор задач):
- Установить VirtualBox и Extension Pack той же версии
- Создать natnetwork и задать подсеть
- Создать VM, диск, контроллеры
- Настроить VRDE и/или проброс портов
- Настроить firewall и SSH ключи
- Сделать snapshot перед критическими операциями
Для разработчика/инженера DevOps:
- Подготовить cloud‑init/ansible playbook для настройки гостя
- Добавить VM в CI/CD (если нужно) или автоматизированный бэкап
- Тестировать откат по snapshot
- Документировать используемые порты и адреса
11. SOP: быстрый план запуска VM из CLI (playbook)
- apt-get install virtualbox
- Проверить VBoxManage -v
- Скачайте Extension Pack версии X.Y.Z и установите extpack
- Создать natnetwork и запустить его
- Создать VM, диск, контроллеры, прикрепить ISO
- Настроить VRDE и порты или проброс SSH
- Start VM –type headless
- Подключиться по RDP и завершить установку гостя
- Настроить SSH в госте, отключить VRDE при необходимости
- Сделать snapshot
12. Критерии приёмки
- VM успешно запускается в headless режиме
- После установки гостевой ОС доступен SSH по проброшенному порту
- VRDE отключён или защищён паролем, если не используется
- Сделан snapshot и резервная копия диска
- Журналы запуска без ошибок критического уровня
13. Мини‑чеклист тестирования (acceptance)
- Проверить, что VBoxManage list runningvms показывает нужную ВМ
- Установить соединение SSH на порт хоста 2200 → отвечает guest
- Попросить коллегу подключиться извне — проверить firewall
- Выполнить остановку и запуск VM, убедиться, что состояние восстанавливается
14. Терминология (глоссарий)
- Host — физический сервер, на котором установлен VirtualBox
- Guest — виртуальная машина
- VRDE — VirtualBox Remote Desktop Extension (RDP‑сервер)
- NAT Network — виртуальная сеть VirtualBox с NAT и DHCP
- VDI — формат виртуального диска VirtualBox
15. Рекомендации по миграции и совместимости
- При обновлении VirtualBox на хосте — одновременно обновляйте Extension Pack
- При переносе VDI на другой хост — используйте VBoxManage clonemedium и проверьте версии VBox
- Создавайте VMs от нерутового пользователя, если планируете управлять ими через GUI под этим пользователем
16. Заключение и советы
VirtualBox в режиме CLI на headless‑сервере — надёжный инструмент для небольших сред, тестирования и быстрых лабораторных развёртываний. Для продакшн‑инфраструктуры с высокими требованиями по производительности и масштабируемости следует рассмотреть KVM/Proxmox/ESXi.
Важно: всегда тестируйте процессы резервного копирования и отката, а также защищайте доступ к управлению VM и портам RDP/SSH.
Если вы хотите, могу подготовить примеры Ansible‑скриптов для автоматизации создания VM и проброса портов, или Mermaid‑диаграмму сети для вашей инфраструктуры.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента