Так что у меня проблемы с бродячей настройкой 'hashicorp/ точный 64' в моей книге MAC.
Во-первых, мой конфиг:
VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "hashicorp/precise64" config.vm.network "public_network", type: "dhcp", :bridge => 'en4: Thunderbolt Ethernet' config.vm.hostname = "mddirector" end
Это выход "бродяги вверх"
==> default: Attempting graceful shutdown of VM... ==> default: Checking if box 'hashicorp/precise64' is up to date... ==> default: Clearing any previously set forwarded ports... ==> default: Clearing any previously set network interfaces... ==> default: Preparing network interfaces based on configuration... default: Adapter 1: nat default: Adapter 2: bridged ==> default: Forwarding ports... default: 22 => 2222 (adapter 1) ==> default: Booting VM... ==> default: Waiting for machine to boot. This may take a few minutes... default: SSH address: 127.0.0.1:2222 default: SSH username: vagrant default: SSH auth method: private key default: Warning: Connection timeout. Retrying... ==> default: Machine booted and ready! GuestAdditions 4.3.10 running --- OK. ==> default: Checking for guest additions in VM... ==> default: Setting hostname... ==> default: Configuring and enabling network interfaces... ==> default: Mounting shared folders... default: /vagrant => /Users/garthm/Projects/vagrant ==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision` ==> default: to force provisioning. Provisioners marked to run always will still run.
'ifconfig' показывает следующее:
vagrant@mddirector:~$ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:88:0c:a6 inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe88:ca6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:725 errors:0 dropped:0 overruns:0 frame:0 TX packets:544 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:90824 (90.8 KB) TX bytes:63375 (63.3 KB) eth1 Link encap:Ethernet HWaddr 08:00:27:2f:bb:6a inet addr:10.0.24.118 Bcast:10.0.31.255 Mask:255.255.248.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3490 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:345981 (345.9 KB) TX bytes:1102 (1.1 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Моя проблема в том, что я могу пропинговать виртуальную машину с хост-машины (IP: 10.0.24.112), другие люди могут пропинговать мою виртуальную машину (10.0.24.XXX), моя виртуальная машина может пропинговать мой devbox (IP: 10.10.116.254), я могу пропинговать настройки виртуальной машины других разработчиков из моего devbox (не Vagrant, IP: 10.10.116.254), но я не могу пропинговать свою виртуальную машину из своего devbox и другие разработчики не могут пропинговать мою виртуальную машину из своего devbox.
У них есть настройки виртуальной машины только с сетевым адаптером Bridged, но по какой-то причине у vagrant есть и NAT, и Bridged, хотя я указал bridged в конфигурации. Как видите, для Vagrant VM есть два IP-адреса, что кажется неправильным. Вы также можете, когда он загружается, он выполняет переадресацию порта на Adapter 1, который является адаптером NAT, что означает, что он звучит так, как будто он использует адаптер NAT по умолчанию для всего.
Как избавиться от адаптера NAT и использовать только мост?
Если я отредактирую настройки VirtualBox и отключу адаптер NAT, так что есть только адаптер с мостовыми соединениями и загружаю коробку через VirtualBox (то есть: не использую vagrant up), то у него есть только eth0 с IP-адресом, который можно проверить на моем devbox что я и ищу. Если я попытаюсь прыгнуть в окно после редактирования настроек VirtualBox и отключения адаптера NAT, я получу следующую ошибку:
There was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below. Command: ["modifyvm", "7f1c12f7-74cd-4c6b-aa5a-16d6209cf2b3", "--natpf1", "ssh,tcp,127.0.0.1,2222,,22"] Stderr: VBoxManage: error: A NAT rule of this name already exists VBoxManage: error: Details: code NS_ERROR_INVALID_ARG (0x80070057), component NATEngine, interface INATEngine, callee nsISupports VBoxManage: error: Context: "AddRedirect(Bstr(strName).raw(), proto, Bstr(strHostIp).raw(), RTStrToUInt16(strHostPort), Bstr(strGuestIp).raw(), RTStrToUInt16(strGuestPort))" at line 1655 of file VBoxManageModifyVM.cpp
Если я немедленно снова выполню vagrant, он снова включит адаптер NAT, и мы снова столкнемся с той же проблемой.