Ubuntu Server в VirtualBox: создание виртуальной машины и настройка сети
Разворачиваем Ubuntu Server в VirtualBox для учёбы и тестов: параметры виртуальной машины, установка без графики, разбор сетевых режимов NAT и «сетевой мост», проброс порта для SSH с хоста и снапшоты, которые позволяют ломать систему без последствий.
Виртуальная машина — правильный способ учиться администрированию: сломать систему здесь не страшно, а откат к рабочему состоянию занимает секунды. Разбираем создание виртуалки с Ubuntu Server в VirtualBox, а главное — сетевые режимы, на которых чаще всего застревают, когда пытаются зайти на неё по SSH.
Готовим образ и хост
Скачиваем ISO Ubuntu Server с официального сайта и обязательно сверяем контрольную сумму — файл большой, а битая загрузка проявится уже на середине установки:
sha256sum ubuntu-24.04-live-server-amd64.iso
Хеш сравнивают с SHA256SUMS со страницы загрузки.
В BIOS/UEFI хоста должна быть включена аппаратная виртуализация: Intel VT-x или AMD-V. Без неё VirtualBox откажется запускать 64-битную гостевую систему. Проверить на Linux-хосте:
grep -Eoc '(vmx|svm)' /proc/cpuinfo
Ноль означает, что виртуализация выключена в прошивке либо не поддерживается. На Windows частая причина — включённый Hyper-V, который забирает аппаратную виртуализацию себе: VirtualBox тогда работает медленно или не стартует.
Создаём виртуальную машину
Параметры, с которых стоит начинать:
| Параметр | Значение | Комментарий |
|---|---|---|
| Тип / версия | Linux / Ubuntu (64-bit) | |
| Память | 2048 МБ | Минимум 1024, для стенда с сервисами — 4096 |
| Процессоры | 2 | Больше половины ядер хоста отдавать не стоит |
| Диск | 25 ГБ, динамический | Файл растёт по мере заполнения |
| Тип диска | VDI | Формат VirtualBox по умолчанию |
Динамический диск занимает на хосте только фактически используемое место — для стенда это правильный выбор. Фиксированный чуть быстрее, но сразу резервирует весь объём.
Дальше подключаем ISO: «Настройки → Носители → Контроллер IDE → выбрать образ диска».
Полезно сразу отключить лишнее: аудио и USB-контроллер серверу не нужны и только тратят ресурсы.
То же самое из командной строки, если удобнее:
VBoxManage createvm --name ubuntu-server --ostype Ubuntu_64 --register
VBoxManage modifyvm ubuntu-server --memory 2048 --cpus 2 --audio-driver none --usb off
VBoxManage createmedium disk --filename ~/VMs/ubuntu-server.vdi --size 25600 --format VDI
VBoxManage storagectl ubuntu-server --name SATA --add sata --controller IntelAhci
VBoxManage storageattach ubuntu-server --storagectl SATA --port 0 --device 0 --type hdd --medium ~/VMs/ubuntu-server.vdi
VBoxManage storageattach ubuntu-server --storagectl SATA --port 1 --device 0 --type dvddrive --medium ~/iso/ubuntu-24.04-live-server-amd64.iso
Выбираем сетевой режим
Это ключевой момент, и именно здесь чаще всего возникают вопросы вида «виртуалка видит интернет, а я не могу к ней подключиться».
| Режим | Гость → интернет | Хост → гость | Гость виден в локальной сети |
|---|---|---|---|
| NAT | да | только через проброс портов | нет |
| Сетевой мост | да | да | да, со своим IP от роутера |
| Виртуальный адаптер хоста | нет | да | нет |
| Внутренняя сеть | нет | нет | нет, только между ВМ |
NAT стоит по умолчанию. Гость выходит в интернет, но снаружи невидим — включая ваш собственный хост. Это безопасно и не требует настройки, но чтобы зайти по SSH, нужен проброс порта.
Сетевой мост делает виртуалку полноценным узлом вашей сети: она получает адрес от того же роутера, что и остальные устройства, и доступна с любого из них. Самый удобный режим для стенда, к которому нужно подключаться. Важно понимать, что при этом машина становится видна всей локальной сети — со всеми последствиями, если на ней слабый пароль.
Внутренняя сеть пригодится, когда моделируете взаимодействие нескольких серверов между собой без выхода наружу.
Никто не мешает добавить два адаптера: первый NAT для интернета, второй — виртуальный адаптер хоста для доступа с хост-машины. Это классическая связка для лабораторий.
Проброс порта при NAT
Если оставляете NAT, добавьте правило: «Настройки → Сеть → Адаптер 1 → Дополнительно → Проброс портов».
| Имя | Протокол | Порт хоста | Порт гостя |
|---|---|---|---|
| ssh | TCP | 2222 | 22 |
Из командной строки:
VBoxManage modifyvm ubuntu-server --natpf1 "ssh,tcp,,2222,,22"
После этого подключение идёт на localhost хоста:
ssh -p 2222 user@127.0.0.1
Порт хоста берут нестандартный (2222), чтобы не конфликтовать с SSH самого хоста, если он запущен.
По той же схеме пробрасывают порты веб-сервера — например, http,tcp,,8080,,80, и сайт с виртуалки открывается на http://localhost:8080.
Ставим систему
Загрузка с ISO запускает обычный установщик Ubuntu Server. Полный разбор шагов инсталлятора — в статье про установку Ubuntu Server 24.04, здесь только отличия для виртуалки:
- Разметка диска — соглашайтесь с автоматической разметкой всего диска. LVM в виртуалке полезен: позже можно расширить диск без переустановки.
- OpenSSH — обязательно отметьте «Install OpenSSH server», иначе подключиться не получится и придётся ставить его через консоль VirtualBox.
- Snap-пакеты на этапе установки не выбирайте: на стенде они не нужны, а места занимают заметно.
После установки извлеките ISO из виртуального привода, иначе машина снова загрузится в установщик:
VBoxManage storageattach ubuntu-server --storagectl SATA --port 1 --device 0 --type dvddrive --medium none
Первый вход — и дальше по чек-листу первых шагов.
Узнаём адрес виртуалки
В консоли гостя:
ip -4 a
hostname -I
При NAT адрес будет из сети 10.0.2.x — он локален для виртуалки и снаружи не маршрутизируется. При мосте — адрес из вашей домашней сети, например 192.168.1.х, и к нему можно подключаться напрямую:
ssh user@192.168.1.42
Если при мостовом режиме адрес не получен, проверьте, что в настройках адаптера выбран тот самый физический интерфейс хоста, через который у вас интернет — при переключении с Wi-Fi на кабель его нужно менять. Диагностика сети — в статьях про netplan и DNS.
Guest Additions: нужны ли серверу
Гостевые дополнения дают общие папки, буфер обмена и корректное время. Для сервера без графики польза ограничена, но общие папки бывают удобны.
sudo apt install -y build-essential dkms linux-headers-$(uname -r)
Затем «Устройства → Подключить образ диска Дополнений гостевой ОС» и:
sudo mount /dev/cdrom /mnt
sudo /mnt/VBoxLinuxAdditions.run
sudo reboot
Общая папка настраивается в параметрах ВМ, а в гостевой системе монтируется так:
sudo mkdir -p /mnt/share
sudo mount -t vboxsf share /mnt/share
Чтобы монтировалась автоматически, добавляют строку в /etc/fstab:
share /mnt/share vboxsf defaults,uid=1000,gid=1000 0 0
Пользователю нужно состоять в группе vboxsf: sudo usermod -aG vboxsf $USER. Про синтаксис записей — в статье про fstab.
Снапшоты — главная причина учиться на виртуалке
Снимок состояния позволяет вернуть систему к любому моменту. Это то, чего нет на живом сервере, и именно поэтому на виртуалке не страшно ставить эксперименты.
VBoxManage snapshot ubuntu-server take "clean-install" --description "Чистая система после установки"
VBoxManage snapshot ubuntu-server list
VBoxManage snapshot ubuntu-server restore "clean-install"
Разумная привычка — снимать снапшот перед каждым рискованным шагом: до rm -rf, до правки fstab, до обновления релиза. Если что-то сломается, откат займёт секунды, а разбор поломки останется добровольным упражнением, а не аварией.
Снапшоты занимают место на хосте и замедляют дисковые операции, когда их накапливается много, — старые лучше удалять.
Типовые проблемы
Виртуалка не стартует, ошибка про VT-x. Аппаратная виртуализация выключена в BIOS или занята другим гипервизором. На Windows проверьте, не включён ли Hyper-V (в том числе через WSL2 и «Изоляцию ядра») — он забирает VT-x себе.
Только 32-битные системы в списке ОС. Тот же признак: виртуализация недоступна.
Не подключается SSH при NAT. Проброс порта не настроен либо подключаетесь не туда: адрес — 127.0.0.1 на хосте и порт хоста (2222), а не адрес виртуалки.
Сеть работает, а имена не разрешаются. Проблема с DNS, а не с сетью: ping 1.1.1.1 пройдёт, ping ubuntu.com — нет. Смотрите resolvectl status.
Мало места на диске виртуалки. Диск расширяют на выключенной машине, затем внутри гостя увеличивают раздел и файловую систему:
VBoxManage modifymedium disk ~/VMs/ubuntu-server.vdi --resize 51200
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
Первая команда отдаёт логическому тому всё свободное место группы, вторая растягивает файловую систему. Про тома — в статье про LVM, про разделы — про lsblk.
Тормозит. Проверьте, что выделено минимум 2 ядра, включён PAE/NX и что снапшотов не накопилось десяток.
Частые вопросы
Сколько памяти и места выделять виртуалке с Ubuntu Server?
Для системы без графики достаточно 1–2 ГБ памяти и 25 ГБ диска. Если планируете разворачивать базу, веб-сервер и контейнеры одновременно — 4 ГБ памяти и 40 ГБ диска.
Диск выбирайте динамический: он занимает на хосте ровно столько, сколько реально заполнено внутри гостя.
Какой сетевой режим выбрать в VirtualBox?
Если нужно только чтобы виртуалка ходила в интернет — NAT, он стоит по умолчанию и безопасен. Если нужно подключаться к ней по SSH с хоста или других устройств — «Сетевой мост»: машина получит адрес от вашего роутера.
Компромисс для лаборатории — два адаптера: NAT для интернета плюс «виртуальный адаптер хоста» для доступа с хост-машины.
Как подключиться по SSH к виртуалке за NAT?
Настроить проброс портов: порт хоста 2222 → порт гостя 22. В командной строке это VBoxManage modifyvm имя --natpf1 "ssh,tcp,,2222,,22".
Затем подключаться на адрес самого хоста: ssh -p 2222 user@127.0.0.1. Обращаться к адресу виртуалки из сети 10.0.2.x бесполезно — он снаружи не маршрутизируется.
Нужно ли ставить Guest Additions на Ubuntu Server?
Не обязательно. Основная их польза — общие папки, буфер обмена и подстройка разрешения экрана, а серверу без графики нужны в лучшем случае общие папки.
Если папки не нужны, можно обойтись без них: обмен файлами с хостом проще организовать через scp или rsync — см. статью про копирование файлов.
Чем виртуалка отличается от реального сервера для обучения?
Всем, кроме железа: те же пакеты, те же конфиги, тот же systemd. Разница в том, что на виртуалке есть снапшоты — можно откатить любую ошибку за секунды.
Не тренируются на виртуалке только вещи, завязанные на физику: работа с RAID-контроллером, замена дисков, IPMI. Всё остальное переносится на боевой сервер один в один.
Что запомнить
- Для 64-битного гостя нужна аппаратная виртуализация; на Windows её часто забирает включённый Hyper-V.
- NAT изолирует виртуалку — для SSH с хоста нужен проброс порта; «Сетевой мост» даёт машине адрес от роутера и прямой доступ.
- Отмечайте «Install OpenSSH server» в инсталляторе, иначе подключаться придётся через консоль VirtualBox.
- После установки извлеките ISO из привода, иначе машина снова загрузится в установщик.
- Снимайте снапшот перед каждым рискованным шагом — это главное преимущество стенда перед боевым сервером.