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

69

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 (par exemple, quelque chose.monentreprise.com allant au numéro 123.45.67.89). Lorsque je crée une nouvelle machine virtuelle, celle-ci 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 /etc/hostssur la machine virtuelle 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’aie pas à suivre cette étape manuelle? Mon hôte est OSX Mountain Lion , les machines virtuelles sont généralement Ubuntu, mais je doute que cela soit important.

amphibient
la source

Réponses:

99

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

VBoxManage modifyvm " <nom de la machine virtuelle " "--natdnshostresolver1 sur

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

Vous pouvez obtenir le nom de la machine virtuelle en exécutant VBoxManage list runningvms.

Josiah
la source
9
Pour plus d’informations pour les autres: cela doit être exécuté à partir de l’hôte. Si votre hôte est Windows, ouvrez une invite de commande, accédez au dossier "C: \ Program Files \ Oracle \ VirtualBox" et exécutez cette commande. Il ne semble pas y avoir d’option dans l’interface graphique de VirtualBox Manager (du moins dans toutes les versions de 4. * à 5.0.20), ce qui vous permet de définir cela autrement.
Graham
J'aimerais ajouter que vous devez exécuter cette commande en tant qu'administrateur. Je l'ai essayé à partir de mon cmd et cela n'a pas fonctionné pour moi, mais j'ai ensuite exécuté cmd en tant qu'administrateur et tout fonctionnait parfaitement.
SergeyOvchinnik
3
Cela fonctionnait pour moi, mais pas avec Ubuntu 16.04 et la dernière virtualbox pour Windows
Shanteva le
Ne fonctionne pas pour moi aussi :(
Pavel Durov
1
Cela fonctionne toujours avec MacOs High Sierra en tant qu'hôte, VirtualBox 5.2.6, exécutant Windows 7 sur la machine virtuelle.
John Eikenberry
6

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 (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 à votre invité Ubuntu et demandez-lui d'utiliser le nom du 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/

Prahlad Yeri
la source
5

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:

hosts: files dns à /etc/nsswitch.conf

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

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

bretzel11
la source
2
Bienvenue sur Super User! Vous pouvez proposer cela comme modification de la réponse de Josiah, ce qui aiderait les personnes à la recherche :)
bertieb
Merci pour le conseil! J'ai essayé d'ajouter juste un commentaire, mais ce n'était pas autorisé. J'ai soumis la modification à la place.
bretzel11
1

J'ai également remarqué que ma connexion VPN interfère avec une connexion Internet vagabonde.

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
Valdis Vitayaudom
la source
0

Pour moi, il a été utile d’ajouter un autre adaptateur avec un adaptateur pour hôte uniquement tout en conservant le premier (mode NAT).

[capture d'écran1]

Michel Samia
la source