Я пытаюсь, чтобы 3 виртуальные машины VirtualBox работали одновременно на одном хосте (хост Windows, гость Ubuntu), чтобы я мог протестировать работу кластеров различных сервисов.

Проблема в том, что я не могу правильно настроить сетевую конфигурацию виртуальных машин VirtualBox.

Мне нужно: 1) Все три гостя могут получить доступ к Интернету 2) Все три гостя могут получить доступ к хосту отдельно, а хост может получить доступ ко всем трем гостям отдельно (т.е. каждый хост имеет свой уникальный IP-адрес, как если бы они были полностью независимыми серверами )

Я не могу заставить это работать. Я пытаюсь с двумя сетевыми адаптерами на каждой коробке, один NAT (для доступа в Интернет) и другой сети только для хоста (для связи с хостом). Я вроде получил это работает; хотя это удар или беспорядок ... иногда, когда гости загружаются, они отказываются активировать одно из двух подключений, застревая в строке "Запуск задания для повышения сетевых интерфейсов" в загрузке, затем один из интерфейсов не не начинай Однако, когда это работает, все три гостя получают одинаковый IP-адрес на обоих интерфейсах. И да, я проверил - у них разные MAC-адреса.

Как я могу это исправить, и чтобы три гостя последовательно преуспели в настройке своих сетей, и чтобы все три гостя имели свои собственные IP-адреса, при этом обеспечивая доступ всех трех гостей к Интернету?

1 ответ1

0

Серьезно, используйте Vagrant для этого. Он отлично справляется со вторым сетевым адаптером. Вот пример Vagrantfile, который я использую с Docker Swarm:

$prepare_swarm_manager_script = <<SCRIPT
<<<shell commands>>>
SCRIPT

$prepare_swarm_node_script = <<SCRIPT
<<<shell commands>>>
SCRIPT

Vagrant.configure(2) do |config|
  config.vm.define "swarm_manager" do |config|
    config.vm.box = "ubuntu/xenial64"
    config.vm.hostname = "swarm-manager"
    config.vm.network "private_network", ip: "10.0.7.11"
    config.vm.provision "shell", inline: $prepare_swarm_manager_script
  end

  config.vm.define "swarm_node1" do |config|
    config.vm.box = "ubuntu/xenial64"
    config.vm.hostname = "swarm-node1"
    config.vm.network "private_network", ip: "10.0.7.12"
    config.vm.provision "shell", inline: $prepare_swarm_node_script
  end

  config.vm.define "swarm_node2" do |config|
    config.vm.box = "ubuntu/xenial64"
    config.vm.hostname = "swarm-node2"
    config.vm.network "private_network", ip: "10.0.7.13"
    config.vm.provision "shell", inline: $prepare_swarm_node_script
  end

Команды оболочки выполняются как пользователь ubuntu (поэтому используйте sudo). Тогда иди в vagrant up и получай пиво.

Но ключевая информация здесь заключается в том, что вы добавляете сетевой адаптер только для хоста перед каждой установкой виртуальной машины и в глобальных настройках виртуальной коробки проверяете настройки сетевого адаптера только для хоста (это то, что Vagrant обрабатывает для вас). При правильной настройке подсети они могут видеть друг друга

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .