it-swarm.com.de

Wie kann ich VirtualBox-Gäste dazu bringen, die VPN-Verbindung des Hosts gemeinsam zu nutzen?

Frage

Wenn ich mein VPN auf meinem Ubuntu-Desktop-Computer starte, der als Router fungiert, verliert das angeschlossene Subnetz die Internetverbindung, ist jedoch weiterhin verfügbar (LAN). Im Idealfall möchte ich wissen, wie das angeschlossene Subnetz durch Routing durch den VPN-Tunnel wieder auf das Internet zugreifen kann, wenn das VPN aktiv ist.

Kontext

Ich habe folgendes Netzwerklayout:

subnetz 172.16.0.0/20 auf eth0 für meine virtuellen VirtualBox-Maschinen.

subnetz 192.168.0.0/24 auf eth0: 0, das eine Verbindung zum Gateway 192.168.0.1 mit Internetzugang herstellt.

Dies wird in der Datei/etc/network/interfaces gezeigt:

auto lo
iface lo inet loopback

# This is the subnet dedicated to VB
auto eth0
iface eth0 inet static
    address 172.16.0.1
    netmask 255.255.0.0
    gateway 192.168.0.164
    dns-nameservers 8.8.8.8

# normal DHCP internet
auto eth0:0
iface eth0:0 inet static
    address 192.168.0.164
    netmask 255.255.255.0
    dns-nameservers 8.8.8.8
    gateway 192.168.0.1

Die Pakete auf dem eth0 werden mit Masquerading über eth0: 0 weitergeleitet, und eine normale Internetverbindung ist in Ordnung. Wenn ich jedoch meinen VPN-Tunnel auf diesem Router starte, geht die Internetverbindung für die VMs im eth0-Subnetz verloren (bleibt jedoch für den Router bestehen).

Unten sehen Sie die Ausgabe von ifconfig , wenn der Tunnel aktiv ist:

eth0      Link encap:Ethernet  HWaddr 00:1f:bc:01:c3:ab  
          inet addr:172.16.0.1  Bcast:172.16.255.255  Mask:255.255.0.0
          inet6 addr: fe80::21f:bcff:fe01:c3ab/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:165426 errors:0 dropped:0 overruns:0 frame:0
          TX packets:182601 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:208264321 (208.2 MB)  TX bytes:16660945 (16.6 MB)
          Interrupt:16 

eth0:0    Link encap:Ethernet  HWaddr 00:1f:bc:01:c3:ab  
          inet addr:192.168.0.164  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:16 

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:381963 errors:0 dropped:0 overruns:0 frame:0
          TX packets:381963 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:22755054 (22.7 MB)  TX bytes:22755054 (22.7 MB)

tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.10  P-t-P:10.8.0.9  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

Ich vermute, dass die Lösung etwas mit der Routing-Tabelle zu tun haben wird. Es zeigt Folgendes , wenn der Tunnel aktiv ist :

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         10.8.0.9        128.0.0.0       UG    0      0        0 tun0
default         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
10.8.0.0        10.8.0.9        255.255.255.0   UG    0      0        0 tun0
10.8.0.9        *               255.255.255.255 UH    0      0        0 tun0
37.139.23.49    192.168.0.1     255.255.255.255 UGH   0      0        0 eth0
128.0.0.0       10.8.0.9        128.0.0.0       UG    0      0        0 tun0
link-local      *               255.255.0.0     U     1000   0        0 eth0
172.16.0.0      *               255.255.0.0     U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0

und die folgenden , wenn der Tunnel inaktiv ist :

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.0.1     0.0.0.0         UG    100    0        0 eth0
link-local      *               255.255.0.0     U     1000   0        0 eth0
172.16.0.0      *               255.255.0.0     U     0      0        0 eth0
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0

Virtualbox-Konfiguration für Vms:

enter image description here

Eine der VMs /etc/network/interfaces -Dateien:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 172.16.0.3
        netmask 255.255.0.0
        network 172.16.0.0
        broadcast 172.16.255.255
        gateway 172.16.0.1
        dns-nameservers 8.8.8.8
50
Programster

Dies funktioniert nicht in einem Bridged Networking Setup. Aus der VirtualBox-Dokumentation :

Überbrückte Vernetzung

Dies ist für erweiterte Netzwerkanforderungen wie Netzwerksimulationen und das Ausführen von Servern in einem Gast vorgesehen. Wenn diese Option aktiviert ist, stellt VirtualBox eine Verbindung zu einer Ihrer installierten Netzwerkkarten her und tauscht Netzwerkpakete direkt aus, um den Netzwerkstack Ihres Host-Betriebssystems zu umgehen.

