因此,我的MAC书籍上的Vagrant设置为“ hashicorp / precise64”时遇到问题。
首先,我的配置:
VAGRANTFILE_API_VERSION =“ 2” Vagrant.configure(VAGRANTFILE_API_VERSION)做| config | config.vm.box =“ hashicorp / precise64” config.vm.network“ public_network”,键入:“ dhcp”,:bridge =>'en4:Thunderbolt Ethernet' config.vm.hostname =“ mddirector” 结束
这就是“流浪汉”的主张
==>默认值:尝试正常关闭VM ... ==>默认值:检查“ hashicorp / precise64”框是否为最新... ==>默认值:清除任何先前设置的转发端口... ==>默认值:清除任何先前设置的网络接口... ==>默认值:根据配置准备网络接口... 默认值:适配器1:NAT 默认值:适配器2:桥接 ==>默认值:转发端口... 默认值:22 => 2222(适配器1) ==>默认值:正在启动VM ... ==>默认值:等待计算机启动。这可能需要几分钟的时间... 默认值:SSH地址:127.0.0.1:2222 默认值:SSH用户名:vagrant 默认值:SSH身份验证方法:私钥 默认值:警告:连接超时。正在重试... ==>默认值:机器已启动并准备就绪! GuestAdditions 4.3.10正在运行---确定。 ==>默认值:正在VM中检查来宾添加... ==>默认值:设置主机名... ==>默认值:配置和启用网络接口... ==>默认值:正在挂载共享文件夹... 默认值:/ vagrant => / Users / garthm / Projects / vagrant ==>默认值:计算机已配置。运行`vagrant Provision`或使用`--provision` ==>默认值:强制设置。标记为始终运行的预配器仍将运行。
'ifconfig'显示以下内容:
vagrant @ mddirector:〜$ ifconfig eth0链接encap:以太网HWaddr 08:00:27:88:0c:a6 inet地址:10.0.2.15广播:10.0.2.255掩码:255.255.255.0 inet6地址:fe80 :: a00:27ff:fe88:ca6 / 64范围:链接 UP广播多播MTU:1500公制:1 RX数据包:725错误:0掉落:0超限:0帧:0 TX封包:544错误:0掉线:0超限:0载波:0 碰撞:0 txqueuelen:1000 接收字节:90824(90.8 KB)发送字节:63375(63.3 KB) eth1链接encap:以太网HWaddr 08:00:27:2f:bb:6a inet地址:10.0.24.118广播:10.0.31.255掩码:255.255.248.0 UP广播多播MTU:1500公制:1 RX数据包:3490错误:0掉落:0超限:0帧:0 TX数据包:7个错误:0掉落:0超限:0运营商:0 碰撞:0 txqueuelen:1000 接收字节:345981(345.9 KB)发送字节:1102(1.1 KB) lo链接封套:本地环回 inet地址:127.0.0.1掩码:255.0.0.0 inet6 addr::: 1/128范围:主机 上环运行MTU:16436公制:1 RX数据包:0错误:0丢弃:0超限:0帧:0 TX数据包:0错误:0掉线:0超限:0运营商:0 冲突:0 txqueuelen:0 RX字节:0(0.0 B)TX字节:0(0.0 B)
我的问题是,我可以从主机上ping虚拟机(IP: 10.0.24.112
),其他人也可以ping我的虚拟机(10.0.24.XXX
),我的VM可以ping我的devbox(IP: 10.10.116.254
),可以从我的devbox中ping其他开发人员的虚拟机设置(而不是Vagrant,IP: 10.10.116.254
),但是我无法从我的devbox ping我的VM,而其他开发人员也无法从他们的devbox ping我的VM。
他们拥有的虚拟机设置仅使用网桥NIC,但是由于某种原因,流浪者同时具有NAT和网桥,即使我在配置中指定了网桥。如您所见,Vagrant VM有两个IP地址,这似乎不正确。您还可以在启动时在适配器1(即NAT适配器)上进行端口转发,这意味着听起来好像默认情况下所有组件都使用NAT适配器。
如何摆脱NAT适配器并仅使用桥接器?
如果我编辑VirtualBox设置并禁用NAT适配器,那么只有桥接的适配器并通过VirtualBox启动该框(即:不使用流浪汉),那么它只有eth0,其IP地址可从我的devbox ping通,这就是我想要的。如果我在编辑VirtualBox设置并禁用NAT适配器后尝试更改该框,则会出现以下错误:
执行Vagrant使用的CLI“ VBoxManage”时出错 用于控制VirtualBox。命令和stderr如下所示。 命令:[“ modifyvm”,“ 7f1c12f7-74cd-4c6b-aa5a-16d6209cf2b3”,“-natpf1”,“ ssh,tcp,127.0.0.1,2222,,22”] Stderr:VBoxManage:错误:此名称的NAT规则已存在 VBoxManage:错误:详细信息:代码NS_ERROR_INVALID_ARG(0x80070057),组件NATEngine,接口INATEngine,被调用者nsISupports VBoxManage:错误:上下文:“ AddRedirect(Bstr(strName).raw(),proto,Bstr(strHostIp).raw(),RTStrToUInt16(strHostPort),Bstr(strGuestIp).raw(),RTStrToUInt16(strGuestPort))”文件VBoxManageModifyVM.cpp的第1655行
如果我立即再次做一个流浪汉,它又重新启用了NAT适配器,我们又回到了同样的问题。