Jak zdobyć maszyny wirtualne VirtualBox do korzystania z DNS hosta?

69

Używam VirtualBox dla moich maszyn wirtualnych. Moje biuro jest konfiguracja sieci bezprzewodowej, to znaczy połączyć się z siecią Wi-Fi mojej firmy, która ma lokalny DNS rozwiązywać lokalne nazwy (takich jak something.mycompany.com zamiar 123.45.67.89). Kiedy buduję nową maszynę wirtualną, może ona łączyć się z zewnętrznym Internetem dziedziczącym połączenie hosta, ale nie rozpoznaje lokalnych nazw za pomocą lokalnego DNS. Więc muszę wejść /etc/hostsna maszynę wirtualną i ręcznie wprowadzić wpis po tym, jak rozwiążę nazwę na hoście, co jest denerwujące.

Czy istnieje sposób, aby VirtualBox automatycznie łączył gościa z DNS hosta, aby nie musiałem wykonywać tego ręcznego kroku? Mój host to OSX Mountain Lion , maszyny wirtualne są zazwyczaj Ubuntu, ale wątpię, żeby to miało znaczenie.

amfibia
źródło

Odpowiedzi:

99

Aby włączyć tryb serwera proxy DNS za pomocą programu tłumaczącego hosta , uruchom następujące polecenie:

VBoxManage modyfikvm " <nazwa VM> " --natdnshostresolver1 włączony

W rezultacie żądania DNS systemu operacyjnego gościa będą przechwytywane i rozwiązywane za pomocą interfejsu API hosta DNS, zamiast połączenia systemu gościa z zewnętrznymi serwerami DNS, jak w przypadku --natdnsproxy1 on.

Możesz uzyskać nazwę maszyny wirtualnej, uruchamiając VBoxManage list runningvms.

Josiah
źródło
9
W celu uzyskania dalszych informacji dla innych: należy to uruchomić z hosta. Jeśli hostem jest system Windows, otwórz wiersz polecenia, przejdź do „C: \ Program Files \ Oracle \ VirtualBox” i uruchom to polecenie. Wydaje się, że nie ma żadnej opcji w graficznym interfejsie VirtualBox Manager (przynajmniej we wszystkich wersjach od 4. * do 5.0.20), która pozwala ustawić to w inny sposób.
Graham
Chciałbym dodać, że musisz uruchomić to polecenie jako administrator. Próbowałem z mojego cmd i nie działało to dla mnie, ale potem uruchomiłem cmd jako administrator i wszystko działało idealnie dobrze.
SergeyOvchinnik,
3
To kiedyś działało dla mnie, ale nie z Ubuntu 16.04 i najnowszą wirtualną skrzynką dla Windows
Shanteva
Dla mnie też nie działa :(
Pavel Durov
1
To nadal działa z MacOs High Sierra jako hostem, VirtualBox 5.2.6, z systemem Windows 7 na maszynie wirtualnej.
John Eikenberry
6

Tak to mozliwe. W VirtualBox dostępnych jest wiele trybów do ustanowienia sieci między gościem a gospodarzem. Zamiast korzystania z trybu NAT (który jest domyślny), możesz użyć trybu mostu, w którym twoja maszyna-gość może być traktowana jako całkowicie oddzielna jednostka w twojej sieci. Tak więc nie tylko twój host, ale każda inna maszyna (np. Serwer DNS) będzie widzieć twojego gościa jako oddzielną maszynę.

Po skonfigurowaniu trybu pomostowego, po prostu przejdź do gościa ubuntu i poproś go o użycie nazwy serwera DNS lub adresu IP Twojej firmy. Przeczytaj ten samouczek, aby uzyskać więcej informacji: http://prahladyeri.wordpress.com/2012/08/02/how-to-setup-a-virtual-lan-on-your-machine-using-oracle-virtualbox/

Prahlad Yeri
źródło
5

To był najlepszy wynik Google, więc chciałem wyjaśnić innym. Rozwiązanie Josiaha działało dla mnie z dodaniem wiersza:

hosts: files dns do /etc/nsswitch.conf

Jak zauważyli inni, oryginalne rozwiązanie nie działa powyżej Ubuntu 16.04. Moją maszyną wirtualną jest Ubuntu 16.04.

Dokumentacja Tworzenie serwera Linux

precel 11
źródło
2
Witamy w Super User! Możesz to zaproponować jako edycję odpowiedzi Josiaha, która pomogłaby tym, którzy szukają :)
bertieb
Dzięki za wskazówkę! Próbowałem dodać tylko komentarz, ale nie było to dozwolone. Zamiast tego przesłałem edycję.
precel 11
1

Zauważyłem również, że moje połączenie VPN zakłóca błędne połączenie internetowe.

Dzięki tej wymianie stosów udało mi się rozwiązać, osadzając się w pliku Vagrantfile

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

I uniknął nudy konieczności zamykania skrzynki w celu modyfikacji za pomocą wiersza poleceń, a następnie zmiany

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
Valdis Vitayaudom
źródło
0

Dla mnie pomogło to dodać kolejny adapter z adapterem tylko hosta, jednocześnie utrzymując tam pierwszy (tryb NAT).

[zrzut ekranu1]

Michel Samia
źródło