¿Cómo hacer que las máquinas virtuales VirtualBox utilicen el DNS del host?

69

Yo uso VirtualBox para mis máquinas virtuales. La configuración de la red de mi oficina es inalámbrica, es decir, me conecto a la red WiFi de mi empresa, que tiene un DNS local para resolver los nombres locales (como something.mycompany.com que va a 123.45.67.89). Cuando construyo una nueva VM, se puede conectar a Internet externo heredando la conexión del host, pero no resuelve los nombres locales utilizando el DNS local. Así que tengo que entrar en /etc/hostsla VM y hacer una entrada manualmente después de resolver el nombre en el host, lo cual es molesto.

¿Hay alguna manera de hacer que VirtualBox conecte automáticamente el invitado al DNS del host para que no tenga que hacer este paso manual? Mi host es OSX Mountain Lion , las máquinas virtuales suelen ser Ubuntu, pero dudo que eso deba importar.

anfibio
fuente

Respuestas:

99

Para habilitar el Modo de Proxy DNS usando la resolución del host , ejecute el siguiente comando:

VBoxManage modifyvm " <nombre de VM> " --natdnshostresolver1 en

Como resultado, las solicitudes DNS del SO invitado se interceptarán y resolverán utilizando la API DNS del host, en lugar de hacer que el SO invitado se conecte a servidores DNS externos como con --natdnsproxy1 on.

Puede obtener el nombre de la VM ejecutando VBoxManage list runningvms.

Josiah
fuente
99
Para obtener más información para otros: esto debe ejecutarse desde el host. Si su host es Windows, abra un símbolo del sistema, cd a "C: \ Archivos de programa \ Oracle \ VirtualBox" y ejecute ese comando. No parece haber ninguna opción en la GUI de VirtualBox Manager (al menos en todas las versiones de 4. * a 5.0.20) que le permite configurar esto de otra manera.
Graham
Me gustaría agregar que necesita ejecutar este comando como administrador. Lo probé desde mi cmd y no funcionó para mí, pero luego ejecuté cmd como administrador y todo funcionó perfectamente bien.
SergeyOvchinnik
3
Esto solía funcionar para mí, pero no con Ubuntu 16.04 y la última caja virtual para Windows
Shanteva
No funciona para mí también :(
Pavel Durov
1
Esto todavía funciona con MacOs High Sierra como el host, VirtualBox 5.2.6, que ejecuta Windows 7 en la VM.
John Eikenberry
6

Sí, es posible. Hay muchos modos disponibles en VirtualBox para establecer redes entre el invitado y el host. En lugar de usar el modo NAT (que es el predeterminado), puede usar el modo puente en el que su máquina invitada puede ser tratada como una entidad completamente separada en su red. Por lo tanto, no solo su host, sino cualquier otra máquina (como su servidor DNS) verá a su invitado como una máquina separada.

Una vez que configure el modo puente, simplemente vaya a su invitado ubuntu y haga que use el nombre del servidor DNS de su compañía o su ip. Lea este tutorial para obtener más información: http://prahladyeri.wordpress.com/2012/08/02/how-to-setup-a-virtual-lan-on-your-machine-using-oracle-virtualbox/

Prahlad Yeri
fuente
5

Este fue un resultado superior de Google, por lo que quería aclarar para otros. La solución de Josiah funcionó para mí con la adición de agregar la línea:

hosts: files dns a /etc/nsswitch.conf

Como otros señalaron, la solución original no funciona por encima de Ubuntu 16.04. Mi VM invitada es Ubuntu 16.04.

Referencia Crear servidor Linux

pretzel11
fuente
2
¡Bienvenido a Super User! Podrías proponer eso como una edición de la respuesta de Josiah, lo que ayudaría a aquellos que buscan :)
bertieb 02 de
¡Gracias por el consejo! Intenté agregar solo un comentario, pero no estaba permitido. En su lugar, envié la edición.
pretzel11
1

También he notado que mi conexión VPN interfiere con una conexión a internet vagabunda.

Gracias a este intercambio de pila, pude resolver incrustando en mi Vagrantfile

config.vm.provider "virtualbox" do |vb|
  vb.cpus = 1
  vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  vb.memory = "2048"
end

Y evité el tedio de tener que apagar la caja para modificarla a través de la línea de comando, y luego reprovision

export PATH=$PATH:/c/Program\ Files/Oracle/VirtualBox/
VBoxManage list runningvms
export vbox=`VBoxManage list runningvms | cut -d '"' -f 2`
VBoxManage controlvm $vbox poweroff
VBoxManage modifyvm $vbox --natdnshostresolver1 on
vagrant.exe up --provision
Valdis Vitayaudom
fuente
0

Para mí, ayudó a agregar otro adaptador con adaptador solo de host, manteniendo el primero (modo NAT) allí también.

[captura de pantalla1]

Michel Samia
fuente