Есть некоторые вещи, которые следует иметь в виду при использовании режима сети только для хоста 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 гостя машина только.
Единственный способ попасть между virtualbox и запуском вашей виртуальной машины, который я нашел до сих пор, - это использовать правило 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 ...
непосредственно в файл правил, но в качестве альтернативы можно просто вызвать скрипт в другом месте и поместить туда дополнительные конфигурации маршрутов.