89 votes

Vagrant / VirtualBox DNS 10.0.2.3 ne fonctionne pas

J'utilise une nouvelle installation de Linux Mint Nadia (14). Je suis les instructions sur Vagrant Pour commencer mais sont restés bloqués sur le Approvisionnement . Il semble que la boîte Vagrant ne puisse pas se connecter à l'extérieur et que je ne puisse donc rien installer en utilisant Chef ou Puppet.

Dans la version de base de Vagrant resolve.conf contient nameserver 10.0.2.3 . Mais avec cette configuration, je ne peux pas faire de ping. us.archive.ubuntu.com .

Si je le change en 8.8.8.8 alors je peux faire un ping us.archive.ubuntu.com mais il ne reste pas en place, et après un redémarrage il redevient 10.0.2.3 - donc le provisionnement échoue à nouveau.

Idéalement, je voudrais que 10.0.2.3 pour travailler sur mon installation. Si ce n'est pas le cas, j'aimerais trouver un moyen de modifier de façon permanente le nom de l'entreprise. resolv.conf pour que je puisse faire le provisionnement.

2 votes

Pour votre information, je viens de rencontrer le même problème avec la ubuntu/xenial64 et il s'est avéré que c'était un bug avec la boîte elle-même .

0 votes

@AidanFeldman même chose pour moi. Je viens de passer à bento/ubuntu-16.04 et le DNS fonctionne bien sans aucune autre correction.

88voto

Michael Hampton Points 232226

Vous pouvez contourner ce problème de deux façons, qui sont toutes deux dans le manuel de VirtualBox :

Activation du proxy DNS en mode NAT

Le moteur NAT offre par défaut les mêmes serveurs DNS à l'invité que ceux configurés sur l'hôte. qui sont configurés sur l'hôte. Dans certains scénarios, il peut être souhaitable de cacher les adresses IP des serveurs DNS à l'invité, par exemple lorsque cette information peut changer sur l'hôte en raison de l'expiration des baux DHCP. Dans ce cas, vous pouvez indiquer au moteur NAT d'agir en tant que proxy DNS à l'aide de la commande suivante : - 1. la commande suivante :

VBoxManage modifyvm "VM name" --natdnsproxy1 on

Utilisation du résolveur de l'hôte comme proxy DNS en mode NAT

Pour la résolution des noms de réseaux, le serveur DHCP du moteur NAT propose une liste des serveurs DNS enregistrés de l'hôte. Si, pour une raison quelconque, vous devez masquer cette liste de serveurs DNS et utiliser le résolveur de l'hôte. de l'hôte, obligeant ainsi le moteur NAT de VirtualBox à intercepter les et à les transmettre au résolveur de l'hôte, utilisez la commande suivante commande suivante :

VBoxManage modifyvm "VM name" --natdnshostresolver1 on

Notez que ce paramètre est similaire au mode proxy DNS, toutefois cependant, alors que le mode proxy ne fait que transmettre les requêtes DNS aux serveurs serveurs appropriés, le mode résolveur interprète les requêtes DNS et utilise l'API l'API DNS de l'hôte pour interroger les informations et les renvoyer à l'invité.

1 votes

Merci. "L'utilisation du résolveur de l'hôte comme proxy DNS en mode NAT a fonctionné. C'est juste dommage que je doive faire cela pour chaque installation de Vagrant.

1 votes

J'utilise presque toujours le mode ponté pour les VM, ce qui élimine le problème (et toute une série d'autres problèmes).

3 votes

Je viens d'avoir le même problème avec une mise à jour vers la 4.2.20, "Utiliser le résolveur de l'hôte comme proxy DNS en mode NAT" a fait l'affaire pour moi aussi. Merci !

78voto

Chrisii Points 2278

Suivi de https://serverfault.com/a/453260/14832 si vous utilisez un format de configuration de Vagrantfile version 2, celui qui commence :

Vagrant.configure("2") do |config|

Vous pouvez alors ajouter ceci à ce fichier de configuration :

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

Si vous utilisez l'ancien format de configuration, mais que vous utilisez Vagrant 1.1+, vous pouvez ajouter ceci à la fin du fichier :

Vagrant.configure("2") do |config|
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end
end

2 votes

J'ajoute ceci à mon Vagrantfile a corrigé le problème où je ne pouvais pas exécuter gem install... sans obtenir de stupides erreurs DNS :) Merci !

2 votes

N'a pas fonctionné pour moi... je ne sais pas ce que j'ai manqué.

0 votes

@NickHall Vérifiez la VM à l'intérieur si elle a une IP statique assignée ; si c'est le cas, vérifiez l'accessibilité du serveur de noms à partir de l'adresse suivante /etc/resolv.conf Si c'est 10.0.2.3 , vérifiez ma réponse ;)

4voto

Martin Sherburn Points 1897

Nécromisation de celui-ci car, à mon avis, aucune des réponses n'apporte de lumière sur la question de l'accès à l'information. cause première de ce problème, qui semble assez intéressant. Pour un contexte moderne -- le problème se produit également avec Debian 10, et VirtualBox 6.0.14 ; après l'installation par défaut de Deb 10 (sans interface graphique), avec un adaptateur "NAT" (pas "NAT Network", mais le "NAT" par défaut) tout semble correct avec le DNS. Puis, en modifiant /etc/network/interfaces (ce qui semble toujours pertinent dans cette distro) à une IP statique :

#iface enp0s3 inet dhcp
iface enp0s3 inet static
address 10.0.2.15
netmask 255.255.255.0
gateway 10.0.2.2

(note -- la VM aurait obtenu 10.0.2.15 à partir de dhcp de toute façon), et l'arrêt/le démarrage de la VM,

  • Le DNS ne fonctionne pas ( host google.com etc, timeout)
  • ne peut pas telnet 10.0.2.3 53 ( resolv.conf a nameserver 10.0.2.3 (par défaut après l'installation).

Si je reviens à iface enp0s3 inet dhcp y redémarrer la VM, le DNS et telnet 10.0.2.3 53 travail.

Maintenant, cela devient vraiment excitant/étrange : si vous allez encore une fois pour inet static et rebooter juste la VM, le DNS et le telnet fonctionnent toujours bien seulement si vous éteignez ou rallumez la VM (via virtualbox), la 10.0.2.3 disparaît.

Donc je pense que pour le moment, VirtualBox automatiquement active le serveur/proxy DNS à l'adresse suivante 10.0.2.3 une fois qu'il aura obtenu un dhcp demande ; et ce 10.0.2.3 vit tant que la VM n'est pas mise hors tension (mais peut être redémarrée).

(Je vérifierais cela si je savais comment simuler un dhcp demande sur le 10.0.2.0/24 (quelqu'un sait-il comment faire ?)

__

Pour ceux qui veulent changer l'adresse IP en statique (dans l'adaptateur "NAT"), il suffit de trouver un moyen de coller une adresse IP correcte. nameserver en /etc/resolv.conf (peut être après le démarrage dans certains scripts d'init).

0voto

Farman Ibayev Points 1

Sur la MV Vagrant, essayez :

resolvectl dns eth0 your_server_dns_ip_address

par exemple

resolvectl dns eth0 8.8.8.8

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X