virtualbox“仅主机网络”接口的 if-up 脚本

virtualbox“仅主机网络”接口的 if-up 脚本

我正在使用 Virtualbox 仅主机网络,并且我有一个接口 vboxnet0。

在主机(Ubuntu 14)上,我有一些路由人员、几个路由表(主要的和两个额外的)、IP 规则设置等等。

我对主机上 vbonxen0 接口的路由表所做的所有更改都丢失了重启功能。

如何为 vboxnet0 接口制作类似 ifup 的脚本?

答案1

使用 VirtualBox 时需要注意以下几点仅主机网络模式(至少 V4.3.36)尤其是当桥接没有选项,需要手动,之后需要配置自定义路线:

  • vboxnet0设备节点是不是启动后自动可用(!)
    除非您手动配置它,因为/etc/network/interfaces这可能会在 virtualbox 尝试启动它自己的实例时产生干扰。
  • 甚至在加载 vbox(pci|netadp|netflt|drv) 模块时它也不可用。
  • 使用vboxmanage hostonlyif create只会添加设备节点但使其处于尚不可路由的 DOWN 状态。
  • vboxnet0即使接口启动后,设备状态仍将未知:
    4: vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> ... state UNKNOWN ...
    任何尝试使用向上来自的事件/etc/network/interfacesifup/etc/network/if-up.d/MYSCRIPT毫无​​用处,因为永远不会达到该状态。
  • 在主机上它变成仅有的当您的第一台 VM 客户机启动时即可使用。

唯一的办法是虚拟盒到目前为止,我发现你的虚拟机启动时使用的是udev 规则通过放置文件,例如/etc/udev/rules.d/80-vboxnet

KERNEL=="vboxnet0", SUBSYSTEM=="net", ACTION=="add", RUN+="/bin/bash -c '/bin/sleep 1; /sbin/ip route add xxxx dev vboxnet0'"

这会触发一个 bash 实例。我已将语句ip route ...直接放入规则文件中,但也可以只在其他地方启动脚本并在那里放置其他路由配置。

答案2

3ronco 的回答提供了一些关于 VirtualBox 如何在这方面欺骗我们的很好的见解,但我发现他的 Udev 解决方案在我的 Ubuntu 19.04 上不起作用,因为脚本运行时链接仍然处于断开状态。

我尝试添加接口网络计划但是,由于未知原因,在那里配置了静态路由,这些路由被忽略了。

如果你的系统有 networkd-dispatcher 你可以在这里放置一个脚本

/etc/networkd-dispatcher/routable.d/99-vboxnetworks

这是我的:

#!/bin/bash

if [ $IFACE == vboxnet2 ]; then
   /sbin/ip route add fdnn:nnnn:nnnn:2::/64 via fdnn:nnnn:nnnn:1::2
   /sbin/ip route add fdnn:nnnn:nnnn:3::/64 via fdnn:nnnn:nnnn:1::3
fi

现在事实证明,除非接口在 netplan 中有条目,否则不会运行此脚本。我的脚本包含一个被忽略的路由条目,只是为了使其语法正确(可能有更整洁的方法来做到这一点)。所以我有

/etc/netplan/01-mynet.yaml

包含:

network:
    ethernets:
            vboxnet2:
                    routes:
                            # These routes are ignored for reasons unknow,
                            # I have included them just so that vboxnet2 gets
                            # a mention here. Actual routes are added by
                            # /etc/networkd-dispatcher/routable.d/99-vboxnetworks
                            #
                            - to: fdnn:nnnn:nnnn:2::/64
                              via: fdnn:nnnn:nnnn:1::2

相关内容