Vagrant でシンプルなネットワーク ブリッジを作成する方法は?

Vagrant でシンプルなネットワーク ブリッジを作成する方法は?

Vagrant で最も基本的なネットワーク ブリッジ デモをセットアップしようとしています。同じサブネット内だが LAN が異なる 2 台のマシンと、2 つのインターフェイスを持つブリッジ マシン、およびプロビジョニング スクリプトでセットアップされるネットワーク ブリッジがあります。

これが私のです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

どちらのマシンも、他のマシンに正常に ping できません。 を使用するとtcpdump、ARP 要求は から まで渡されますmachine1machine2machine2が応答すると、応答は にさえ届きませんeth2。 (で を bridgeリッスンしているときのみ、ARP 応答が表示されます。eth1machine2

これを動作させるにはどうすればよいですか?

答え1

デフォルトでは、VirtualBox では無差別 NIC を使用できないため、明示的に有効にする必要があることが判明しました。

定義に次の行を追加するbridgeと、動作するようになりました。

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

関連情報