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/interfaces,因為永遠不會達到該狀態。ifup/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 路由新增 xxxx dev vboxnet0'”

這會觸發 bash 實例。我已將該ip route ...語句直接放入規則檔案中,但也可以在其他地方調出腳本並在其中放置其他路由配置。

答案2

3ronco的回答提供了一些關於 VirtualBox 如何搞砸我們的很好的見解,但我發現他的 Udev 解決方案在我的 Ubuntu 19.04 上不起作用,因為在腳本運行時連結仍然處於關閉狀態。

我嘗試添加接口網路計劃然而,在那裡配置了靜態路由,但由於未知的原因,路由被忽略了。

如果您的系統有網路調度程序,您可以在此處放置一個腳本

/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

相關內容