Як отримати віртуальну машину VirtualBox для використання DNS хоста?


69

Я використовую VirtualBox для своїх віртуальних машин. Налаштування моєї офісної мережі є бездротовим, тобто я підключаюсь до мережі WiFi своєї компанії, яка має локальний DNS для вирішення локальних імен (наприклад, something.mycompany.com, що надходить до 123.45.67.89). Коли я будую новий VM, він може підключатися до зовнішнього Інтернету, успадковуючи з'єднання хоста, але він не вирішує локальні імена, використовуючи локальний DNS. Тому я повинен зайти /etc/hostsна VM і вручну зробити запис після того, як я вирішуватиму ім'я на хості, що дратує.

Чи існує спосіб, щоб VirtualBox автоматично підключав гостя до DNS хоста, щоб мені не довелося робити цей крок вручну? Мій господар - гірський лев OSX , віртуальні віртуальні машини зазвичай Ubuntu, але я сумніваюся, що це має значення.

Відповіді:


98

Щоб увімкнути режим проксі-сервера DNS за допомогою резолютора хоста , запустіть таку команду:

VBoxManage modifyvm " <ім'я VM> " --natdnshostresolver1 увімкнено

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

Ви можете отримати ім'я VM, запустивши VBoxManage list runningvms.


9
Для отримання додаткової інформації для інших: це потрібно запустити від хоста. Якщо вашим хостом є Windows, відкрийте командний рядок, cd до "C: \ Program Files \ Oracle \ VirtualBox" і запустіть цю команду. Здається, у графічному інтерфейсі VirtualBox Manager не існує жодної опції (принаймні, у всіх версіях від 4. * до 5.0.20), яка дозволяє вам встановити це будь-яким іншим способом.
Грем

Я хотів би додати, що вам потрібно запустити цю команду як адміністратор. Я спробував це з мого cmd, і це не спрацювало для мене, але потім я запустив cmd як адміністратор, і все працювало чудово.
СергійОвчинник

3
Це працювало для мене, але не з Ubuntu 16.04 та останньою віртуальною скринькою для Windows
Shanteva

Не працює і для мене :(
Павло Дуров

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. Мій гість VM - Ubuntu 16.04.

Довідка Створення Linux-сервера


2
Ласкаво просимо до Супер Користувача! Ви можете запропонувати це як
редакцію

Дякую за пораду! Я спробував додати лише коментар, але це не було дозволено. Натомість я надіслав редагування.
pretzel11

1

Я також помітив, що моє VPN-з'єднання перешкоджає бродячому підключенню до Інтернету.

Завдяки цій зміні stackexc, мені вдалося вирішити, вставивши у свій Vagrantfile

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

І уникнув нудьгу від необхідності вимкнути вікно вимкнення, щоб змінити командний рядок, а потім повторно

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.