Wie erstelle ich in Vagrant eine einfache Netzwerkbrücke?

Wie erstelle ich in Vagrant eine einfache Netzwerkbrücke?

Ich versuche, die einfachste Netzwerkbrückendemo in Vagrant einzurichten. Ich habe zwei Maschinen im selben Subnetz, aber in unterschiedlichen LANs, und eine Brückenmaschine mit zwei Schnittstellen und einer Netzwerkbrücke, die in einem Bereitstellungsskript eingerichtet wird.

Hier ist meins 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

Ich kann keine der Maschinen dazu bringen, die andere erfolgreich anzupingen. Mit tcpdumphabe ich festgestellt, dass eine ARP-Anforderung von machine1bis zu weitergeleitet wird machine2, aber wenn machine2antwortet, erreicht die Antwort nicht einmal eth2auf . (Ich sehe die ARP-Antwort nur, wenn ich auf in bridgelausche .eth1machine2

Wie kann ich das zum Laufen bringen?

Antwort1

Es stellt sich heraus, dass VirtualBox standardmäßig keine Promiscuous-NICs zulässt; Sie müssen dies ausdrücklich aktivieren.

Ich habe der bridgeDefinition die folgenden Zeilen hinzugefügt und dann hat alles funktioniert:

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

verwandte Informationen