Wie kann man VirtualBox-VMs dazu bringen, das DNS des Hosts zu verwenden?

67

Ich benutze VirtualBox für meine VMs. Mein Büronetzwerk ist drahtlos eingerichtet, dh ich verbinde mich mit dem WiFi-Netzwerk meines Unternehmens, das über einen lokalen DNS verfügt, um lokale Namen aufzulösen (z. B. something.mycompany.com , das zu 123.45.67.89 wechselt). Wenn ich eine neue VM erstelle, kann diese eine Verbindung zum externen Internet herstellen, wobei die Verbindung des Hosts übernommen wird. Lokale Namen werden jedoch nicht mithilfe des lokalen DNS aufgelöst. Also muss ich in /etc/hostsdie VM gehen und manuell einen Eintrag machen, nachdem ich den Namen auf dem Host aufgelöst habe, was ärgerlich ist.

Gibt es eine Möglichkeit, dass VirtualBox den Gast automatisch mit dem DNS des Hosts verbindet, sodass ich diesen manuellen Schritt nicht ausführen muss? Mein Host ist OSX Mountain Lion , die VMs sind normalerweise Ubuntu, aber ich bezweifle, dass das eine Rolle spielen sollte.

amphibient
quelle

Antworten:

95

Führen Sie den folgenden Befehl aus, um den DNS-Proxy-Modus mit dem Resolver des Hosts zu aktivieren :

VBoxManage modifyvm " <VM name> " --natdnshostresolver1 on

Infolgedessen werden DNS-Anforderungen des Gastbetriebssystems mithilfe der Host-DNS-API abgefangen und aufgelöst, anstatt wie bei mit externen DNS-Servern eine Verbindung zum Gastbetriebssystem herzustellen --natdnsproxy1 on.

Sie können den Namen der VM abrufen, indem Sie ausführen VBoxManage list runningvms.

Josiah
quelle
9
Für weitere Informationen für andere: Dies muss vom Host ausgeführt werden. Wenn Ihr Host Windows ist, öffnen Sie eine Eingabeaufforderung, wechseln Sie zu "C: \ Programme \ Oracle \ VirtualBox" und führen Sie diesen Befehl aus. Es scheint keine Option in der VirtualBox Manager-Benutzeroberfläche zu geben (zumindest in allen Versionen von 4. * bis 5.0.20), mit der Sie dies auf andere Weise einstellen können.
Graham
Ich möchte hinzufügen, dass Sie diesen Befehl als Administrator ausführen müssen. Ich habe es von meinem cmd aus versucht und es hat bei mir nicht funktioniert, aber dann habe ich cmd als Administrator ausgeführt und alles hat einwandfrei funktioniert.
SergeyOvchinnik
3
Dies funktionierte früher für mich, aber nicht für Ubuntu 16.04 und die neueste Virtualbox für Windows
Shanteva
Funktioniert auch nicht für mich :(
Pavel Durov
1
Dies funktioniert weiterhin mit MacOs High Sierra als Host, VirtualBox 5.2.6, auf dem Windows 7 in der VM ausgeführt wird.
John Eikenberry
6

Ja, es ist möglich. In VirtualBox stehen viele Modi zur Verfügung, um eine Netzwerkverbindung zwischen dem Gast und dem Host herzustellen. Anstatt den NAT-Modus (der Standard ist) zu verwenden, können Sie den Bridge-Modus verwenden, in dem Ihr Gastcomputer als vollständig separate Entität in Ihrem Netzwerk behandelt werden kann. Daher wird Ihr Gast nicht nur von Ihrem Host, sondern auch von jedem anderen Computer (z. B. Ihrem DNS-Server) als separater Computer betrachtet.

Sobald Sie den Bridge-Modus eingerichtet haben, rufen Sie einfach Ihren Ubuntu-Gast auf und lassen Sie ihn den DNS-Servernamen oder die IP-Adresse Ihres Unternehmens verwenden. Lesen Sie dieses Tutorial für weitere Informationen: http://prahladyeri.wordpress.com/2012/08/02/how-to-setup-a-virtual-lan-on-your-machine-using-oracle-virtualbox/

Prahlad Yeri
quelle
5

Dies war ein Top-Google-Ergebnis, deshalb wollte ich es für andere klarstellen. Josiahs Lösung funktionierte für mich mit der Hinzufügung der Zeile:

hosts: files dns zu /etc/nsswitch.conf

Wie bereits erwähnt, funktioniert die ursprüngliche Lösung nicht über Ubuntu 16.04. Meine Gast-VM ist Ubuntu 16.04.

Referenz Erstellen eines Linux-Servers

Brezel11
quelle
2
Willkommen bei Super User! Sie könnten dies als eine Änderung zu Josiahs Antwort vorschlagen, die den
Suchenden
Danke für den Tipp! Ich habe versucht, nur einen Kommentar hinzuzufügen, aber das war nicht erlaubt. Ich habe stattdessen die Bearbeitung eingereicht.
Brezel11
1

Ich habe auch bemerkt, dass meine VPN-Verbindung die Internetverbindung stört.

Dank dieses Stapelaustauschs konnte ich das Problem lösen, indem ich es in mein Vagrantfile einbettete

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

Und vermieden die Mühe, die Box herunterzufahren, um sie über die Befehlszeile zu ändern und dann erneut bereitzustellen

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
quelle
0

Für mich hat es geholfen, einen weiteren Adapter mit Host-Only-Adapter hinzuzufügen, während der erste (NAT-Modus) dort ebenfalls beibehalten wurde.

[screenshot1]

Michel Samia
quelle