Wie richte ich in VirtualBox virtuelle Host-Maschinen ein, die auf das Internet zugreifen können?

98

Beim Einrichten von virtuellen Maschinen mit VirtualBox möchte ich häufig die folgenden Eigenschaften

  • vm hat eine statische ip
  • Host kann ohne Portweiterleitung auf VM zugreifen
  • vm kann auf das internet zugreifen
  • Ich kann meinen Laptop von Netzwerk zu Netzwerk verschieben (z. B. von zu Hause ins Büro zum Coffeeshop), ohne mir Gedanken über die Sicherung oder Neukonfiguration des VM zu machen

Keine der VirtualBox-Netzwerkverbindungsmethoden erfüllt diese Anforderungen für sich.

  • NAT
    Erfordert eine Portweiterleitung, wenn Sie vom Host aus eine Verbindung zum VM herstellen möchten.

  • Nur Host
    Der VM kann nicht auf das Internet zugreifen, es sei denn, der Host ist ein Router.

  • Überbrückt
    Setzt das VM dem Netzwerk aus. nicht tragbar.

Christian Long
quelle

Antworten:

110

Ich kann das gewünschte Setup erhalten, indem ich zwei Adapter auf dem VM einrichte.

VirtualBox 4.2.12
Ubuntu 12.04 Gast

Richten Sie in VirtualBox> Einstellungen> Netzwerk ein Host-Only-Netzwerk ein.

Meins heißt vboxnet0, es ist manuell konfiguriert:
ip 192.168.56.1 netmask
255.255.255.0
no dhcp

VirtualBox-Netzwerkkonfiguration VirtualBox-Netzwerkkonfiguration

Richten Sie dann in den Netzwerkeinstellungen für die virtuelle Maschine zwei Adapter ein:


Nur Host von Adapter 1 , vboxnet0

Adapter2
NAT

Starten Sie die virtuelle Maschine und melden Sie sich über die von VirtualBox bereitgestellte Konsole an.

Führen Sie dies aus, um Ihre Adapter zu sehen:

ls /sys/class/net

In meinem Fall hießen die Adapter eth1 und eth2 (und lo, die Loopback-Schnittstelle).

Bearbeiten Sie dann Ihre Netzwerkkonfiguration.

sudoedit /etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback

# Host-only interface
auto eth1
iface eth1 inet static
        address         192.168.56.20
        netmask         255.255.255.0
        network         192.168.56.0
        broadcast       192.168.56.255

# NAT interface
auto eth2
iface eth2 inet dhcp

Beachten Sie, dass eth1kein Standardgateway angegeben ist. eth2wird ein Standard-Gateway von DHCP erhalten.


Update März 2018

In dieser Antwort von @ Hugo14453 finden Sie eine aktualisierte Version, die mit Ubuntu 17.10 und höher funktioniert.

Christian Long
quelle
1
Update: Mit VirtualBox 4.3 wurde ein NAT-Dienst eingeführt, der möglicherweise zwei Schnittstellen überflüssig macht. 6.4. Übersetzungsdienst für Netzwerkadressen
Christian Long
4
Das hat mir sehr geholfen, ich benutze Virtualbox für die Entwicklung und wenn ich in meinem Haus bin, funktioniert alles korrekt, da ich das Netzwerk nach meinen Wünschen eingerichtet habe. Der Albtraum beginnt, wenn ich in ein anderes Netzwerk ziehe (Familie, Unternehmen ... ), Ich muss Webseiten-URLs ändern, einige Systemdateien löschen, neu starten Ich weiß nicht, wie oft und die Liste geht weiter. Diese Lösung kümmert sich nicht um Ihr aktuelles Netzwerk, weshalb es mir gefällt ... Schließen Sie einfach Ihren PC an ein beliebiges Netzwerk an und konzentrieren Sie sich auf Ihre Arbeit.
Nabil Kadimi
1
Vielen Dank. Das Nicht-Definieren einer Gateway-Adresse für die Nur-Host-Schnittstelle löste meine Probleme.
Florian
2
Perfekt. / etc / network / interfaces config war der Schlüssel DANKE !!!!
Byron Whitlock
1
"Beachten Sie, dass für eth1 kein Standardgateway angegeben wurde. Eth2 erhält ein Standardgateway von dhcp." <- DIESER KOMMENTAR IST DER SCHLÜSSEL.
Pere Pages
16

Ich könnte mein Problem mit einer Mischung aus Christian Longs Lösung lösen. Ich habe 2 Adapter hinzugefügt:

Adapter 1 - NAT

Adapter 2 - nur Host, vboxnet0

Der einzige Unterschied bestand in der Interface-Datei von VM:

sudoedit /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# NAT
auto eth0
iface eth0 inet dhcp
# Host only
auto eth1
iface eth1 inet dhcp

In der VirtualBox-Netzwerkkonfiguration habe ich DHCP aktiviert gelassen.

Nach einem Neustart der VM hat alles gut funktioniert.

