Назад | Перейти на главную страницу

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

Я запускаю новую установку Linux Mint Nadia (14). Я следую инструкциям на Vagrant Начиная но застряли на Подготовка. Кажется, что ящик 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 так что я могу выполнить подготовку.

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

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

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

VBoxManage modifyvm "VM name" --natdnsproxy1 on

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

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

VBoxManage modifyvm "VM name" --natdnshostresolver1 on

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

После 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

Некромантинг, поскольку, на мой взгляд, ни один из ответов не пролил свет на основная причина этой проблемы, которая кажется довольно интересной. В современном контексте - проблема также возникает с Debian 10 и VirtualBox 6.0.14; после установки Deb 10 по умолчанию (без графического интерфейса пользователя) с одним адаптером «NAT» (не «Сеть NAT», а по умолчанию «NAT») все выглядит нормально с DNS. Затем при изменении /etc/network/interfaces (который кажется все еще актуальным в этом дистрибутиве) на статический IP:

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

(примечание - виртуальная машина получила бы 10.0.2.15 из dhcp в любом случае) и выключение / включение виртуальной машины,

  • DNS не работает (host google.com и т.д., таймаут)
  • не могу telnet 10.0.2.3 53 (resolv.conf имеет nameserver 10.0.2.3, по умолчанию после установки).

Если я вернусь к iface enp0s3 inet dhcp и перезагрузка ВМ, DNS и telnet 10.0.2.3 53 работай.

Теперь это становится действительно захватывающим / причудливым: если вы снова попробуете inet static, и просто перезагрузись виртуальная машина, DNS и телнет все еще работает нормально; только если вы выключите / включите виртуальную машину (через виртуальный бокс), 10.0.2.3 исчезает.

На данный момент я предполагаю, что VirtualBox автоматически включает DNS-сервер / прокси на 10.0.2.3 как только он получит dhcp запрос; и это 10.0.2.3 живет до тех пор, пока виртуальная машина не отключена (но может быть перезагружена).

(Я бы проверил это, если бы знал, как подделать dhcp запрос на 10.0.2.0/24; кто-нибудь знает как?)

__

Итог для тех, кто действительно хочет изменить IP на статический (в адаптере "NAT"): просто найдите способ вставить правильный nameserver в /etc/resolv.conf (в некоторых сценариях инициализации может быть после запуска).