web-dev-qa-db-ja.com

VirtualBoxとUbuntu16.04を使用して、複数の仮想マシンを同じネットワーク上で通信させるにはどうすればよいですか?

私は、ローカルDNS攻撃をシミュレートするサイバーセキュリティラボ(このラボはシラキュース大学のSEEDLabによって開発されています)の完成に取り組んでいます。安全なテストを実行するために、server_VM、user_VM、attacker_VMの3つの仮想マシンを作成することになっています。 Ubuntu16.04を実行しているVirtualBoxを使用しています。

VMを作成しましたが、Ubuntuターミナルにコマンドを入力するために、VMを同時に実行し、VMを同時に切り替える必要があります。それらを同時に実行しようとすると、次のメッセージが表示され続けます。

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?

私は仮想マシンを稼働させようとしているだけで、この時点でそれを機能させることができれば満足しています。どうもありがとう。

その他の情報:

各VMにデフォルトのネットワークモード(NAT)を使用しています。特定のラボサイトへのリンク ローカルDNSラボの説明 、およびラボの説明を提供するpdfへのリンク ローカルDNSラボの説明

1
reverb1010

エラーメッセージは、VMが同じメディアを使用していることが原因で発生します。
これは、VMに同じ仮想ハードディスクイメージを使用していて、それが機能しないことが原因である可能性があります。各VMには独自の仮想ハードディスクが必要です。
もう1つの可能性は、Ubuntuのインストールメディア(ISOファイル)が実行中に3つのVMすべてにリンクされていることです。このISOは基本インストールにのみ必要なので、最初のVM)のインストールが完了したら、ISOを切断して、2番目のVMに使用できます。

ネットワーク部分について:VMのNATとしてのセットアップは、10.0.0.x ip-rangeを使用して仮想ネットワークに配置されます。Virtualboxはそのサブネットのdhcpをセットアップし、DNSなどを確認します。通常のDNSに転送されます。これは、ホストシステムのネットワーク構成に基づいて行われるため、正しくセットアップする必要があります。
別の方法として、VM間にホストオンリーネットワークをセットアップすることもできます。この場合、VMは、VMとホストにのみ表示される分離されたネットワークで実行されます。
いずれにせよ、優れたVirtualboxマニュアルを参照してください。 GUI構成よりもはるかに多くの可能性を可能にする(コマンドラインのみの)コマンドを含む、ネットワーキングに関する広範なセクションがあります。

2
Tonny

Vagrantを使用する場合は、次のVagrantfileを使用して、3つのボックスをプロビジョニングできます(Ubuntu16.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
1
slm