Как заставить виртуальные машины VirtualBox использовать DNS хоста?


69

Я использую VirtualBox для своих виртуальных машин. Моя офисная сеть настроена на беспроводную связь, т. Е. Я подключаюсь к сети Wi-Fi моей компании, которая имеет локальный DNS для разрешения локальных имен (например, что- то на my.mycompany.com, 123.45.67.89). Когда я создаю новую виртуальную машину, она может подключаться к внешнему интернету, наследуя соединение с хостом, но не разрешает локальные имена, используя локальный DNS. Поэтому я должен войти в /etc/hostsвиртуальную машину и вручную сделать запись после того, как я разрешу имя на хосте, что раздражает.

Есть ли способ, чтобы VirtualBox автоматически подключал гостя к DNS хоста, чтобы мне не пришлось выполнять этот шаг вручную? Мой хост - OSX Mountain Lion , виртуальные машины - обычно Ubuntu, но я сомневаюсь, что это должно иметь значение.

Ответы:


99

Чтобы включить режим DNS-прокси с помощью распознавателя хоста , выполните следующую команду:

VBoxManage modifyvm " <имя виртуальной машины> " --natdnshostresolver1 on

В результате DNS-запросы гостевой ОС будут перехватываться и обрабатываться с использованием DNS-API хоста, а не с подключением гостевой ОС к внешним DNS-серверам --natdnsproxy1 on.

Вы можете получить имя виртуальной машины, запустив VBoxManage list runningvms.


9
Для получения дополнительной информации для других: это должно быть запущено с хоста. Если ваш хост - Windows, откройте командную строку, перейдите в «C: \ Program Files \ Oracle \ VirtualBox» и выполните эту команду. Похоже, в графическом интерфейсе VirtualBox Manager нет никакой опции (по крайней мере, во всех версиях от 4. * до 5.0.20), которая позволяет вам установить это любым другим способом.
Грэм

Я хотел бы добавить, что вам нужно запустить эту команду от имени администратора. Я попробовал это из моего cmd, и он не работал для меня, но затем я запустил cmd как администратор, и все это прекрасно работало.
Сергей Овчинник

3
Раньше это работало для меня, но не с Ubuntu 16.04 и последней
виртуальной коробкой

У меня тоже не работает :(
Павел Дуров

1
Это по-прежнему работает с MacOs High Sierra в качестве хоста VirtualBox 5.2.6, работающего под управлением Windows 7 в виртуальной машине.
Джон Эйкенберри

6

Да, это возможно. В VirtualBox доступно много режимов для установления связи между гостем и хостом. Вместо использования режима NAT (который по умолчанию) вы можете использовать режим моста, в котором ваша гостевая машина может рассматриваться как совершенно отдельный объект в вашей сети. Таким образом, не только ваш хост, но и любой другой компьютер (например, ваш DNS-сервер) будет видеть вашего гостя как отдельный компьютер.

После настройки режима моста просто перейдите к гостю Ubuntu и заставьте его использовать имя DNS-сервера вашей компании или IP-адрес. Прочитайте этот учебник для получения дополнительной информации: http://prahladyeri.wordpress.com/2012/08/02/how-to-setup-a-virtual-lan-on-your-machine-using-oracle-virtualbox/


5

Это был лучший результат Google, поэтому я хотел уточнить для других. Решение Иосии сработало для меня с добавлением строки:

hosts: files dns в /etc/nsswitch.conf

Как отмечали другие, оригинальное решение не работает над Ubuntu 16.04. Моя гостевая виртуальная машина - Ubuntu 16.04.

Ссылка Создание Linux-сервера


2
Добро пожаловать в Супер пользователя! Вы можете предложить это как правку ответа Иосии, который поможет тем, кто смотрит :)
bertieb

Спасибо за чаевые! Я попытался добавить только комментарий, но это было запрещено. Я представил изменения вместо.
pretzel11

1

Я также заметил, что мое VPN-соединение мешает бродячему интернет-соединению.

Благодаря этому обмену стеками я смог решить, встроив в свой Vagrantfile

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

И избежал скуки необходимости выключить окно, чтобы изменить через командную строку, а затем reprovision

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

0

Для меня это помогло добавить еще один адаптер с адаптером только для хоста, сохранив при этом и первый (режим NAT).

[Screenshot1]

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.