मैं ओपनस्टैक को तैनात करने के लिए एक परीक्षण के रूप में एक बहु-वीएम योनि वातावरण का उपयोग करने की कोशिश कर रहा हूं, और एक वीएम-इन-द-वीएम के लिए एक वीएम से संवाद करने की कोशिश के साथ एक नेटवर्किंग समस्या में चला गया हूं।
मेरे पास दो 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 को शुरू करने की कोशिश करता हूं, तो यह compute1 पर सफलतापूर्वक बूट होता है, और इसका वर्चुअल निक (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 इसे कभी भी VM1 पर वापस नहीं बनाता है। अगर मैं अपने होस्ट मशीन पर vboxnet3 इंटरफ़ेस पर tcpdump का उपयोग करने वाले अनुरोधों को देखता हूं, जो Vagrant (Mac OS X) चलाता है, तो मैं अनुरोध और उत्तर दोनों देख सकता हूं
$ 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
इस बिंदु पर, मैं फंस गया हूं। मुझे यकीन नहीं है कि डीएचसीपी के जवाब इसे गणना नोड के लिए क्यों नहीं बना रहे हैं। शायद यह VirtualBox वर्चुअल स्विच / राउटर के कॉन्फ़िगरेशन के साथ कुछ करना है?
ध्यान दें कि दोनों नोड्स पर eth2 इंटरफेस को प्रोमिसस मोड पर सेट किया गया है।