방랑자 (Virtualbox) 호스트 전용 다중 노드 네트워킹 문제


9

OpenStack을 배포하기위한 테스트 베드로 다중 VM vagrant 환경을 사용하려고하는데 하나의 VM에서 VM 내부 VM으로 통신하려고 할 때 네트워킹 문제가 발생했습니다.

클라우드 컨트롤러 노드와 컴퓨팅 노드라는 두 개의 Vagrant 노드가 있습니다. 호스트 전용 네트워킹을 사용하고 있습니다. 내 Vagrantfile은 다음과 같습니다.

Vagrant::Config.run do |config|

  config.vm.box = "precise64"

  config.vm.define :controller do |controller_config|
    controller_config.vm.network :hostonly, "192.168.206.130" # eth1
    controller_config.vm.network :hostonly, "192.168.100.130" # eth2
    controller_config.vm.host_name = "controller"
  end

  config.vm.define :compute1 do |compute1_config|
    compute1_config.vm.network :hostonly, "192.168.206.131" # eth1
    compute1_config.vm.network :hostonly, "192.168.100.131" # eth2
    compute1_config.vm.host_name = "compute1"
    compute1_config.vm.customize ["modifyvm", :id, "--memory", 1024]
  end
end

(QEMU 기반) VM을 시작하려고하면 컴퓨팅 1에서 성공적으로 부팅되고 가상 nic (vnet0)은 브리지 br100을 통해 연결됩니다.

root@compute1:~# brctl show 100
bridge name bridge id       STP enabled interfaces
br100       8000.08002798c6ef   no      eth2

                        vnet0

QEMU VM이 컨트롤러에서 실행중인 DHCP 서버 (dnsmasq)에 요청하면 컨트롤러의 syslog 출력으로 인해 요청이 컨트롤러에 도달하는 것을 볼 수 있습니다.

Aug  6 02:34:56 precise64 dnsmasq-dhcp[12042]: DHCPDISCOVER(br100) fa:16:3e:07:98:11 
Aug  6 02:34:56 precise64 dnsmasq-dhcp[12042]: DHCPOFFER(br100) 192.168.100.2 fa:16:3e:07:98:11 

그러나 DHCPOFFER는 compute1에서 실행되는 VM으로 다시 돌아 가지 않습니다. Vagrant (Mac OS X)를 실행하는 호스트 컴퓨터의 vboxnet3 인터페이스에서 tcpdump를 사용하여 요청을 보면 요청과 응답을 모두 볼 수 있습니다

$ sudo tcpdump -i vboxnet3  -n port 67 or port 68
tcpdump: WARNING: vboxnet3: That device doesn't support promiscuous mode
(BIOCPROMISC: Operation not supported on socket)
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vboxnet3, link-type EN10MB (Ethernet), capture size 65535 bytes
22:51:20.694040 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280
22:51:20.694057 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280
22:51:20.696047 IP 192.168.100.1.67 > 192.168.100.2.68: BOOTP/DHCP, Reply, length 311
22:51:23.700845 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280
22:51:23.700876 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280
22:51:23.701591 IP 192.168.100.1.67 > 192.168.100.2.68: BOOTP/DHCP, Reply, length 311
22:51:26.705978 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280
22:51:26.705995 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280
22:51:26.706527 IP 192.168.100.1.67 > 192.168.100.2.68: BOOTP/DHCP, Reply, length 311

그러나 계산시 eth2에서 tcpdump하면 응답이 아닌 요청 만 볼 수 있습니다.

root@compute1:~# tcpdump -i eth2 -n port 67 or port 68
tcpdump: WARNING: eth2: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 65535 bytes
02:51:20.240672 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280
02:51:23.249758 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280
02:51:26.258281 IP 0.0.0.0.68 > 255.255.255.255.67: BOOTP/DHCP, Request from fa:16:3e:07:98:11, length 280

이 시점에서 나는 붙어 있습니다. 왜 DHCP 응답이 계산 노드에 응답하지 않는지 잘 모르겠습니다. 아마도 VirtualBox 가상 스위치 / 라우터 구성과 관련이 있습니까?

두 노드의 eth2 인터페이스가 무차별 모드로 설정되었습니다.

답변:


11

문제는 Vagrant를 통해 인터페이스를 무차별 모드로 설정해야한다는 것입니다. 게스트 운영 체제 내에서 수행하는 것만으로는 충분하지 않습니다.

예를 들어 두 개의 NIC를 추가하고 마지막으로 정의한 NIC가 VM에 연결되는 NIC 인 경우 Vagrantfile에는 다음과 같은 내용이 포함되어야합니다.

compute1_config.vm.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"]

3
"nicpromisc3"이 무엇을 지정하는지 명확히 할 수 있습니까?
jayunit100

2
@ jayunit100 세 번째 nic (eth2에 해당)을 "무차별 모드"로 설정합니다. 즉, 패킷의 대상 호스트의 MAC 주소가 MAC 주소와 일치하지 않더라도 VirtualBox가 VM으로 패킷을 보냅니다. VM.
Lorin Hochstein

1
--nicpromisc3은 Adapter 3입니까? 따라서 --nicpromisc2는 어댑터 2입니까?
CMCDragonkai

@CMCDragonkai 예, 그렇습니다.
Lorin Hochstein

1
@Alfred 는 오류 를 해결하는 방법에 대한 이 질문 을 참조하십시오 The following settings shouldn't exist: customize.
Nick Craig-Wood
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.