18 февраля 2017 г.

Как создать и запустить VirtualBox VM без графического интерфейса

Появилась у меня недавно необходимость оптимизировать количество серверов. В серверной у нас расположены два сервера. На одном из них работает система мониторинга The Dude, запущенная на Windows Server 2003. Второй сервер выполняет роль файл-сервера и на нем так же установлен Windows Server 2003. Было решено объединить два этих сервера. По иронии судьбы на сервере, куда предпологалось все это переносить, тоже установлен Windows Server 2003. Поддержка Windows Server 2003 закончилась 14 июля 2015. Поэтому от данной операционной системы пришлось отказаться. Решил на новом сервере установить в качестве операционной системы что-нибудь из Linux подобного. В качестве операционной системы был выбран CentOS. От The Dude отказываться не хотелось т.к. данная система мониторинга за долгое время очень хорошо себя зарекомендовала, но ее так же хотелось бы обновить. Я уже знал, что серверная часть The Dude давно не обновлялась и она может быть установлена на некоторые устройства MikroTik или же на RouterOS x86. Вот для этого и пришлось устанавливать VirtualBox на CentOS, чтобы установить RouterOS x86. Как мне это удалось опишу ниже.

Установка пакетов

Итак, у нас имеется сервер с установленным CentOS 6.8 без графической оболочки и на нем надо установить VirtualBox, чтобы поднять там виртуальную машину, в моем случае RouterOS x86 с системой мониторинга The Dude. Сразу хочу дать небольшое пояснение, что здесь я не буду описывать путь установки CentOS и RouterOS x86. Я опишу только как установить VirtualBox, создать виртуальную машину и настроить удаленный доступ к ней. Прежде чем установить VirtualBox необходимо установить исходники ядра, dkms и несколько пакетов для разработчиков.
yum install dkms kernel-headers gcc make perl
Пакет dkms для CentOS находится в репозитории EPEL, поэтому его необходимо подключить прежде чем устанавливать dkms. Далее необходимо подключить репозиторий Oracle с VirtualBox и установить VirtualBox.
cd /etc/yum.repos.d/
wget http://download.virtualbox.org/virtualbox/rpm/el/virtualbox.repo
yum install VirtualBox-5.1
Также необходимо скачать и установить Extension Pack для VirtualBox. Extension Pack установить необходимо т.к. там содержится VRDE Plugin, через который можно будет получить удаленный доступ к виртуальной машине.
wget http://download.virtualbox.org/virtualbox/5.1.14/Oracle_VM_VirtualBox_Extension_Pack-5.1.14-112924.vbox-extpack
vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-5.1.14-112924.vbox-extpack
Все необходимое ПО установлено, но остался небольшой штрих. Необходимо собрать модули VirtualBox.
service vboxdrv setup

Создание виртуальной машины

Все готово для того, чтобы создать виртуальну машину. Для виртуальных машин я создал отдельный каталог на отдельном разделе от операционной системы и виртуальные машины устанавливаю туда.
mkdir -p /srv/vbox_vms
Теперь приступим к созданию виртуальной машины и ее настройке.
vboxmanage createvm dude --basefolder /srv/vbox_vms --register
Эта команда создает виртуальную машину с именем dude, указывает родительский каталог и регистрирует машину. Все файлы этой машины будут находится в каталоге /srv/vbox_vms/dude. Теперь эту машину необходимо начинить некоторым железом.
vboxmanage storagectl dude --name "IDE Controller" --add ide
vboxmanage createmedium disk --filename /srv/vbox_vms/dude/dude.vdi --size 2048
vboxmanage storageattach dude --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /srv/vbox_vms/dude/dude.vdi
С помощью этих трех команд создается контроллер типа ide с именем IDE Controller, потом создается жесткий диск размером 2Gb и подключается на контроллер IDE Controller. Так как изначально на новой виртуальной машине нет установленной операционной системы, то необходимо подключить какой-нибудь загрузочный диск.
vboxmanage storageattache dude --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /srv/software/mikrotik-6.38.1.iso
Вот такой, в очередной раз длиннной, командой подключается образ загрузочного CD диска. При создании виртуальной машины по умолчанию загрузка с CD диска происходит раньше, чем с HDD диска. Также в виртуальную машину, если необходимо, надо добавить сетевой адаптер.
vboxmanage modifyvm dude --nic1 nat
Таким образом создается сетевой адаптер доступ к внешнему миру, который будет происходить через NAT. Еще на виртуальной машине я отключил audio т.к. оно мне без надобности.
vboxmanage modifyvm dude --audio none

Настройка удаленного доступа к виртуальной машине

Далее надо настроить удаленный доступ к виртуальной машине. Доступ будем настраивать по RDP.
vboxmanage modifyvm dude --vrde on --vrdeaddress 10.43.137.60
Этой командой включается удаленный доступ к виртуальной машине и указывается IP адрес хостовой машины, на котором будет слушаться порт 3389. Если на хостовой машине входящие правила iptables по умолчанию запрещающие, то не забудьте добавить разрешающее правило для соединения на порт 3389.
iptables -A INPUT -p tcp -dport 3389 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
Вот в принципе виртуальная машина готова к запуску. Пробуем запускать.
vboxmanage startvm dude --type headless
Этой командой запускается виртуальная машина без графической оболочки VirtualBox. Можно пробовать подключиться к хостовой машине с помощью RDP клиента на порт 3389. При успешном подключении можно будет увидеть, что виртуальная машина запустилась с CD диска и запустилась установка операционной системы.

Заключение

По умолчанию внутренняя сеть для виртуальных машин в VirtualBox выделяется из пула 10.0.2.0/0. И первый адрес, который выделяется DHCP начинается с 10.0.2.15. Шлюзом этих машин является 10.0.2.2. Это необходимо учесть, если Вы будете устанавливать операционную систему без автоматического получения IP адреса.
Чтобы пробросить определенный порт с хостовой машины на виртуальную машину необходимо в виртуальную машину добавить правило. К примеру как я пробросил SSH доступ на Router OS x86 в VirtualBox.
vboxmanage modifyvm dude --natpf1 dude_ssh,tcp,10.43.137.60,2222,10.0.2.15,22
Данная команда добавляет правило dude_ssh, которое открывает на прослушивание порт 2222 на хостовой машине с IP адресом 10.43.137.60 и переназначает все соединения, приходящие на этот порт, на порт 22 виртуальной машины с IP адресом 10.0.2.15. Не забываем прописать разрешающее правило на порт 2222 хостовой машины в iptables.
iptables -A INPUT -p tcp -dport 2222 -m state --state NEW -s 0.0.0.0/0 -j ACCEPT
Вот таким образом была настроена виртуальная машина и удаленный доступ к ней в VirtualBox без графической оболочки.

Комментариев нет:

Отправить комментарий