73 votes

Comment puis-je faire en sorte que les invités de VirtualBox partagent la connexion VPN de l'hôte ?

Pregunta

Lorsque je démarre mon VPN sur mon ordinateur de bureau ubuntu qui fait office de routeur, le sous-réseau attaché perd sa connectivité internet, mais reste accessible (LAN). Idéalement, je voudrais savoir comment permettre au sous-réseau attaché de regagner l'accès à l'internet en routant à travers le tunnel VPN lorsque le VPN est actif.

Contexte

J'ai la configuration de réseau suivante :

le sous-réseau 172.16.0.0/20 sur eth0 pour mes machines virtuelles VirtualBox.

le sous-réseau 192.168.0.0/24 sur eth0:0 qui se connecte à la passerelle 192.168.0.1 qui a un accès internet.

Ceci est montré dans le fichier /etc/network/interfaces :

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

Les paquets sur eth0 sont transmis par eth0:0 avec masquage et la connectivité internet normale est bonne. Cependant, lorsque je démarre mon tunnel VPN sur ce routeur, la connectivité Internet est perdue pour les machines virtuelles sur le sous-réseau eth0 (mais reste pour le routeur).

Vous trouverez ci-dessous le sortie de ifconfig lorsque le tunnel est actif :

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)

Je suspecte que la solution aura quelque chose à voir avec le table de routage . Il montre les éléments suivants lorsque le tunnel est actif :

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

et ce qui suit lorsque le tunnel est inactif :

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

Configuration de Virtualbox pour les Vms :

enter image description here

Une des VMs /etc/network/interfaces fichier :

# 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

56voto

Aks Points 661

Pour VirtualBox avec un hôte Windows et un invité linux(mint), allez dans l'onglet Network UI et définissez pour "Adapter" => "Attached to : NAT" et "Adapter type : Réseau paravirtualisé". Après cela, démarrez votre VM et vous devriez être en mesure d'utiliser le réseau VPN.

40voto

zwets Points 11050

Cela ne fonctionnera pas dans un Réseau ponté installation. Depuis le Documentation sur VirtualBox :

Réseau ponté

Il s'agit de besoins plus avancés en matière de réseaux, tels que les simulations de réseaux. et l'exécution de serveurs dans un invité. Lorsqu'elle est activée, VirtualBox se connecte à l'une des cartes réseau installées et échange directement les paquets paquets réseau directement, en contournant la pile réseau de votre système d'exploitation hôte. réseau de votre système d'exploitation hôte.

Puisque vos machines virtuelles utilisent eth0 directement, ils ne sont pas conscients de la tun0 au tunnel qui s'y trouve. Vous devrez utiliser une configuration de réseau virtuel différente.

Vous avez (entre autres) ces options :

  • Traduction d'adresses de réseau (NAT) est de loin la solution la plus simple. VirtualBox effectuera la NAT des VM sur n'importe quelle connexion Internet disponible sur l'hôte. Ceci est totalement transparent pour les VMs. Cependant, cela exclut les connexions de l'hôte vers les VM ou les connexions entre les VM.

  • Utilice Mise en réseau de l'hôte uniquement pour créer un sous-réseau approprié contenant les VMs et l'hôte. Cela ne nécessitera aucun changement dans la configuration de l'interface que vous avez maintenant dans les VMs, mais vous devrez configurer l'hôte pour qu'il soit la passerelle et le routeur, y NAT des VM vers l'extérieur (que ce soit à travers son système de gestion de l'information). eth0 o tun0 ).

  • Combinez ce qui précède : donnez à chaque VM deux interfaces, une passerelle vers le monde extérieur (à travers l'interface de VirtualBox). NAT ) et l'autre attaché à la Réseau local réservé aux hôtes .

  • Essayez la version expérimentale de VirtualBox Réseau NAT configuration. Mise à jour 2019 : cette fonctionnalité a depuis évolué : il suffit de s'attacher au NAT de l'hôte et de choisir l'option Réseau paravirtualisé (virtio-net) type d'adaptateur.

13voto

Arier Points 231

Après avoir cherché cette solution partout, j'ai finalement trouvé une solution fonctionnelle qui ne nécessite pas beaucoup de changements de configuration et qui est vraiment simple. Utilisez le réseau NAT par défaut et tapez ceci dans le terminal :

VBoxManage modifyvm "VM name" --natdnsproxy1 on

source : https://www.virtualbox.org/ticket/13993

5voto

Ramast Points 211

J'ai eu le même problème. Voici comment je l'ai résolu :

  1. Changez le type de réseau du système invité pour qu'il soit "Hôte seulement".
  2. Faire en sorte que la passerelle par défaut de Guest pointe vers l'ip de l'hôte. ifconfig vboxnet0 pour le trouver.

La dernière étape est le routage des paquets venant de vboxnet0 dans votre VPN.

Si vous acheminez tout le trafic par VPN :

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

10.8.0.5 est votre passerelle tun0 et 192.168.5.0/24 est la portée de votre réseau vboxnet0.

Si vous ne faites passer que certains trafics par le VPN :

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

10.8.0.5 est votre passerelle tun0 et 192.168.43.95 est votre wlan0 et 192.168.5.0/24 est la portée de votre réseau vboxnet0.

Note : Cette solution permet de traiter le système d'exploitation invité de la même manière que le système d'exploitation hôte. Seules les IP configurées pour passer par le VPN dans l'OS hôte le feront dans l'OS invité.

3voto

premkumar k Points 11

Voici quelques informations utiles pour les boîtes vagrant utilisant le host vpn. En gros, vous devez définir l'option natdnshostresolver1. Notez que cela PAS fonctionne en utilisant le paramètre public_network de Vagrant.

  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-guest http://blog.geekslikeshinythings.com/2016/05/sharing-host-vpn-with-vagrant-rob-allen.html

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X