So richten Sie ein NAT- und Host-Only-Netzwerk mit statischer IP-Adresse in VirtualBox ein

22

Ich versuche, eine Gruppe von Gästen in VirtualBox so einzurichten, dass jeder von ihnen auf das Internet zugreifen kann und für beide und den Host sichtbar ist. Ich möchte auch, dass die Gäste statische IP-Adressen haben.

Hier ist das Verfahren, das ich bisher befolgt habe:

  1. Deaktivieren Sie die DHCP-Serverfunktion des Host-Only-Netzwerks, die in diesem Setup verwendet werden soll
  2. Ändern Sie die dem Host zugewiesene IP-Adresse in 192.168.56.254
  3. Erstellen eines Gastcomputers mit 2 Netzwerkschnittstellenkarten (NIC)
  4. Konfigurieren Sie die erste Netzwerkkarte für die Verwendung von NAT
  5. Konfigurieren Sie die 2. Netzwerkkarte für die Verwendung des Nur-Hot-Only-Netzwerks
  6. Installieren Sie jeweils das Betriebssystem (Ubuntu Server 13.10)
  7. Aktualisieren Sie das Betriebssystem
  8. Konfigurieren Sie das Netzwerk wie folgt, indem Sie / etc / network / interfaces bearbeiten
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254
dns-search cloudspace.local
dns-nameservers 8.8.8.8 8.8.4.4
  1. Speicher die Datei
  2. Starten Sie neu

Wenn der Gast wieder hochfährt, funktioniert das Host-Only-Netzwerk einwandfrei. Die Rechnerpaare Host / Gast und Gast / Gast können sich gegenseitig anpingen, das Internet funktioniert jedoch nicht, da dies apt-getfehlschlägt.

Wenn ich dann einen service networking restartBefehl gebe, beginnt das Netzwerk so zu funktionieren, wie es sollte.

Was mache ich falsch?

Ich habe versucht, die Reihenfolge zu ändern, in der die Netzwerkkarten in der /etc/network/interfacesDatei angezeigt werden. Ich habe außerdem das NAT / Host-Only-Netzwerk zwischen den beiden Netzwerkkarten ausgetauscht. Nichts hat geklappt.

Der Host ist Windows 8.1 und der Gast ist Ubuntu Server 13.10. Ich habe das gleiche unter Mac OS X mit ähnlichen Ergebnissen versucht.

Ich würde mich sehr über jede Hilfe freuen.

Aktualisieren:

Ich habe die Ausgabe der folgenden Befehle eingefügt, um die Diagnose zu erleichtern:

  • cat / etc / network / interfaces
  • ifconfig -a
  • route -n
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:75:47:64
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe75:4764/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1180 (1.1 KB)  TX bytes:1332 (1.3 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:93:98:d8
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe93:98d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:140 errors:0 dropped:0 overruns:0 frame:0
          TX packets:225 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14418 (14.4 KB)  TX bytes:27378 (27.3 KB)

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:65536  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:1184 (1.1 KB)  TX bytes:1184 (1.1 KB)

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.254  0.0.0.0         UG    0      0        0 eth1
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Update 2:

Nachdem ich ausgeführt habe sudo service networking restart, wird die Ausgabe von route -n:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Wie kann ich diese Konfiguration beim Booten sicherstellen?

Umar Farooq Khawaja
quelle

Antworten:

16

Es ist einfacher, das Problem zu beheben, wenn Sie die Ergebnisse veröffentlichen, die beim Pingen einer externen Adresse (z. B. der von Ihnen verwendeten Google DNS-Server), der aktuellen Netzwerkeinstellungen und der Routing-Tabelle angezeigt werden.

/sbin/ifconfig -a
/sbin/route -n

Ohne mehr zu wissen, ist dies ein Schuss in die Dunkelheit, aber ich gehe davon aus, dass entweder a) Sie keine DHCP-Adresse für eth0 erhalten oder b) Ihre Gateway-Einstellungen für eth1 mit der zugewiesenen Standardroute für DHCP in Konflikt geraten.

Wenn Sie keine DHCP-Adresse für eth0 erhalten, ist dies wahrscheinlich eine Fehlkonfiguration in VirtualBox (wie das Zurückholen Ihrer Adapter).

In beiden Fällen benötigen Sie keine Gateway- oder DNS-Einstellungen, die speziell für eth1 zugewiesen wurden, da diese von DHCP für eth0 zugewiesen werden. Daher entferne ich die Zeilen gateway, dns-search und dns-nameservers aus Ihrer Konfiguration. Ihre virtuellen Maschinen können weiterhin ohne Gateway-Einstellung kommunizieren, wenn sie sich im selben Netzwerk befinden und VirtualBox richtig eingerichtet ist.

