仅当通过 VirtualBox 运行 VM 时才可用网络接口,而通过 Vagrant 运行则不可用

仅当通过 VirtualBox 运行 VM 时才可用网络接口,而通过 Vagrant 运行则不可用

这里有些奇怪。我正在使用 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可以解决这个问题吗?

相关内容