Alan Camillo
quelle
Das funktioniert bei mir, aber ich möchte, dass die VMs statische IP-Adressen haben. Sobald ich das tue, funktioniert das Internet nicht mehr. Wenn ich beide mit DHCP einrichte, funktioniert es einwandfrei. Wie kann ich dafür sorgen, dass die Nur-Host-Schnittstelle eine statische IP-Adresse erhält?
Umar Farooq Khawaja
Nur einer, der funktionierte. Vielen Dank. +1
Jorge Campos
14

Es gibt eine andere einfache Möglichkeit, einen neuen NAT-Adapter zu erstellen

  1. Fügen Sie auf dem Hostcomputer die folgenden iptables-Regeln hinzu. Dadurch werden Pakete über den Host an das Internet weitergeleitet:

    sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT 
    
    sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    sudo iptables -A POSTROUTING -t nat -j MASQUERADE
    
  2. Sie müssen auch die IP-Weiterleitung auf dem Host aktivieren, indem Sie den folgenden Befehl ausführen:

    sudo sysctl -w net.ipv4.ip_forward=1
    
Long Bui
quelle
Dies funktioniert nur auf einem Linux-Host.
Derek Mahar
Der Dienst "dnsmasq" muss ausgeführt werden. Unter dem Link unix.stackexchange.com/a/384187/61742 finden Sie vollständige Informationen zu den Vorschlägen von @Danatela. Vielen Dank!
Eduardo Lucio
1
@EduardoLucio, bitte gib Long Bui Credits. Ich habe diesen Beitrag gerade bearbeitet, um ihn besser lesbar zu machen.
Danatela
@ Long Bui Vielen Dank für Ihren Beitrag! Nach oben! Nach oben! Nach oben! Nach oben! Nach oben! Nach oben! = D
Eduardo Lucio
12

Die Netzwerkkonfiguration wurde in Ubuntu 17.10.1 geändert. Sie verwenden jetzt die netplan-Konfiguration.

Ich bin dieser Anleitung hier gefolgt

Führen Sie als Migration von Christians Antwort die folgenden Schritte aus:

Erstellen Sie eine neue Konfigurationsdatei in / etc / netplan, die Ihre Host-Only-Adapter-Konfiguration enthält.

z.B sudo nano /etc/netplan/02-netcfg.yaml

Geben Sie Folgendes ein, um eine statische IP von 192.168.56.12 zu konfigurieren. Dabei enp0s3handelt es sich um den Namen Ihres Host-Only-Adapters.

network:
    version: 2
    renderer: networkd
    ethernets:
        enp0s3:
            addresses:
                - 192.168.56.12/24
            dhcp4: no

Führen Sie dann die folgenden zwei Befehle aus:

sudo netplan generate
sudo netplan apply

NAT sollte ohne Konfiguration funktionieren und ausgeführt werden ifconfig, um das Ergebnis zu sehen:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.12  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a00:27ff:fe06:6cdd  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:06:6c:dd  txqueuelen 1000  (Ethernet)
        RX packets 252  bytes 23076 (23.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 208  bytes 30015 (30.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.3.15  netmask 255.255.255.0  broadcast 10.0.3.255
        inet6 fe80::a00:27ff:fe4d:a6b8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:4d:a6:b8  txqueuelen 1000  (Ethernet)
        RX packets 95  bytes 94894 (94.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 85  bytes 7436 (7.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
Hugo
quelle
1
Vielen Dank! Ich habe meiner alten Antwort einen Update-Bereich hinzugefügt und mit dieser neuen Info verlinkt.
Christian Long
Ich bin deiner Lösung gefolgt, aber ich vermisse keine Unterstützung für enp0s8. Ich habe manuell enable dhcp4 für enp0s8 in netplan hinzugefügt und schließlich sowohl enp0s3 als auch enp0s8 aufgerüstet. Hoffe das wird jemandem helfen.
Dzmitry Prakapenka
3

Ich habe gerade 2 Adapter hinzugefügt:

Nur Host von Adapter 1, vboxnet0

Adapter2 NAT

Und es funktioniert perfekt, ich kann vom Host auf die virtuelle Maschine zugreifen, und ich habe Internet auf dem VM.

Guillermo Gonzalez
quelle
2

Ja, ich hatte dieses Problem, es war ein totaler Schmerz! Aber ich habe es gelöst, indem ich einfach den Squid Cache Proxy-Server auf meinem physischen PC installiert habe - und auf diese Weise konnten meine Host-Internet-Virtualbox-PCs eine Verbindung zum Internet herstellen!

Ich habe hier eine kurze 3-Minuten-Anleitung gemacht - für alle, die wollen, wie es funktioniert! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/

B0zmeister
quelle
Das hat großartig funktioniert, danke fürs Teilen. Dies ist bei weitem der einfachste Weg, um alles zum Laufen zu bringen.
Laurent
Hallo Laurent - keine Probleme - froh, dass es geholfen hat! Ich liebe es, die Virtualbox-PCs von einem anderen Netzwerk aus zu betreiben - aber - wenn die Internetverbindung funktioniert :)
B0zmeister
Der Link ist jetzt tot. Ziehen Sie in Betracht, die Anweisungen hier zu verschieben.
S3V3N