网络更改后找不到 Vagrant 私有 IP

Bra*_*rks 2 virtualbox mac-osx private-ip vagrant

我有一个简单的 Vagrant Ubuntu 虚拟机设置,使用 Virtual Box,在 Mac 上运行。

我正在使用专用网络,配置了静态专用 IP,如下所示:

Vagrant.configure("2") do |config|
    config.vm.network :private_network, ip: "10.11.12.13"
end
Run Code Online (Sandbox Code Playgroud)

这工作正常,除非我在 wifi 和有线网络之间来回切换。当我这样做时,我似乎无法再使用它的静态 IP 地址连接到 VM。我试过停止并重新启动虚拟机,甚至破坏并重新创建虚拟机,但无济于事。

有没有办法重置网络连接,以便私有 IP 回来?我可以直接在 VirtualBox 或其他任何地方访问它。我可以让它工作的唯一方法是现在实际重新启动我的整个机器。

Bra*_*rks 6

似乎 VirtualBox 的网络适配器可以在命令提示符下通过运行类似以下内容轻松重新启动(在您的系统上会有所不同)

sudo ifconfig vboxnet1 down
sudo ifconfig vboxnet1 up
Run Code Online (Sandbox Code Playgroud)

请注意,您必须替换vboxnet1为 VirtualBox 的任何虚拟网络适配器,您可以通过以下方式找到:

  • 启动虚拟盒子
  • 选择正在运行的 VM
  • 看一Network节。您将看到一个vboxnet名称中包含的适配器。这就是您要查找的适配器名称。

您还可以通过ifconfig在终端中运行来查看可用的网络适配器:

ifconfig
Run Code Online (Sandbox Code Playgroud)

如果您希望将其包含在一个简单的 bash 脚本中,您可以使用以下命令:

restart_vbox_network_adapter.sh

ADAPTER=${1:-"vboxnet1"}

sudo ifconfig $ADAPTER down
sudo ifconfig $ADAPTER up
Run Code Online (Sandbox Code Playgroud)

您可以这样称呼它,再次为您的 VM 使用正确的网络适配器:

restart_vbox_network_adapter.sh vboxnet2
Run Code Online (Sandbox Code Playgroud)