Как я могу заставить несколько виртуальных машин взаимодействовать в одной сети, используя VirtualBox и Ubuntu 16.04?

Я работаю над завершением лаборатории кибербезопасности (лаборатория разработана SEEDLab из Сиракузского университета), которая имитирует локальную DNS-атаку. Я должен создать три виртуальные машины для проведения безопасных тестов: server_VM, user_VM и attacker_VM. Я использую VirtualBox под управлением Ubuntu 16.04.

Я создал виртуальные машины, и теперь мне нужно запускать их одновременно, переключаясь между ними одновременно, чтобы вводить команды в терминал Ubuntu. Когда я пытаюсь запустить их одновременно, я получаю следующее сообщение:

Failed to open a session for the virtual machine User. Locking of attached media failed. A possible reason is that one of the media is attached to a running VM. Result Code: VBOX_E_INVALID_OBJECT_STATE (0x80BB0007) Component: SessionMachine Interface: IMachine {b2547866-a0a1-4391-8b86-6952d82efaa0} How do I go about getting the VMs to run simultaneously so that I can communicate with each one by way of command line? 

Я просто пытаюсь запустить и запустить виртуальные машины, и был бы доволен, если бы я мог просто заставить это работать на этом этапе. Большое спасибо.

Дополнительная информация:

Я использую сетевой режим по умолчанию (NAT) для каждой из виртуальных машин. Здесь приведены ссылки на описание локальной лаборатории DNS конкретного лабораторного сайта, а также на PDF-файл, в котором приведены лабораторные инструкции с инструкциями локальной лаборатории DNS .

Ваши сообщения об ошибках вызваны тем, что виртуальная машина использует тот же носитель.
Это может быть потому, что вы использовали один и тот же образ виртуального жесткого диска для виртуальных машин, и это не сработает. Каждой виртуальной машине нужен собственный виртуальный жесткий диск.
Другая возможность заключается в том, что установочный носитель (файл ISO) для Ubuntu связан со всеми 3 виртуальными машинами во время их работы. Этот ISO нужен только для базовой установки, поэтому после завершения установки первой виртуальной машины вы можете отключить ISO и использовать его для второй виртуальной машины.

Что касается сетевой части: настройки виртуальной машины как NAT размещаются в виртуальной сети с использованием ip-диапазона 10.0.0.x. Virtualbox настроит dhcp для этой подсети и обеспечит пересылку DNS и подобных сообщений на обычный DNS. Это делается на основе конфигурации сети хост-системы, поэтому требуется правильная настройка.
В качестве альтернативы вы можете также настроить сеть только для хоста между виртуальными машинами. В этом случае виртуальная машина работает в изолированной сети, которая видна только виртуальной машине и хосту.
В любом случае обратитесь к превосходному руководству Virtualbox. Он имеет обширный раздел по работе с сетью, включая команды (только для командной строки), которые предоставляют гораздо больше возможностей, чем конфигурация графического интерфейса.

Если вы используете Vagrant, вы можете использовать следующий Vagrantfile который предоставит 3 блока (Ubuntu 16.04).

 $ cat Vagrantfile # -*- mode: ruby -*- # vi: set ft=ruby : ############## ### References # - https://www.vagrantup.com/docs/vagrantfile/machine_settings.html # - https://www.vagrantup.com/docs/vagrantfile/tips.html # - https://www.vagrantup.com/docs/networking/forwarded_ports.html ############## #unless Vagrant.has_plugin?("HostManager") # raise 'HostManager plugin not installed!' #end image = "ubuntu/xenial64" Vagrant.configure("2") do |config| vboxName1 = "box-101" hostname1 = "box1" config.vm.define "#{vboxName1}" do |box| box.vm.box = "#{image}" #box.vm.network :private_network, ip: "192.168.56.101" box.vm.network :public_network, use_dhcp_assigned_default_route: true box.vm.provider :virtualbox do |v| v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] v.customize ["modifyvm", :id, "--memory", 512] v.customize ["modifyvm", :id, "--name", "#{hostname1}"] end end vboxName2 = "box-102" hostname2 = "box2" config.vm.define "#{vboxName2}" do |box| box.vm.box = "#{image}" #box.vm.network :private_network, ip: "192.168.56.103" box.vm.network :public_network, use_dhcp_assigned_default_route: true box.vm.provider :virtualbox do |v| v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] v.customize ["modifyvm", :id, "--memory", 512] v.customize ["modifyvm", :id, "--name", "#{hostname2}"] end end vboxName3 = "box-103" hostname3 = "box3" config.vm.define "#{vboxName3}" do |box| box.vm.box = "#{image}" #box.vm.network :private_network, ip: "192.168.56.103" box.vm.network :public_network, use_dhcp_assigned_default_route: true box.vm.provider :virtualbox do |v| v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] v.customize ["modifyvm", :id, "--memory", 512] v.customize ["modifyvm", :id, "--name", "#{hostname3}"] end end end 

Чтобы использовать это:

 # launches all VMs $ vagrant up # ssh into box-101 $ vagrant ssh box-101 

Для получения дополнительной информации об использовании vagrant обратитесь к использованию:

 $ vagrant