![仅当通过 VirtualBox 运行 VM 时才可用网络接口,而通过 Vagrant 运行则不可用](https://linux22.com/image/1515385/%E4%BB%85%E5%BD%93%E9%80%9A%E8%BF%87%20VirtualBox%20%E8%BF%90%E8%A1%8C%20VM%20%E6%97%B6%E6%89%8D%E5%8F%AF%E7%94%A8%E7%BD%91%E7%BB%9C%E6%8E%A5%E5%8F%A3%EF%BC%8C%E8%80%8C%E9%80%9A%E8%BF%87%20Vagrant%20%E8%BF%90%E8%A1%8C%E5%88%99%E4%B8%8D%E5%8F%AF%E7%94%A8.png)
这里有些奇怪。我正在使用 Vagrant 和 centos/7 映像为要运行的几个测试创建一些虚拟机。Vagrant 使用 VirtualBox 作为提供程序。
在我的 Vagrantfile 中,我设置了一个具有任意 IP 的私有网络。
如果我vagrant up
,并在任意 IP 上 ping 虚拟机,则 ping 会失败。ip addr show
显示正确的接口,但没有 IPv4 地址。
如果我通过 VirtualBox UI 启动 VM,我就可以正常 ping 该 VM,并且 IPv4 地址会显示在 中ip addr show
。
我在虚拟机上安装了客户机附加组件。我尝试了 3 个不同的 CentOS 7 基础盒(jayunit100/centos7、bento/centos-7.2 和 centos/7),但每个结果都相同。当我使用 Ubuntu 盒时,一切都按预期运行,我可以在加载后 ping 该盒vagrant up
。
我在 OS X Sierra 上运行,我的 Vagrant 版本是 1.9.1,我的 VirtualBox 版本是 5.1.10。
有人有线索可以分享吗?谢谢!
编辑下面是我使用的 Vagranfiles 之一,为简洁起见删除了注释。
Vagrant.configure("2") do |config|
config.vm.box = "bento/centos-7.2"
# config.vm.box_check_update = false
# config.vm.network "forwarded_port", guest: 80, host: 8080
# NOTE: tried this with virtualbox__intnet: true as well, didn't help
config.vm.network "private_network", ip: "192.168.33.101"
# config.vm.network "public_network"
# config.vm.synced_folder "../data", "/vagrant_data"
# More settings below, but all commented out, so removed for brevity
end
答案1
我遇到了类似的问题。对我来说,解决方案是不定义静态 IP 地址,而是通过设置“type: dhcp”来确定 IP 地址(请参阅:https://www.vagrantup.com/docs/networking/private_network.html)。通过 dhcp 选择的 IP 地址超出了预设的有效范围(virtualbox 问题?),我猜它不再包括 192.....?还没有尝试过,但也许可以通过此处的指令通过“modifyvm”设置范围http://www.virtualbox.org/manual/ch09.html#changenat可以解决这个问题吗?