script if-up para a interface virtualbox “host-only network”

1

Estou usando a rede somente de host do Virtualbox e tenho a interface vboxnet0.

No host (Ubuntu 14), eu tenho alguns funcionários de rotas, várias tabelas de rotas (principais e duas extras), regras de ip definidas, etc.

Todas as alterações que fiz em tabelas de roteamento para a interface vbonxen0 no host perderam a reinicialização.

Como é possível criar scripts semelhantes a ifup para a interface vboxnet0?

    
por Yuri 29.01.2016 / 14:16

1 resposta

4

Há algumas coisas a serem lembradas ao usar o modo somente de host do VirtualBox (pelo menos V4.3.36), especialmente quando bridging não é uma opção e manual, personalizado rotas são necessárias para serem configuradas posteriormente:

  • O nó do dispositivo vboxnet0 é não disponível automaticamente após a inicialização (!)
    Exceto quando você configura manualmente em /etc/network/interfaces , o que pode interferir quando o VirtualBox tenta abrir seu próprio instância.
  • Ele nem está disponível quando os módulos vbox (pci | netadp | netflt | drv) são carregados.
  • Usar vboxmanage hostonlyif create apenas adicionará o nó do dispositivo, mas deixará em estado DOWN, o que ainda não é possível de ser executado.
  • O estado do dispositivo vboxnet0 permanecerá desconhecido mesmo quando a interface é ativada:
    4: vboxnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> ... state UNKNOWN ...
    Qualquer tentativa de usar backup eventos de /etc/network/interfaces , ifup ou /etc/network/if-up.d/MYSCRIPT é inútil, pois esse estado nunca é alcançado.
  • No host, ele fica apenas disponível e pronto para uso quando sua primeira máquina convidada de VM for iniciada.

A única maneira de ficar entre o virtualbox e o início da sua VM que encontrei até agora é usar uma regra do udev colocando um arquivo, por exemplo: /etc/udev/rules.d/80-vboxnet com:

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

que aciona uma instância do bash. Coloquei a instrução ip route ... diretamente no arquivo de regras, mas, como alternativa, é possível simplesmente abrir um script em outro lugar e colocar configurações de rota adicionais lá.

    
por 02.04.2016 / 13:32