VirtualBox: zwei Netzwerkschnittstellen (nur NAT und Host) in einem Debian-Gast auf Ubuntu

48

Ich habe auf VirtualBox eine Debian-VM mit zwei Schnittstellen erstellt: eine NAT-Schnittstelle (für den Internetzugang) und eine Host-reine. Ich weiß jedoch nicht, wie beide Schnittstellen gleichzeitig funktionieren sollen. Wenn ich den Host-only als Adapter 1 definiere, kann ich vom Host aus auf meine VM zugreifen, aber nicht über das Internet. Wenn ich das NAT als Adapter 1 definiere, kann ich auf das Internet zugreifen, aber nicht auf mein Gast-Debian.

Wie kann ich also beide Schnittstellen zusammenarbeiten lassen?

Hinweis : Ich versuche immer noch, einen Port von meinem Host auf den SSH-Port von meinem Gast zu mappen, also muss ich nicht vorschlagen, dies zu tun :)

BEARBEITEN : Dies ist die Ausgabe von, ifconfigwenn der erste Adapter nur der Host ist :

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:495 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:48187 (47.0 KiB)  TX bytes:38222 (37.3 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

Dies ist die Ausgabe von, netstat -nrwenn der erste Adapter der Nur-Host- Adapter ist :

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

Dies ist die Ausgabe von, ifconfigwenn der erste Adapter der NAT ist :

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:53 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6076 (5.9 KiB)  TX bytes:5526 (5.3 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1664 (1.6 KiB)  TX bytes:1664 (1.6 KiB)

Dies ist die Ausgabe von, netstat -nrwenn der erste Adapter der NAT ist :

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.0.2.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         10.0.2.2        0.0.0.0         UG        0 0          0 eth0
brandizzi
quelle

Antworten:

48

Die Lösung war ganz einfach: Ich habe musste die folgenden Zeilen in hinzufügen Debian virtuelle Maschine ‚s - /etc/network/interfacesDatei:

allow-hotplug eth1
iface eth1 inet dhcp

Die zweite Zeile weist die Schnittstelle an, eine IP über DHCP zu beziehen. Die erste Zeile lädt die Schnittstelle beim Booten.

Um die Änderungen auf ein laufendes System anzuwenden, rufen Sie Folgendes auf:

ifup eth1

Der Name für die eth1Schnittstelle kann variieren. Verwenden Sie ihn, ifconfig -aum alle verfügbaren Schnittstellen aufzulisten.

EDIT : voll /etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth1
iface eth1 inet dhcp
brandizzi
quelle
1
Ich kann bestätigen. Debian richtet die zweite Schnittstelle nicht in ein /etc/network/interfaces. Mein Problem wurde behoben, danke. Für ein mögliches Debugging sind dies zwei von Virtualbox bereitgestellte virtio-Schnittstellen. Eine ist die NAT-Schnittstelle, die für den Internetzugang verwendet wird (NATs werden einzeln von vbox bereitgestellt), die andere ist ein Host-Only-Netzwerk mit DHCP in einer völlig anderen privaten IP-Klasse. Debian-Version 6.0.6 x64 getestet.
Davolfman
Kannst du bitte deine ganze / etc / network / interfaces posten? Habe jetzt seit 2 Tagen damit zu kämpfen.
John Nicholas
@JohnNicholas fertig. Beachten Sie, dass Sie das ändern , bei dem Gast /etc/network/interfaces - Datei.
Brandizzi
Prost, meins war das gleiche. Mein Problem war, dass wenn ich den NAT-Adapter zuerst in der Vbox hatte, der andere (Host-) Adapter versuchen würde, den DHCP-Server auf diesem Adapter zu verwenden, und alles schief gehen würde. Als ich die Adapter in vbox nur als Host bestellt habe, hat NAT alle angefangen zu funktionieren (unabhängig davon, wie sie interessanterweise unter Linux bestellt wurden). Netctl hatte dieses Problem nicht in einem anderen VM.
John Nicholas
2
Das funktioniert super, danke! Ubuntu 18 verwendet jedoch jetzt eine neue Oberfläche mit dem Namen "netplan". Irgendeine Idee, wie man das oben genannte in netplan repliziert?
Yahermann
11

Ich hatte ein ähnliches Problem mit meiner Ubuntu 14.04-VM, und die von @brandizzi für Debian vorgeschlagene Lösung funktionierte mit nur geringen Änderungen.

EDIT: file /etc/network/interfaces:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

Für UBUNTU 16.04

Führen Sie den Befehl aus

ifconfig -a

Suchen Sie nach einer neuen Schnittstelle, wie in meinem Fall 'enp0s8'.

EDIT file /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet dhcp  
Pandurang Patil
quelle
3
Dies gilt jetzt auch für Debian 9+ (Ubuntu 16-Setup)
Maksim Luzik
3

Beide Adapter sollten in Debian konfiguriert sein

Es scheint, dass in beiden Fällen nur ein Adapter konfiguriert ist, daher Ihr Problem.

Erstellen Sie 2 Adapter in der VirtualBox-Konfiguration Ihrer VM und starten Sie diese. Wenn Sie bei Verwendung von ifconfig nur einen konfigurierten Adapter sehen (ein einzelnes eth0, kein eth1), sollten Sie das Netzwerkkonfigurationstool für Debian (Network Manager, ifupdown usw.) verwenden, um beide Schnittstellen in DHCP zu konfigurieren. Sie sollten also eth0 und eth1 in DHCP haben.

Huygens
quelle
0

Stellen Sie sicher, dass Sie für jede Schnittstelle separate Subnetze für den privaten Adressraum verwenden.

Für die Schnittstelle NAT könnten Sie beispielsweise eine Adresse im Bereich 192.168.0.0/16 verwenden.

Die Schnittstelle, die "nur Host" ist, könnte sich im Bereich 10.0.0.0/24 befinden.

George M
quelle
Nun, sie sind getrennt (mein NAT-Raum ist 10.0.2.0/24 und mein NAT ist 192.168.56.0/24).
Brandizzi
Können Sie Ihre Frage so bearbeiten, dass sie die Ausgabe von enthält, ifconfigund netstat -nrwir können sehen, wie die Schnittstellen und das Routing konfiguriert sind?
George M
Ok, ich habe die Ausgabe der Befehle zur Frage hinzugefügt.
Brandizzi