Da Ihre virtuellen Maschinen eth0 direkt verwenden, ist ihnen die tun0 Schnittstelle zu dem Tunnel, der darüber läuft, nicht bekannt. Sie müssen eine andere virtuelle Netzwerkkonfiguration verwenden.

Sie haben (unter anderem) folgende Möglichkeiten:

  • Network Address Translation (NAT) ist bei weitem die einfachste Lösung. VirtualBox NAT sendet die VMs über die Internetverbindung, die dem Host zur Verfügung steht. Dies ist für die VMs vollständig transparent. Dies schließt jedoch Verbindungen vom Host zu den VMs oder Verbindungen zwischen den VMs aus.

  • Verwenden Sie Host-only Networking , um ein korrektes Subnetz mit den VMs und dem Host zu erstellen. Dies erfordert keine Änderungen an der Schnittstellenkonfiguration, die Sie jetzt in den VMs haben, aber Sie müssen den Host als Gateway und Router einrichten. und machen es NAT die VMs nach außen (ob über ihre eth0 oder tun0).

  • Kombinieren Sie das Obige: Geben Sie jedem VM zwei Schnittstellen, eine Schnittstelle zur Außenwelt (über VirtualBox's NAT) und die andere zur Nur-Host-LAN ​​.

  • Probieren Sie die experimentelle NAT-Netzwerkkonfiguration von VirtualBox aus. Update 2019: Diese Funktion ist inzwischen ausgereift: Fügen Sie dem NAT des Hosts hinzu und wählen Sie das Paravirtualized-Netzwerk aus (virtio-net) Adaptertyp.

28
zwets

Gehen Sie für VirtualBox mit Windows Host und Linux (Minze) Gast zur Registerkarte Netzwerk-UI und stellen Sie "Adapter" => "Attached to: NAT" und "Adaptertyp: Paravirtualized Network" ein. Starten Sie danach Ihr VM und Sie sollten in der Lage sein, das VPN-Netzwerk zu verwenden.

34
Aks

Nachdem ich überall nach dieser Lösung gesucht hatte, fand ich endlich eine funktionierende Lösung, die nicht viele Konfigurationsänderungen erfordert und wirklich einfach ist. Verwenden Sie das Standardnetzwerk NAT und geben Sie dies im Terminal ein:

VBoxManage modifyvm "VM name" --natdnsproxy1 on

quelle: https://www.virtualbox.org/ticket/1399

5
Arier

Hatte das selbe Problem. So habe ich es gelöst:

  1. Ändern Sie den Netzwerktyp des Gastsystems in "Nur Host".
  2. Stellen Sie das Standardgateway von Guest auf die Host-IP-Adresse ifconfig vboxnet0, um es zu finden.

Der letzte Schritt ist das Weiterleiten der von vboxnet0 kommenden Pakete in Ihr VPN.

Wenn Sie den gesamten Datenverkehr über VPN weiterleiten:

iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o tun0 -j SNAT --to-source 10.8.0.5

Wobei 10.8.0.5 Ihr tun0-Gateway ist und 192.168.5.0/24 Ihre vboxnet0-Netzwerkreichweite ist.

Wenn Sie nur bestimmten Datenverkehr über VPN weiterleiten:

iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o tun0 -j SNAT --to-source 10.8.0.5
iptables -t nat -A POSTROUTING -s 192.168.5.0/24 ! -d 192.168.5.0/24 -o wlan0 -j SNAT --to-source 192.168.43.95

Wobei 10.8.0.5 Ihr tun0-Gateway ist und 192.168.43.95 das Gateway Ihres wlan0 ist und 192.168.5.0/24 Ihre vboxnet0-Netzwerkreichweite ist.

Hinweis: Mit dieser Lösung kann das Gastbetriebssystem genauso behandelt werden wie das Hostbetriebssystem. Nur IP-Adressen, die für die VPN-Übertragung im Host-Betriebssystem konfiguriert sind, werden in Guest übertragen.

4
Ramast

Hier finden Sie einige nützliche Informationen für Vagabund-Boxen, die Host-VPN verwenden. Grundsätzlich müssen Sie die Option natdnshostresolver1 festlegen. Beachten Sie, dass dies NICHT funktioniert, wenn Sie die Einstellung public_network des Vagrant verwenden.

  config.vm.provider :virtualbox do |vb|
      # ---- other options....
      vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end

http://renier.morales-rodriguez.net/post/90674523562/sharing-Host-vpn-with-virtualbox-guesthttp://blog.geekslikeshinythings.com/2016/ 05/sharing-Host-vpn-mit-vagrant-rob-allen.html

3
Artistan