Vagrant에서 간단한 네트워크 브리지를 만드는 방법은 무엇입니까?

Vagrant에서 간단한 네트워크 브리지를 만드는 방법은 무엇입니까?

Vagrant에서 가장 기본적인 네트워크 브리지 데모를 설정하려고 합니다. 동일한 서브넷에 있지만 서로 다른 LAN에 두 대의 컴퓨터가 있고 두 개의 인터페이스가 있는 브리지 컴퓨터와 프로비저닝 스크립트에서 설정되는 네트워크 브리지가 있습니다.

내 내용은 다음과 같습니다 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

두 컴퓨터가 다른 컴퓨터를 성공적으로 핑하도록 할 수 없습니다. 를 사용하여 tcpdumpARP 요청이 에서 machine1까지 전달되었지만 응답할 machine2machine2응답이 eth2on 에도 도달하지 않는 것을 발견했습니다 bridge. ( eth1.NET에서 청취할 때만 ARP 응답을 볼 수 있습니다 machine2.

어떻게 하면 작동하게 할 수 있나요?

답변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

관련 정보