virtualbox guest os über vpn

43

Ich habe einen Oracle Linux-Gast, der einen Webserver in VirtualBox auf einem Windows 7-Host ausführt. Ich muss das Netzwerk einrichten, damit ich drei Dinge tun kann:

  1. Der Host kann über einen Browser und SSH eine Verbindung zum Gast herstellen
  2. Der Gast kann über das VPN des Hosts mit anderen Servern im internen Netzwerk kommunizieren
  3. Der Gast kann das Internet von außen erreichen

Ich habe ein paar Antworten gelesen und ein paar Konfigurationen ausprobiert. Folgendes passiert:

Überbrückt

  1. Gastgeber kann Gast nicht erreichen
  2. Gast kann nicht durch VPN sehen
  3. Gäste können das Internet erreichen

NAT

  1. Gastgeber kann Gast nicht erreichen
  2. Gast kann durch VPN sehen
  3. Der Gast kann das Internet nicht erreichen

Nur Host

Alle 3 Bedingungen schlagen fehl.

NAT-Netzwerk

  1. Gastgeber kann Gast nicht erreichen
  2. Gast kann durch VPN sehen
  3. Der Gast kann das Internet nicht erreichen

Ich sollte auch darauf hinweisen, dass der Host manchmal über ein VPN verbunden ist, während er ein anderes Mal einfach direkt in das Unternehmensnetzwerk eingesteckt wird. Wenn es direkt eingesteckt ist, erfüllt ein überbrückter Adapter alle 3 Bedingungen. Idealerweise gibt es eine Konfiguration, die alle drei Bedingungen erfüllt, unabhängig davon, ob ein VPN oder eine direkte Verbindung besteht.

ewok
quelle
Eine VPN-Verbindung hat normalerweise einen eigenen Adapter. Mein erster Gedanke ist, dass Sie ihn mit dem VPN-Adapter verbinden müssen (wenn er an das VPN angeschlossen ist).
Donnerstag,
Ich habe die VM mit dem VPN-Adapter verbunden und er erhält keine IP-Adresse
ewok 15.10.15
Können Sie sagen, ob dies ein Layer2- oder Layer3-Adapter ist?
MariusMatutiae
@MariusMatutiae Entschuldigung, nicht sicher, was du meinst.
Ewok
Um welche Art von VPN handelt es sich?
MariusMatutiae

Antworten:

63

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 NATModus versetzt werden, damit der Gast über die Netzwerkschnittstelle des Hosts auf Netzwerkressourcen (einschließlich des Internets) zugreifen kann.

Adapter 1: NAT

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 NetworksRegisterkarte 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 AdapterTabs 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):

Netzwerkeinstellungen 1

Die Werte auf der DHCPRegisterkarte 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:

Netzwerkeinstellungen 2

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:

Adapter 2: Nur Host

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.dstattdessen 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.101und 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:

Cisco VPN-Client: Ermöglichen Sie den Zugriff auf LAN-Ressourcen

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.

Ben Johnson
quelle
5
Vielen Dank für die Mühe in dieser Antwort (Bilder und alles). Es hat sehr geholfen, Ihre Erklärung!
Edenshaw
Gut gemacht, Ben! Dies hat mir geholfen, meine Probleme mit VPN zu verstehen und meinen Fall in meinem Vorfallbericht an die IT klar zu formulieren!
Mark Maglana
1
Zu Ihrer Information, ich habe Zugriff auf die Funktion "Lokalen Zugriff (LAN) zulassen" in AnyConnect und kann bestätigen, dass das Aktivieren dieses Kontrollkästchens das Löschen der Routen nicht verhindert.
Lqueryvg
-1

Wie ich meine Windows-Host-VPN in Gast Linux Mint-Maschine

Stellen Sie mein VPN so ein, dass feste Portnummern in den Einstellungen verwendet werden

Setzen Sie vm network auf NAT

Legen Sie die Linux-Proxy-Einstellungen für IP 10.0.2.2 (Standard-NAT-Gateway für VirtualBox) und die Ports fest, die ich manuell für meinen VPN eingegeben habe

Mustafa Candan
quelle