VirtualBox の「ホストオンリーネットワーク」インターフェースの if-up スクリプト

VirtualBox の「ホストオンリーネットワーク」インターフェースの if-up スクリプト

私はVirtualboxホストオンリーネットワークを使用しており、インターフェースvboxnet0があります。

ホスト (Ubuntu 14) には、ルート スタッフ、複数のルート テーブル (メインと 2 つの追加)、IP ルール セットなどがあります。

ホスト上の vbonxen0 インターフェイスのルーティング テーブルに加えたすべての変更が、再起動で失われました。

vboxnet0 インターフェース用の ifup のようなスクリプトを作成するにはどうすればよいですか?

答え1

VirtualBoxを使用する際に注意すべき点がいくつかあります。ホストオンリーネットワークモード(少なくともV4.3.36)の場合、特に橋渡しオプションはなく手動で、後でカスタムルートを構成する必要があります。

  • 翻訳者デバイスノードはない起動後に自動的に使用可能になります (!)
    ただし、手動で構成した場合は、/etc/network/interfacesVirtualBox が独自のインスタンスを起動しようとしたときに干渉する可能性があります。
  • vbox(pci|netadp|netflt|drv) モジュールがロードされている場合でも利用できません。
  • を使用するとvboxmanage hostonlyif create、デバイス ノードが追加されますが、状態はまだルーティングできない DOWN のままになります。
  • 翻訳者
    4: vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> ... state UNKNOWN ...
    デバイスの状態は、インターフェースが起動されても不明のままです。からのイベント/etc/network/interfacesifupまたはは、/etc/network/if-up.d/MYSCRIPTその状態に到達することは決してないため役に立ちません。
  • ホストではのみ最初の VM ゲスト マシンを起動するとすぐに使用できるようになります。

唯一の方法はバーチャルボックスそして、私がこれまでに見つけた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のエントリがなければ実行されないことが判明しました。私のスクリプトには無視されたルーティングエントリの1つが含まれていますが、これは単に構文的に正しいためです(おそらくもっときちんとした方法があるでしょう)。

/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

関連情報