Pas d'accès Internet sur les machines virtuelles dans le réseau NAT dans VirtualBox

14

J'ai créé un réseau NAT dans VirtulBox 5 dans Ubuntu 14.04 LTS avec les paramètres suivants

Nom Natework: NatNetwrok1
Network CIDR: 10.0.2.0/24
Support DHCP: activé
Support IPv6: désactivé
sans aucun transfert de port

De plus, j'ai deux machines virtuelles (les deux clones Xubuntu), j'ai défini les paramètres réseau pour activer deux cartes réseau sur chacune des machines virtuelles avec les paramètres suivants dans les quatre adaptateurs:

Attaché à: «NAT Network»
Nom: «NatNetwrok1»

Lorsque j'exécute les deux machines virtuelles, je peux voir les paramètres suivants lors de l'exécution de la commande ifconfig

résultats d'ifconfig sur Xubuntu1

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)

résultats d'ifconfig sur Xubutracentu2

eth0      Link encap:Ethernet  HWaddr 08:00:27:00:8c:03  
          inet addr:10.0.2.9  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe00:8c03/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:12133 (12.1 KB)  TX bytes:8517 (8.5 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:9e:20:e8  
          inet addr:10.0.2.8  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe9e:20e8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:43 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:10294 (10.2 KB)  TX bytes:8798 (8.7 KB)

Ping entre ces 4 IP fonctionne très bien
mais je ne peux pas l' accès Internet sur l' une de ces machines virtuelles
Alors que si o changement « NAT réseau » à « NAT » Je ne peux accéder au réseau , mais il semble que la partie devenir différent réseau virtuel et je ne peux pas ping les uns des autres
Quelqu'un peut-il m'aider à identifier et à résoudre le problème

Quelqu'un peut-il également expliquer la différence entre NAT et NAT Network

ehsan
la source
Même problème ... Quelqu'un pourrait-il aider?
monitor35
J'ai récemment rencontré ce problème en utilisant la boîte virtuelle 5.0.40 du référentiel ubuntu par défaut. Pour le contourner, j'ai configuré chaque VM avec deux interfaces. L'un avec un NatNetwork interne et l'autre en mode pont. Sous l'OS invité (ubuntu 16.04), vous devrez modifier / etc / network / interfaces pour que la deuxième interface apparaisse dans l'invité. Cela a permis à chaque machine virtuelle d'être dans le NAT interne et d'avoir accès à Internet en même temps.
JulioHM

Réponses:

7

Pourquoi ne pas travailler?

En 16.04 (et probablement 14.04), la fonction NAT Network de la version principale de VirtualBox (5.0.36) est buggée .

Vérifie ça!

Vous pouvez le vérifier vous-même: si l' ls /usr/lib/virtualbox/VBoxNetNATexécutable est présent, vous pouvez avoir un autre type de problème.

Répare le!

Ce bug est corrigé dans les versions plus récentes. Vous devez donc installer une nouvelle version:

Supprimer l'ancienne version

Par exemple, si vous avez installé avec, aptvous pouvez exécuter:

sudo apt remove virtualbox --auto-remove

Installer une nouvelle version

Le correctif est disponible pour les versions plus récentes (Ubuntu yakkety +). Pour les anciennes versions:

  • Visitez virtualbox.org et téléchargez manuellement la dernière version
  • OU
  • Utilisez le script suivant:

    # add the official repository
    wget -q -O - https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo apt-key add -
    echo deb http://download.virtualbox.org/virtualbox/debian `lsb_release -cs` non-free contrib | sudo tee /etc/apt/sources.list.d/virtualbox.org.list
    # install the newer version
    sudo apt install virtualbox-5.1
    
MrMeszaros
la source
1
Si une version précédente de virtualbox est installée, assurez-vous également de désinstaller virtualbox-dkmspour que ce correctif fonctionne. Sinon, vous risquez toujours d'être bloqué sans Internet
Barak Itkin
7

J'ai rencontré cela en utilisant VirtualBox 5.0.40 à partir du référentiel apt par défaut. Pour contourner ce problème, j'ai configuré chaque machine virtuelle pour utiliser deux interfaces réseau.

  • Adaptateur 1: Bridge Addapter (à votre vrai nic)
  • Adaptateur 2: réseau NAT (de votre choix)

Sous le système d'exploitation guets (Ubuntu 16.04), vous devrez modifier /etc/network/interfacespour que la deuxième interface apparaisse. Dans mon cas, j'avais besoin de machines virtuelles pour utiliser des adresses IP statiques à l'intérieur du réseau NAT, c'est donc ce que j'ai obtenu.

## Bridge to Internet
auto enp0s3
iface enp0s3 inet dhcp

## NAT Network among VMs
## Static is optional
## DHCP if you don't need it
auto enp0s8
iface enp0s8 inet static
  address 10.10.11.100
  netmask 255.255.255.0

Bien entendu, cela suppose que mon réseau NAT utilise le sous-réseau 10.10.11.0/24. Adaptez les nombres à votre scénario ou laissez-le simplement au DHCP, comme vous le souhaitez.

REMARQUE: une chose importante à noter dans la configuration statique est que, pour ce scénario particulier, vous NE POUVEZ PAS lui affecter une passerelle par défaut. Donner enp0s8une valeur par défaut (comme 10.10.11.1) entraînera le système d' exploitation pour créer un itinéraire vers cette passerelle et que la route peut bousiller votre accès à Internet ainsi. Vous ne devez le faire que lorsque cette interface particulière a besoin de routes vers d'autres réseaux, à l'exception de celle qui lui est configurée.

Pour connaître les noms d'interface attribués par Ubuntu pour votre environnement, vous pouvez dmesg | grep eth.

entrez la description de l'image ici

JulioHM
la source
Le mien fonctionnait mieux quand j'utilisais 'dhcp' pour eth0 et eth1. Il vient d'attribuer automatiquement 10.0.2.15 pour NAT et mon Internet public eth1 n'a pas d'adresse IP, mais je peux envoyer une requête ping à Internet depuis la machine virtuelle!
Milean
6

Selon le manuel VirtualBox, voici les possibilités de réseau pour vos machines virtuelles:

  • NAT: réseau interne entre VM et hôte. De plus, vous pouvez accéder à Internet. Deux machines virtuelles ou plus en mode NAT n'ont pas de connectivité entre elles, uniquement avec l'hôte et Internet.

  • Interne: Toutes les VM avec cette configuration auront une connectivité entre elles mais pas avec l'hôte ni Internet.

  • Hôte uniquement: un réseau virtuel sera créé entre l'hôte et toutes les machines virtuelles avec cette configuration, mais vous n'aurez pas accès à Internet.

  • Réseau NAT: vous pouvez atteindre toutes les machines virtuelles dans le même réseau NAT prédéfini et l'hôte, mais vous ne pourrez pas vous connecter à Internet.

  • Ponté: votre machine virtuelle sera dans le même réseau que votre hôte comme s'il s'agissait d'un autre ordinateur / serveur de ce réseau, et donc, elle aura accès à Internet si votre hôte l'a.

  • Générique: configuration avancée et plus spécifique rarement utilisée.

Donc, si vous voulez créer un réseau interne avec une connectivité à l'hôte, choisissez NAT Network, mais notez que vous n'aurez pas accès à Internet. Le NAT est défini uniquement lorsque vous souhaitez simplement accéder à Internet à partir de votre machine virtuelle et rien d'autre.

Cependant, aucun de ces paramètres ne vous convient si vous souhaitez avoir une connectivité entre les deux machines virtuelles et Internet. Pour autant que je sache, votre seul choix est de configurer les deux machines virtuelles en mode ponté, de sorte que ce seront des ordinateurs `` différents '' dans votre réseau hôte et vous pourrez tous les cingler et Internet depuis n'importe lequel d'entre eux.

D'un autre côté, il semble que vous ayez connecté une VM à l'autre car les deux machines ont la même adresse MAC ( HWaddr dans les informations de commande ifconfig), sachez que vous devez cocher la case " Réinitialiser l'adresse MAC de toutes les cartes réseau "lors de la connexion. Deux appareils avec la même adresse MAC créent toujours des problèmes.

Je ne suis pas un expert de VirtualBox, alors peut-être que d'autres utilisateurs peuvent vous dire d'autres configurations possibles pour obtenir ce que vous voulez. Je espère que vous trouverez ces renseignements utiles.

Pour plus d'informations, vous pouvez lire ceci .

Pablo288
la source
3
Il n'est pas vrai que NAT Network empêchera vos invités de se connecter à Internet. Je peux me connecter à Internet à partir d'invités VM sur un réseau NAT. Selon le dernier commentaire sur forums.virtualbox.org/viewtopic.php?f=3&t=69504 , "Le mode NAT signifie que chaque VM est isolée derrière son propre routeur ... Le réseau NAT est le même que NAT sauf que vous pouvez avoir plusieurs VM connecté au même routeur interne. "
eebbesen
2

Cela pourrait être un bogue dans VirtualBox. J'ai vécu la même chose (Ubuntu 16.04.2 LTS, VirtualBox 5.0.32_Ubuntu r112930): configurer un réseau NAT, configuré pour deux machines virtuelles Ubuntu. Chaque machine virtuelle pouvait cingler / SSH dans l'autre, et via des transferts de port, je pouvais SSH de l'hôte dans chaque machine virtuelle. Mais pas d'accès Internet depuis l'intérieur des VM. Un collègue a essayé la même chose avec un hôte Windows, VirtualBox (version inconnue) et les mêmes machines virtuelles, et cela a fonctionné.

Comme solution de contournement, j'ai configuré une deuxième carte réseau pour chaque machine virtuelle: la première utilisant NAT pour accéder à Internet, la seconde utilisant «NAT Network» pour accéder aux autres invités. J'ai dû configurer la redirection de port SSH sur la première carte (NAT) et configurer un autre port SSH sur une VM (c.-à-d. 2222 -> 22 sur VM1, 2223 -> 23 sur VM2).

Sur la base de la documentation , NAT et NAT Network doivent pouvoir accéder à Internet. La différence est que le premier a des connexions hôte ↔ invité séparées, de sorte que les invités ne peuvent pas accéder les uns aux autres, uniquement à l'hôte. Ce dernier regroupe tous les invités dans un seul réseau (et fournit des services tels que DHCP), afin qu'ils puissent accéder les uns aux autres.

Ingo Karkat
la source