Vagrant / VirtualBox DNS 10.0.2.3 nie działa

78

Korzystam z nowej instalacji Linux Mint Nadia (14). Postępuję zgodnie z instrukcjami w Vagrant Getting Started, ale utknąłem na Provisioning . Wygląda na to, że Vagrant nie może się połączyć na zewnątrz, więc nie mogę zainstalować niczego za pomocą Chef lub Puppet.

W podstawowym Vagrant resolve.confzawiera nameserver 10.0.2.3. Ale z tym zestawem nie mogę pingować us.archive.ubuntu.com.

Jeśli zmienię to na, 8.8.8.8wtedy mogę pingować, us.archive.ubuntu.comale nie pozostaje ustawiony, a po ponownym uruchomieniu ponownie zmienia się na 10.0.2.3- więc inicjowanie ponownie się nie powiedzie.

Idealnie chciałbym 10.0.2.3pracować nad moją konfiguracją. Jeśli tego nie zrobię, chciałbym zmienić sposób na stałe, resolv.confaby móc dokonać obsługi administracyjnej.

Rudolf Vavruch
źródło
2
Do Twojej wiadomości, że właśnie trafiłem na ten sam problem z ubuntu/xenial64pudełkiem i okazało się, że to błąd z samym pudełkiem .
Aidan Feldman
@AidanFeldman to samo dla mnie. Właśnie przełączono na bento/ubuntu-16.04i DNS działa poprawnie bez żadnych dalszych poprawek.
HenningCash

Odpowiedzi:

84

Możesz obejść ten problem na jeden z dwóch sposobów, oba opisane w podręczniku VirtualBox :

Włączanie serwera proxy DNS w trybie NAT

Mechanizm NAT domyślnie oferuje gościom te same serwery DNS, które są skonfigurowane na hoście. W niektórych scenariuszach pożądane może być ukrycie adresów IP serwera DNS przed gościem, na przykład gdy informacje te mogą ulec zmianie na hoście z powodu wygaśnięcia dzierżawy DHCP. W takim przypadku możesz powiedzieć silnikowi NAT, aby działał jako serwer proxy DNS, używając następującego polecenia:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

Używanie programu tłumaczącego hosta jako serwera proxy DNS w trybie NAT

W celu rozpoznawania nazw sieci serwer DHCP silnika NAT oferuje listę zarejestrowanych serwerów DNS hosta. Jeśli z jakiegoś powodu musisz ukryć tę listę serwerów DNS i użyć ustawień programu tłumaczącego hosta, zmuszając w ten sposób silnik NAT VirtualBox do przechwytywania żądań DNS i przekazywania ich do programu tłumaczącego hosta, użyj następującego polecenia:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on

Należy pamiętać, że to ustawienie jest podobne do trybu proxy DNS, jednak podczas gdy tryb proxy tylko przekazuje żądania DNS do odpowiednich serwerów, tryb resolvera zinterpretuje żądania DNS i użyje interfejsu API DNS hosta do zapytania informacji i zwracania go do gościa .

Michael Hampton
źródło
1
Dziękuję Ci. „Wykorzystanie programu tłumaczącego hosta jako proxy DNS w trybie NAT” załatwiło sprawę. Szkoda tylko, że muszę to robić przy każdej instalacji Vagrant.
Rudolf Vavruch
1
Prawie zawsze używam trybu pomostowego dla maszyn wirtualnych, co eliminuje problem (i całą masę innych problemów).
Michael Hampton
3
Właśnie miałem problem z aktualizacją do wersji 4.2.20: „Użycie programu tłumaczącego hosta jako serwera proxy DNS w trybie NAT” również mi pomogło. Dzięki !
edomaur,
73

Kontynuując na https://serverfault.com/a/453260/14832 , jeśli używasz formatu konfiguracji Vagrantfile w wersji 2, ten, który się rozpoczyna:

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

Następnie możesz dodać to do tego pliku konfiguracyjnego:

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

Jeśli używasz starego formatu konfiguracji, ale używasz Vagrant 1.1+, możesz dołączyć to na końcu pliku:

Vagrant.configure("2") do |config|
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end
end
JonTheNiceGuy
źródło
2
Dodanie tego do mojego Vagrantfilerozwiązało problem polegający na tym, że nie mogłem uruchomić gem install...bez głupich błędów DNS :) Dzięki!
Nick