É possível alterar o tipo da interface de rede virtual com um comando como:
VBoxManage controlvm <VM_name> nic1 bridged eth0
Isso fará com que a primeira interface virtual nesta VM seja conectada a eth0. No entanto, o só funciona quando o convidado está sendo executado . (Não sei exatamente quando ele atualizará a configuração persistente, mas alguns testes mostraram que o comando não faz nada se o convidado não estiver sendo executado, mas, se estiver, ele altera o estado imediato da interface e atualiza a configuração .)
Mas ele pode funcionar se você tiver algo que o executa com frequência, especificando a interface com a qual deseja fazer a ponte. Você pode usar minha linguagem de programação NCD para fazer isso automaticamente. O programa NCD abaixo irá observar o estado de eth0 e wlan0, e invocará repetidamente um comando como o acima para garantir que sua VM esteja conectada com a interface correta. (em particular, aquele que tem a bandeira RUNNING; por exemplo, para interfaces com fio, isso significa que o cabo está conectado)
process vbox_iface {
# Wait for link on either eth0 or wlan0. Prefer eth0.
multidepend({"link-eth0", "link-wlan0"}) linkif;
println("Using ", linkif.dev);
# Enter loop (this is a hackish loop).
multiprovide("loop-run");
multidepend({"loop-again", "loop-run"});
println("Setting bridged to ", linkif.dev);
# Set VM NIC config.
runonce({"/usr/bin/VBoxManage", "controlvm", "Windows XP", "nic1", "bridged", linkif.dev});
# Wait some time (in milliseconds).
sleep("2000", "0");
# Continue loop.
multiprovide("loop-again");
}
process lan_iface {
var("eth0") dev;
# Wait for device to appear and for link (e.g. cable).
net.backend.waitdevice(dev);
net.backend.waitlink(dev);
multiprovide("link-eth0");
}
process wlan_iface {
var("wlan0") dev;
# Wait for device to appear and for link (e.g. cable).
net.backend.waitdevice(dev);
net.backend.waitlink(dev);
multiprovide("link-wlan0");
}
Você pode usar o programa acima executando (como sua conta de usuário, não como root):
badvpn-ncd --loglevel warning --config-file <file_with_above_script.ncd>
Certifique-se de ajustar os nomes das interfaces no script e o nome da VM. Depois de verificar se funciona, você pode configurar seu ambiente de área de trabalho para iniciar automaticamente o processo badvpn-ncd
.