VirtualBox 提供程序在仅主机网络上使用 E_ACCESSDENIED 时 Vagrant 失败

问题描述 投票:0回答:5

VirtualBox 更新后

vagrant up
在 Ubuntu 上失败并出现以下错误:

There was an error while executing `VBoxManage`, a CLI used by Vagrant
for controlling VirtualBox. The command and stderr is shown below.

Command: ["hostonlyif", "ipconfig", "vboxnet2", "--ip", "10.160.0.1", "--netmask", "255.255.255.0"]

Stderr: VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available)
VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp

使用过的版本:

  • 流浪者2.2.14
  • virtualbox-6.1 6.1.28-147628~Ubuntu~eoan
  • Ubuntu 20.04.3 LTS
ubuntu vagrant virtualbox
5个回答
38
投票

从 VirtualBox 6.1.28 开始,仅主机网络适配器默认限制为 192.168.56.0/21 范围内的 IP (192.168.56.1 -> 192.168.63.254)。

您可以通过配置

/etc/vbox/networks.conf
告诉 VirtualBox 允许其他 IP 范围。例如,要允许 10.x.x.x 范围内的任何内容,您可以使用:

* 10.0.0.0/8

有关更多信息,请参阅文档 https://www.virtualbox.org/manual/ch06.html#network_hostonly


7
投票

浏览有关仅主机网络的 VirtualBox 文档后,您将看到对于 Solaris、Linux 和 MacOS,仅主机网络允许的 IP 范围已更改。 VirtualBox 现在只接受 192.168.56.0/21 范围内分配的 IP 地址。上面的错误表明 Docker 正在尝试创建并分配 192.168.99.1/24 地址和掩码。

现在有两种明显的解决方案,其中一种是改变 docker 创建机器的方式,使其适合 VirtualBox 现在使用的“新”地址空间:

docker-machine create --driver virtualbox --virtualbox-memory "2048" --virtualbox-hostonly-cidr 192.168.56.1/21 default

我们还可以从问题的另一面解决这个问题,即改变 VirtualBox 的行为。为了做到这一点,我们需要在/etc/vbox中创建文件networks.conf:

sudo mkdir /etc/vbox
sudo nano /etc/vbox/networks.conf

在networks.conf中,我们可以告诉VirtualBox我们允许哪些网络:

* 10.0.0.0/8 192.168.0.0/16

* 2001::/64


4
投票

我通过降级到 VirtualBox 6.1.26 成功解决了该错误:

# check the available versions
apt-cache showpkg virtualbox

# stop VirtualBox machines

# downgrade VirtualBox version
sudo apt-get install virtualbox=6.1.26-dfsg-3~ubuntu1.20.04.2

上面的最后一个命令不会删除虚拟机数据。


0
投票

我需要我的 Vagrantfile 在多台机器(Ubuntu 和 Mac)上开箱即用,因此修改

/etc/vbox/networks.conf
对我来说不起作用。

相反,我将所有 Vagranfile IP 地址更改为 192.168.56.0/21,如 Paul Parker重复问题的答案所述。

我最初根据 ChrisR 的回答和 VirtualBox 文档首先尝试了 192.68.56.0/21,该文档在 Linux 上运行。但 Mac 上的 VirtualBox 只接受其他范围(168 而不是 68)。


0
投票

要允许所有类型的网络,请创建文件:/etc/vbox/networks.conf,其中内容:

* 0.0.0.0/0 ::/0

将用户添加到vbox用户:

usermod -aG vboxusers your_user

注销并重新登录并再次检查

© www.soinside.com 2019 - 2024. All rights reserved.