Bearbeiten: Um sicherzustellen, dass Sie nach einem Neustart kein Gateway auf eth1 haben, entfernen Sie die Zeilen aus Ihrem eth1-Block, so dass es so aussieht:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

Wenn Sie fertig sind, enthält Ihre Interface-Datei keine Gateway-Leitungen mehr.

jkt123
quelle
Ich habe die Diagnose hinzugefügt, wie Sie vorgeschlagen haben. Ich denke, die richtige Antwort ist (b), dh, die Gateway-Einstellungen für eth1werden mit der zugewiesenen Standardroute DHCP durcheinander gebracht. Gibt es eine Lösung dafür?
Umar Farooq Khawaja
1
Ich habe meine Antwort bearbeitet, um zu zeigen, wie Ihr eth1-Block in der Interface-Datei aussehen soll. Sie brauchen keine Netzwerk- oder Broadcast-Leitungen und sollten auch keine Gateway-Leitung haben. Entfernen Sie diese drei.
jkt123
3

Ich habe diese Lösung gefunden, die der Antwort von @ jkt123 und der Frage von @ Umar entspricht, aber kürzer ist. Ich würde mich über Feedback freuen!

Aktivieren Sie in virtualbox sowohl NAT- als auch Host-Only- Netzwerke. (Übrigens: Es funktioniert auf meinem Win7-Host. Ich weiß nicht, wie man das unter Linux macht.)

Auf dem Host - Finden Sie die IP-Adresse der "Nur-Host" -Schnittstelle

ipconfig /all     # for windows host
ifconfig -a       # for linux host

Bearbeiten Sie im Gast / etc / network / interfaces . Der Trick war die Umkehrung der Reihenfolge eth1 (nur Host) kommt vor eth0 (Internet / DHCP). Ich weiß nicht warum.

auto lo                        # keep the original loopback settings
iface lo ...                   # yeah, i don't remember, just keep it.

# ----> Ok, this is my addition <-----
auto eth1                      
allow-hotplug eth1             # i think hotplug it helps. not sure.
iface eth1 inet static
address 192.168.56.100         # arbitrary IP address between 2 and 254

auto eth0                      # This is the original content
iface eth0 inet dhcp           #  of this file, now at the end.

neustarten.

Berry Tsakala
quelle
0

Zunächst habe ich beide Netzwerke NAT mit DHCP und Host Only Network mit aktiviert static ip add 192.168.40.41.

Dann folgte ich mit diesem Befehl:

nano cat /etc/network/interfaces

Ich habe folgendes Ergebnis erhalten:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.41.4
netmask 255.255.255.0

Und vor dem Neustart habe ich den folgenden Befehl eingegeben:

sudo service networking restart

Dann neu gestartet.

Nachdem ich auf VM VirtualBox geladen habe, funktionieren beide Netzwerke. Ich kann eine Verbindung zum Internet und 192.168.40.41über einen Webbrowser herstellen.

Ich hoffe, das wird hilfreich sein, um den nanoEditor zu bekommen :

sudo apt-get update
sudo apt-get install nano

Dann geben Sie einfach nanoterminal ein, um es zu starten.

Mirza Mohammed Baig
quelle
0

Sie haben mehrere Standardgateways, die verschiedenen Netzwerkkarten zugewiesen sind. Im Allgemeinen bedeutet "Standard" eine vorausgewählte Option. Wenn in diesem Fall ein angegebenes Standard-Gateway für beide Netzwerkkarten definiert ist, ist dies keine vorausgewählte Option. Darüber hinaus würde dies auch zu Kommunikationsproblemen wie asynchronem Routing führen. Ich bin nicht sicher, wie die Metrik beider Schnittstellen auf 0 gesetzt ist, aber es kann daran liegen, dass beide Netzwerkkarten mit Gateways ausgestattet sind. Die diesbezügliche Beschreibung von Microsoft finden Sie hier. Die Metrik-Funktion enthält eine Reihe von Faktoren, die bestimmen, wie Prioritäten festgelegt werden. (Link: https://support.microsoft.com/de-de/help/299540/an-erläuterung-der-automatischen-metrischen-feature-für-ipv4-routen )

In Übereinstimmung mit @ jkt123 in der beantworteten Antwort sollte nur 1 Standard-Gateway zugewiesen werden.

Balldigy
quelle