Wie stellt man über ein VPN eine Verbindung zu einem VirtualBox-Gastbetriebssystem her?

Wie stellt man über ein VPN eine Verbindung zu einem VirtualBox-Gastbetriebssystem her?

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:

  1. Der Host kann sich über einen Browser und SSH mit dem Gast verbinden
  2. Der Gast kann über das VPN des Hosts mit anderen Servern im internen Netzwerk kommunizieren
  3. Der Gast kann das externe Internet erreichen

Ich habe ein paar Antworten gelesen und ein paar Konfigurationen ausprobiert, und 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 über VPN sehen
  3. Gast kann nicht auf das Internet zugreifen

Nur Host

alle 3 Bedingungen erfüllen nicht den Anforderungen.

NAT-Netzwerk

  1. Gastgeber kann Gast nicht erreichen
  2. Gast kann über VPN sehen
  3. 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 NATden Modus eingestellt werden, der dem Gast den Zugriff auf Netzwerkressourcen (einschließlich des Internets) über die Netzwerkschnittstelle des Hosts ermöglicht.

Adapter 1: NAT

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 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 der AdapterRegisterkarte ist obligatorisch. Sie sollte ungefähr so ​​aussehen (ignorieren Sie den Adapter mit der Bezeichnung #2, dieser hat einen anderen Zweck):

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 hingegen DHCP verwenden möchten, könnten die Werte etwa so aussehen:

Netzwerkeinstellungen 2

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:

Adapter 2: Nur Host

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

Cisco VPN-Client: Zugriff auf LAN-Ressourcen erlauben

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.

VPN-Einstellungen

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

Bildbeschreibung hier eingeben

3-) Klicken Sie auf Regel hinzufügen und geben Sie die gleichen Portnummern ein, die Sie in Ihrem VPN angegeben haben

Portweiterleitung

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.

Linux-Netzwerkeinstellungen

5-) Öffnen Sie Firefox, gehen Sie zu whoer.net und prüfen Sie, ob Ihr VPN funktioniert. ALLES FERTIG

Hure

verwandte Informationen