
Ich habe einen Oracle Linux-Gast, der einen Webserver in VirtualBox auf einem Windows 7-Host betreibt. Ich muss das Netzwerk so einrichten, dass ich drei Dinge tun kann:
- Der Host kann sich über einen Browser und SSH mit dem Gast verbinden
- Der Gast kann über das VPN des Hosts mit anderen Servern im internen Netzwerk kommunizieren
- Der Gast kann das externe Internet erreichen
Ich habe ein paar Antworten gelesen und ein paar Konfigurationen ausprobiert, und Folgendes passiert:
Überbrückt
- Gastgeber kann Gast nicht erreichen
- Gast kann nicht durch VPN sehen
- Gäste können das Internet erreichen
NAT
- Gastgeber kann Gast nicht erreichen
- Gast kann über VPN sehen
- Gast kann nicht auf das Internet zugreifen
Nur Host
alle 3 Bedingungen erfüllen nicht den Anforderungen.
NAT-Netzwerk
- Gastgeber kann Gast nicht erreichen
- Gast kann über VPN sehen
- Gast kann nicht auf das Internet zugreifen
Ich sollte auch darauf hinweisen, dass der Host manchmal über ein VPN verbunden ist, während er manchmal einfach direkt an das Unternehmensnetzwerk angeschlossen ist. Wenn er direkt angeschlossen ist, erfüllt ein überbrückter Adapter alle drei Bedingungen. Idealerweise gäbe es eine Konfiguration, die alle drei Bedingungen erfüllt, unabhängig davon, ob ein VPN oder eine direkte Verbindung besteht.
Antwort1
Ich hatte dasgenaudasselbe Problem und habe es bis zur Lösung durchgezogen, daher erkläre ich das Problem und die Lösung gern im Detail.
Ohne Einbindung eines VPN
Es ist wichtig, die Konfiguration zu verstehen, die erforderlich ist, um Ihre Anforderungen zu erfüllenohneunter Einbeziehung eines VPN. Außerdem wird bei dieser Information davon ausgegangen, dass weder auf dem Host noch auf dem Gast eine Software-Firewall stört.
Ohne VPN wird dies normalerweise durch die Erstellung von zwei Netzwerkadaptern in der Konfiguration der virtuellen Maschine gelöst.
Der erste Adapter muss auf NAT
den Modus eingestellt werden, der dem Gast den Zugriff auf Netzwerkressourcen (einschließlich des Internets) über die Netzwerkschnittstelle des Hosts ermöglicht.
Der zweite Adapter muss auf eingestellt sein Host-only
, wodurch eine bidirektionale Kommunikation zwischen Host und Gast ermöglicht wird.
Die Einrichtung dieses Adapters ist etwas komplexer als die des ersten, da zum Konfigurieren des Host-Only-Adapters die globalen Netzwerkeinstellungen von VirtualBox geändert werden müssen (Hinweis: Hierzu sind Administratorrechte erforderlich).
Gehen Sie in VirtualBox zu File -> Preferences -> Network
. Klicken Sie auf die Host-only Networks
Registerkarte und dann auf das kleine +
Symbol, um einen neuen Adapter hinzuzufügen. Sie werden aufgefordert, die Berechtigungen von VirtualBox zu erhöhen.
Das Ausfüllen der Adapter
Registerkarte ist obligatorisch. Sie sollte ungefähr so aussehen (ignorieren Sie den Adapter mit der Bezeichnung #2
, dieser hat einen anderen Zweck):
Die Werte auf der DHCP
Registerkarte „Server“ sind optional. Wenn Sie die IP-Adresse für diesen Adapter in der Netzwerkkonfiguration des Gasts fest codieren möchten, sind diese Werte nicht erforderlich. Wenn Sie hingegen DHCP verwenden möchten, könnten die Werte etwa so aussehen:
Der letzte Schritt bei der Konfiguration von VirtualBox besteht darin, zur Netzwerkkonfiguration der VM zurückzukehren und den zweiten Adapter hinzuzufügen, der auf den Host-Only-Adapter verweist, den wir gerade erstellt haben:
Jetzt muss das Netzwerk im Gastbetriebssystem so konfiguriert werden, dass diese beiden Netzwerkschnittstellen genutzt werden können.
Unter Debian oder Ubuntu GNU/Linux muss die Konfiguration nur so geändert werden, /etc/network/interfaces
dass sie wie folgt aussieht:
# 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
# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
(Puristen ziehen es vielleicht vor, /etc/network/interfaces.d
stattdessen das Verzeichnis zu verwenden, aber das geht über den Rahmen dieser Erklärung hinaus)
Starten Sie die Netzwerkdienste des Gastes neu oder, einfacher gesagt, die gesamte Gast-VM neu, und alles sollte „einfach funktionieren“.
An diesem Punkt sollte es möglich sein, die Gast-VM anzupingen 192.168.56.101
und eine Antwort zu erhalten (vorausgesetzt, es stört keine Software-Firewall).
Ebenso sollte es möglich sein, den Host unter anzupingen 10.0.2.2
. Diese IP-Adresse scheint in der NAT-Implementierung von VirtualBox „fest codiert“ oder zumindest über eine nicht offensichtliche Konfigurationsanweisung angegeben zu sein, und es sind nur wenige Informationen über ihren Ursprung verfügbar. Aber leider „funktioniert es einfach“.
Bei dieser Konfiguration sind alle drei in Ihrer Frage genannten Bedingungen erfüllt.
Auftritt: das VPN
Aber genau hier liegt das Problem. Die Einführung des VPN verursacht ein gravierendes Problem (das hängt vom jeweiligen VPN und seiner Konfiguration ab).
Moderne VPNs sind in der LageSplit-Tunneling, das erforderlich ist, damit die oben genannte VirtualBox-Konfiguration gemäß Ihren drei Anforderungen funktioniert. Aus (guten) Sicherheitsgründen ist Split-Tunneling oft deaktiviert, und genau das ist in Ihrem (und meinem) Fall das Problem.
Wenn Sie eine Verbindung zum VPN herstellen, untersucht der VPN-Client (in meinem Fall Cisco AnyConnect Secure Mobility Client, 3.1.02026) die Routing-Tabellen des Hostcomputers, merkt sich diese und überschreibt sie dann mit Werten, die normalerweise von einem zentral verwalteten Standort stammen (d. h. selbst mit lokalen Administratorrechten ist es unmöglich, die Einstellungen zu überschreiben).
Sie können die Routing-Tabellen selbst untersuchen, indem Sie command.exe
(unter Windows) Folgendes öffnen:
C:\>route print
Vor der Verbindung mit dem VPN enthält die Routing-Tabelle wichtige Einträge, die eine ordnungsgemäße Funktion dieser VirtualBox-Konfiguration ermöglichen. Durch die Verbindung mit dem VPN werden diese Einträge entfernt, wodurch die Kommunikation zwischen Host und Gast verhindert wird.
(Es gibt viele weitere Einträge, die ich hier weggelassen habe, da sie für die Grundursache dieses Verhaltens irrelevant sind.)
Vor der Verbindung mit dem VPN:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
Nach der Verbindung mit dem VPN:
192.168.56.1 255.255.255.255 On-link 192.168.56.1 266
224.0.0.0 240.0.0.0 On-link 192.168.56.1 266
255.255.255.255 255.255.255.255 On-link 192.168.56.1 266
Der VPN-Client entfernt die folgenden Zeilen:
192.168.56.0 255.255.255.0 On-link 192.168.56.1 266
192.168.56.255 255.255.255.255 On-link 192.168.56.1 266
Ohne diese letzten beiden Einträge können Host und Gast nicht kommunizieren, und dies ist genau das beabsichtigte Verhalten, wenn Split-Tunneling in der VPN-Konfiguration deaktiviert ist.
Normalerweise würden diese beiden Befehle diese Routen wiederherstellen:
C:\>route ADD 192.168.56.0 MASK 255.255.255.0 192.168.56.1 METRIC 266
C:\>route ADD 192.168.56.255 MASK 255.255.255.255 192.168.56.1 METRIC 266
Aber der VPN-Client bleibt wachsam: Er fängt Versuche ab, die Routing-Tabelle zu ändern. Mein Client scheint den zweiten Eintrag zuzulassen, aber nicht den ersten. (Und er kann beide in regelmäßigen Abständen überdecken; das habe ich nicht getestet.)
WennIhr spezifisches VPN und die zugehörige Konfiguration erlauben die Aktivierung von Split-Tunneling. Normalerweise wird es folgendermaßen eingeschaltet:
Beim Trennen der Verbindung zum VPN stellen gut funktionierende VPN-Clients die Routingtabellen wieder her, die vor der Verbindung vorhanden waren. Mein VPN-Client scheint dies zuverlässig zu tun, was von Vorteil ist, da die Gast-VM dadurch nicht neu gestartet werden muss, wenn ich eine Verbindung zum VPN herstelle oder die Verbindung trenne. In solchen Fällen wird der sekundäre Adapter der VM zurückgesetzt, erhält jedoch automatisch und transparent seine IP-Adresse erneut, wodurch die Kommunikation zwischen Host und Gast fast sofort wiederhergestellt wird. Noch besser: NFS-Mounts zwischen Host und Gast (ich verwende CIFS-Mounts) bleiben über VPN-Verbindungs-/Trennungsvorgänge hinweg verbunden.
Im unwahrscheinlichen Fall, dass Ihr VPN Split-Tunneling zulässt, müssen Sie es wahrscheinlich nur aktivieren. In diesem Fall würde ich gerne von Ihnen hören, ob „alles einfach funktioniert“.
Antwort2
So verwende ich mein Windows-Host-VPN auf einem Linux-Gastcomputer
1-) Öffnen Sie Ihre VPN-Einstellungen. Geben Sie einige lokale Portnummern an.
2-) Öffnen Sie die Einstellungen Ihrer virtuellen Maschine. Stellen Sie sicher, dass das Netzwerk an NAT angeschlossen ist. Klicken Sie dann auf Erweitert und Portweiterleitung
3-) Klicken Sie auf Regel hinzufügen und geben Sie die gleichen Portnummern ein, die Sie in Ihrem VPN angegeben haben
4-) Starten Sie Ihre virtuelle Maschine. Gehen Sie zu Ihren Netzwerkeinstellungen. Wählen Sie „Manuell“ und geben Sie 10.0.2.2 (Standard-NAT-Gateway für Virtualbox) für die IP-Adresse und die Ports ein, die wir zuvor angegeben haben.
5-) Öffnen Sie Firefox, gehen Sie zu whoer.net und prüfen Sie, ob Ihr VPN funktioniert. ALLES FERTIG