Ich hatte genau das gleiche Problem und habe es bis zur Lösung durchgespielt. Daher erkläre ich das Problem und die Lösung gerne ausführlich.
Ohne ein VPN einzubeziehen
Es ist wichtig zu wissen, welche Konfiguration erforderlich ist, um Ihre Anforderungen zu erfüllen, ohne dass ein VPN erforderlich ist . Außerdem wird in diesen Informationen davon ausgegangen, dass weder auf dem Host noch auf dem Gast eine Software-Firewall stört.
Ohne VPN wird dies normalerweise gelöst, indem zwei Netzwerkadapter in der Konfiguration der virtuellen Maschine erstellt werden.
Der erste Adapter muss in den NAT
Modus versetzt werden, damit der Gast über die Netzwerkschnittstelle des Hosts auf Netzwerkressourcen (einschließlich des Internets) zugreifen kann.
Der zweite Adapter muss auf gesetzt sein Host-only
, um eine bidirektionale Kommunikation zwischen Host und Gast zu ermöglichen.
Dieser Adapter ist in der Einrichtung etwas komplexer als der erste, da die globalen Netzwerkeinstellungen von VirtualBox geändert werden müssen, um den Nur-Host-Adapter zu konfigurieren (Hinweis: Hierfür 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 des Adapter
Tabs ist obligatorisch. Es sollte ungefähr so aussehen (ignorieren Sie den Adapter mit der Bezeichnung #2
; er wird für etwas verwendet, das nichts mit dem Problem zu tun hat):
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 andererseits DHCP verwenden möchten, sehen die Werte möglicherweise folgendermaßen aus:
Der letzte Schritt in Bezug auf die Konfiguration von VirtualBox besteht darin, in die Netzwerkkonfiguration der VM zurückzukehren und den zweiten Adapter hinzuzufügen, der auf den soeben erstellten Host-Only-Adapter verweist:
Im Gastbetriebssystem muss das Netzwerk nun so konfiguriert werden, dass diese beiden Netzwerkschnittstellen verwendet werden.
Unter Debian oder Ubuntu GNU / Linux ist die Konfiguration so einfach wie das Ändern /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
# The secondary network interface
auto eth1
iface eth1 inet static
address 192.168.56.101
netmask 255.255.255.0
(Der Purist mag es vorziehen, /etc/network/interfaces.d
stattdessen das Verzeichnis zu verwenden, aber das würde den Rahmen dieser Erklärung sprengen.)
Starten Sie die Netzwerkdienste des Gasts neu oder starten Sie ganz einfach die gesamte Gast-VM neu, und alles sollte "einfach funktionieren".
Zu diesem Zeitpunkt sollte es möglich sein, die Gast-VM zu pingen 192.168.56.101
und eine Antwort zu erhalten (vorausgesetzt, eine Software-Firewall stört nicht).
Ebenso sollte man den Host anpingen können 10.0.2.2
. Diese IP-Adresse scheint in der NAT-Implementierung von VirtualBox "fest codiert" zu sein oder zumindest über eine nicht offensichtliche Konfigurationsanweisung angegeben zu werden, und es sind nur wenige Informationen zu ihrer Herkunft verfügbar. Aber leider "es funktioniert einfach".
Bei dieser Konfiguration sind alle drei in Ihrer Frage genannten Bedingungen erfüllt.
Geben Sie ein: das VPN
Aber hier ist das Problem. Die Einführung des VPN führt zu einem Problem, das die Show stoppt (abhängig vom jeweiligen VPN und seiner Konfiguration).
Moderne VPNs sind in der Lage, Split-Tunneling durchzuführen. Dies ist erforderlich, damit die oben genannte VirtualBox-Konfiguration gemäß Ihren drei Anforderungen funktioniert. Aus (guten) Sicherheitsgründen wird Split-Tunneling häufig deaktiviert, und genau dies ist das Problem in Ihrem (und meinem) Fall.
Wenn Sie eine Verbindung zum VPN herstellen, überprüft der VPN-Client (in meinem Fall Cisco AnyConnect Secure Mobility Client, 3.1.02026) die Routing-Tabellen des Host-Computers, merkt sich diese und überträgt sie anschließend mit Werten, die normalerweise von einigen zentralen Standorten stammen. Verwalteter Speicherort (dh selbst mit lokalen Administratorrechten ist es nicht möglich, die Einstellungen zu überschreiben).
Sie können die Routingtabellen selbst überprüfen, indem Sie command.exe
(unter Windows) Folgendes öffnen :
C:\>route print
Vor dem Herstellen einer VPN-Verbindung enthält die Routingtabelle wichtige Einträge, mit denen diese VirtualBox-Konfiguration ordnungsgemäß funktioniert. Wenn Sie eine Verbindung zum VPN herstellen, werden diese Einträge entfernt, wodurch die Kommunikation zwischen dem Host und dem Gast verhindert wird.
(Es gibt viele andere Einträge, die ich hier weggelassen habe, da sie für die Grundursache dieses Verhaltens irrelevant sind.)
Vor dem Herstellen einer Verbindung zum 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 dem Verbinden 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 beiden letzten Einträge können der Host und der Gast nicht kommunizieren. 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
Der VPN-Client bleibt jedoch wachsam: Er fängt Versuche ab, die Routing-Tabelle zu ändern. Mein Kunde scheint den zweiten Eintrag zuzulassen, aber nicht den ersten. (Und es kann sein, dass beide in regelmäßigen Abständen überarbeitet werden. Ich habe das nicht getestet.)
Wenn Ihr spezifisches VPN und die Konfiguration der Telefonzentrale die Aktivierung von Split-Tunneling zulassen, wird es normalerweise folgendermaßen eingeschaltet:
Nach dem Trennen der Verbindung zum VPN stellen gut erzogene VPN-Clients die Routingtabellen wieder her, die vor dem Herstellen der Verbindung vorhanden waren. Mein VPN-Client scheint dies zuverlässig zu tun, was von Vorteil ist, da dies bedeutet, dass die Gast-VM nicht neu gestartet werden muss, wenn ich eine Verbindung zum VPN herstelle oder die Verbindung zum VPN trenne. In solchen Fällen wird der sekundäre Adapter der VM zurückgesetzt, die IP-Adresse wird jedoch automatisch und transparent wiederhergestellt, wodurch die Kommunikation zwischen Host und Gast fast sofort wiederhergestellt wird. Besser noch, NFS-Bereitstellungen zwischen Host und Gast (ich verwende CIFS-Bereitstellungen) bleiben über VPN-Verbindungs- / Trennungsvorgänge verbunden.
In dem unwahrscheinlichen Fall, dass Ihr VPN Split-Tunneling ermöglicht, kann es eine einfache Angelegenheit sein, es zu aktivieren. In diesem Fall würde ich gerne von Ihnen hören, ob "alles funktioniert" oder nicht.