Como fazer uma ponte de rede simples no Vagrant?

1

Estou tentando configurar a demonstração de ponte de rede mais básica no Vagrant. Eu tenho duas máquinas na mesma sub-rede, mas em diferentes LANs, e uma máquina bridge com duas interfaces e uma ponte de rede que é configurada em um script de provisionamento.

Aqui está o meu Vagrantfile :

$bridge_script = <<SCRIPT
sudo apt-get update
sudo apt-get install -y bridge-utils
sudo brctl addbr br0
sudo brctl addif br0 eth1 eth2
sudo ifconfig br0 up
SCRIPT

Vagrant.configure(2) do |config|
  config.vm.define "machine1" do |machine1|
    machine1.vm.box = "hashicorp/precise64"
    machine1.vm.network "private_network", ip: "192.168.1.2",
      virtualbox__intnet: "lan1"
  end

  config.vm.define "bridge" do |bridge|
    bridge.vm.box = "hashicorp/precise64"
    bridge.vm.network "private_network", ip: "0.0.0.0",
      virtualbox__intnet: "lan1"
    bridge.vm.network "private_network", ip: "0.0.0.0",
      virtualbox__intnet: "lan2"
    bridge.vm.provision :shell, inline: $bridge_script
  end

  config.vm.define "machine2" do |machine2|
    machine2.vm.box = "hashicorp/precise64"
    machine2.vm.network "private_network", ip: "192.168.1.3",
      virtualbox__intnet: "lan2"
  end
end

Não consigo fazer com que nenhuma das máquinas entre com sucesso. Usando tcpdump , descobri que uma solicitação ARP passou de machine1 até machine2 , mas quando machine2 responde, a resposta nem chega a eth2 on bridge . (Eu só vejo a resposta ARP ao ouvir em eth1 em machine2 .

Como posso fazer isso funcionar?

    
por itsadok 14.10.2015 / 13:19

1 resposta

1

Acontece que, por padrão, o VirtualBox não permite que você tenha placas de rede promíscuas, você precisa habilitá-lo explicitamente.

Eu adicionei as seguintes linhas à definição bridge e as coisas começaram a funcionar:

bridge.vm.provider :virtualbox do |vb|
  vb.customize ["modifyvm", :id, "--nicpromisc2", "allow-all"]
  vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"]
end
    
por 15.10.2015 / 10:08