web-dev-qa-db-fra.com

Comment obliger les machines virtuelles VirtualBox à utiliser le DNS de l'hôte?

J'utilise VirtualBox pour mes machines virtuelles. La configuration du réseau de mon bureau est sans fil, c’est-à-dire que je me connecte au réseau WiFi de mon entreprise, qui dispose d’un DNS local pour résoudre les noms locaux (tel que quelque chose.monentreprise.com allant à 123.45.67.89). Lorsque je crée une nouvelle machine virtuelle, elle peut se connecter à Internet externe en héritant de la connexion de l'hôte, mais elle ne résout pas les noms locaux à l'aide du DNS local. Donc, je dois aller dans /etc/hosts sur le VM et faire manuellement une entrée après avoir résolu le nom sur l'hôte, ce qui est ennuyeux.

Existe-t-il un moyen de faire en sorte que VirtualBox connecte automatiquement l'invité au DNS de l'hôte afin que je n'ai pas à effectuer cette étape manuelle? Mon hôte est OSX Mountain Lion , les machines virtuelles sont généralement Ubuntu mais je doute que cela devrait avoir de l'importance.

64
amphibient

Pour activer le mode proxy DNS à l'aide du résolveur de l'hôte , exécutez la commande suivante:

VBoxManage modifyvm " <VMname> " --natdnshostresolver1 on

En conséquence, les demandes DNS du système d'exploitation invité seront interceptées et résolues à l'aide de l'API DNS hôte, plutôt que de se connecter à des serveurs DNS externes comme avec --natdnsproxy1 on.

Vous pouvez obtenir le nom du VM en exécutant VBoxManage list runningvms.

92
Josiah

Oui c'est possible. De nombreux modes disponibles dans VirtualBox permettent d’établir un réseau entre l’invité et l’hôte. Plutôt que d'utiliser le mode NAT (qui est le mode par défaut), vous pouvez utiliser le mode pont dans lequel votre ordinateur invité peut être traité comme une entité entièrement distincte de votre réseau. Ainsi, non seulement votre hôte, mais toute autre machine (telle que votre serveur DNS) verra votre invité comme une machine distincte.

Une fois que vous avez configuré le mode pont, accédez simplement à votre invité Ubuntu et demandez-lui d'utiliser le nom de serveur DNS ou l'adresse IP de votre société. Lisez ce tutoriel pour plus d'informations: http://prahladyeri.wordpress.com/2012/08/02/how-to-setup-a-virtual-lan-on-your-machine-using-Oracle-virtualbox/

5
Prahlad Yeri

Il s’agissait d’un excellent résultat sur Google. Je tenais donc à clarifier pour les autres. La solution de Josiah a fonctionné pour moi avec l'ajout de la ligne suivante:

"hôtes: fichiers DNS" à /etc/nsswitch.conf

Comme d'autres l'ont souligné, la solution d'origine ne fonctionne pas au-delà de Ubuntu 16.04. Mon invité VM est Ubuntu 16.04.

Référence Création d'un serveur Linux

5
pretzel11

J'ai également remarqué que ma connexion VPN interférait avec une connexion Internet errante.

Grâce à cet échange de pile, j'ai pu résoudre le problème en intégrant dans mon Vagrantfile

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

Et évitait l’ennui de devoir fermer la boîte pour modifier en ligne de commande, puis réapprovisionner

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
1
Valdis Vitayaudom