Vagrant / VirtualBox DNS 10.0.2.3 не работает

78

Я использую новую версию Linux Mint Nadia (14). Я следую инструкциям Vagrant Getting Started, но застрял на Provisioning . Кажется, коробка Vagrant не может подключиться снаружи, и поэтому я не могу ничего установить, используя Chef или Puppet.

В основном Vagrant resolve.confсодержится nameserver 10.0.2.3. Но с этим набором я не могу пинговать us.archive.ubuntu.com.

Если я изменю его на 8.8.8.8то, я смогу пропинговать, us.archive.ubuntu.comно он не останется установленным, и после перезагрузки он снова вернется к 10.0.2.3- так что инициализация не будет выполнена снова.

В идеале я хотел бы 10.0.2.3работать над моей настройкой. В противном случае я бы хотел, чтобы способ навсегда измениться, resolv.confчтобы я мог заниматься подготовкой.

Рудольф Вавруч
источник
2
К вашему сведению, я только что столкнулся с этой же проблемой с ubuntu/xenial64коробкой, и это оказалось ошибкой с самой коробкой .
Эйдан Фельдман
@AidanFeldman то же самое для меня. Просто переключился на bento/ubuntu-16.04и DNS работает нормально без каких-либо дальнейших исправлений.
HenningCash

Ответы:

84

Вы можете обойти эту проблему одним из двух способов, оба из которых описаны в руководстве VirtualBox :

Включение прокси DNS в режиме NAT

Механизм NAT по умолчанию предлагает те же DNS-серверы гостю, которые настроены на хосте. В некоторых случаях может быть желательно скрыть IP-адреса DNS-сервера от гостя, например, когда эта информация может измениться на хосте из-за истечения срока аренды DHCP. В этом случае вы можете указать механизму NAT действовать как DNS-прокси, используя следующую команду:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

Использование распознавателя хоста в качестве DNS-прокси в режиме NAT

Для разрешения сетевых имен DHCP-сервер механизма NAT предлагает список зарегистрированных DNS-серверов хоста. Если по какой-то причине вам необходимо скрыть этот список DNS-серверов и использовать настройки преобразователя хоста, тем самым заставляя механизм VirtualBox NAT перехватывать запросы DNS и перенаправлять их в преобразователь хоста, используйте следующую команду:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on

Обратите внимание, что этот параметр аналогичен режиму прокси-сервера DNS, однако, в то время как режим прокси-сервера просто перенаправляет запросы DNS на соответствующие серверы, режим распознавателя будет интерпретировать запросы DNS и использовать API-интерфейс DNS хоста для запроса информации и возврата ее гостю. ,

Майкл Хэмптон
источник
1
Спасибо. «Использование распознавателя хоста в качестве прокси-сервера DNS в режиме NAT» добилось цели. Жаль, что я должен делать это для каждой установки Vagrant.
Рудольф Вавруч
1
Я почти всегда использую мостовой режим для виртуальных машин, который устраняет проблему (и целый ряд других проблем).
Майкл Хэмптон
3
Только что возникла проблема с обновлением до 4.2.20, «Использование распознавателя хоста в качестве прокси-сервера DNS в режиме NAT» также помогло мне. Спасибо !
Эдомавр
73

После https://serverfault.com/a/453260/14832 , если вы используете формат конфигурации Vagrantfile версии 2, тот, который запускается:

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

Тогда вы можете добавить это в этот файл конфигурации:

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

Если вы используете старый формат конфигурации, но используете Vagrant 1.1+, вы можете добавить это в конец файла:

Vagrant.configure("2") do |config|
  config.vm.provider :virtualbox do |vb|
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end
end
JonTheNiceGuy
источник
2
Добавление этого к моему Vagrantfileисправило проблему, где я не мог бежать, gem install...не получая глупые ошибки DNS :) Спасибо!
Ник