Comment configurer la mise en réseau NAT et hôte uniquement avec une adresse IP statique dans VirtualBox


22

J'essaie de mettre en place un ensemble d'invités dans VirtualBox, de telle sorte que chacun d'eux puisse accéder à Internet ainsi être visible les uns aux autres et à l'hôte. Je veux également que les invités aient des adresses IP statiques.

Voici la procédure que j'ai suivie jusqu'à présent:

  1. Désactivez la fonction de serveur DHCP du réseau hôte uniquement à utiliser dans cette configuration
  2. Modifiez l'adresse IP attribuée à l'hôte en 192.168.56.254
  3. Créer une machine invitée avec 2 cartes d'interface réseau (NIC)
  4. Configurer le 1er NIC pour utiliser NAT
  5. Configurer la 2e carte réseau pour utiliser la mise en réseau uniquement à chaud
  6. Installez le système d'exploitation (Ubuntu Server 13.10) sur chacun d'eux
  7. Mettre à jour le système d'exploitation
  8. Configurez la mise en réseau comme suit en éditant / etc / network / interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254
dns-search cloudspace.local
dns-nameservers 8.8.8.8 8.8.4.4
  1. Sauvegardez le fichier
  2. Redémarrer

Lorsque l'invité redémarre, la mise en réseau hôte uniquement fonctionne correctement. Les paires de machines hôte / invité et invité / invité peuvent se pinguer, mais Internet ne fonctionne pas comme apt-getéchoué.

Si je service networking restartlance ensuite une commande, la mise en réseau commence à fonctionner comme il se doit.

Qu'est-ce que je fais mal?

J'ai essayé de changer l'ordre dans lequel les cartes réseau apparaissent dans le /etc/network/interfacesfichier. J'ai également échangé le réseau NAT / hôte uniquement entre les 2 cartes réseau. Rien n'a fonctionné.

L'hôte est Windows 8.1 et l'invité est Ubuntu Server 13.10. J'ai essayé la même chose sur Mac OS X avec des résultats similaires.

J'apprécierais grandement toute aide à cet égard.

Mise à jour:

J'ai inclus la sortie des commandes suivantes ci-dessous, pour aider au diagnostic:

  • cat / etc / network / interfaces
  • ifconfig -a
  • route -n
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:75:47:64
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe75:4764/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1180 (1.1 KB)  TX bytes:1332 (1.3 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:93:98:d8
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe93:98d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:140 errors:0 dropped:0 overruns:0 frame:0
          TX packets:225 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14418 (14.4 KB)  TX bytes:27378 (27.3 KB)

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:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1184 (1.1 KB)  TX bytes:1184 (1.1 KB)

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.254  0.0.0.0         UG    0      0        0 eth1
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Mise à jour 2:

Après avoir exécuté sudo service networking restart, la sortie de route -ndevient:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

Alors, comment puis-je assurer cette configuration au démarrage?

Réponses:


16

Il serait plus facile de résoudre votre problème si vous publiez les résultats que vous obtenez en essayant d'envoyer une requête ping à une adresse externe (comme les serveurs DNS Google que vous utilisez), les paramètres réseau actuels et votre table de routage.

/sbin/ifconfig -a
/sbin/route -n

Sans en savoir plus, c'est un peu un tir dans le noir, mais je suppose que soit a) vous n'obtenez pas d'adresse DHCP sur eth0, ou b) vos paramètres de passerelle pour eth1 sont en désordre avec la route par défaut attribuée par DHCP.

Si vous n'obtenez pas d'adresse DHCP pour eth0, c'est probablement une mauvaise configuration dans VirtualBox (comme obtenir vos adaptateurs en arrière).

Quoi qu'il en soit, vous n'avez pas besoin d'une passerelle ou de paramètres DNS affectés spécifiquement à eth1 car cela sera attribué par DHCP sur eth0, donc je supprimerais les lignes de passerelle, dns-search et dns-nameservers de votre configuration. Vos machines virtuelles pourront toujours communiquer sans paramètre de passerelle si elles sont sur le même réseau et que VirtualBox est correctement configuré.

Edit: pour vous assurer que vous n'avez pas de passerelle sur eth1 après un redémarrage, supprimez les lignes de votre bloc eth1 pour qu'il ressemble à ceci:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

Lorsque vous avez terminé, vous n'aurez plus de lignes de passerelle dans votre fichier d'interface.


J'ai ajouté les diagnostics comme vous l'avez suggéré. Je pense que la bonne réponse est (b), c'est-à-dire que les paramètres de la passerelle eth1jouent avec la route par défaut attribuée par DHCP. Y a-t-il une solution à cela?
Umar Farooq Khawaja

1
J'ai modifié ma réponse pour montrer à quoi devrait ressembler votre bloc eth1 dans le fichier d'interface. Vous n'avez pas besoin du réseau ou des lignes de diffusion, et vous ne devriez pas avoir la ligne de passerelle. Retirez ces trois.
jkt123

3

J'ai trouvé cette solution, qui est la même que la réponse de @ jkt123 et la question de @ Umar, mais plus courte. J'apprécierais vos commentaires à ce sujet!

Dans virtualbox, activez les réseaux NAT et hôte uniquement . (BTW: Cela fonctionne sur mon hôte Win7. Je ne sais pas comment faire cela sur un hôte Linux).

Sur l'hôte - recherchez l'IP de l'interface "hôte uniquement"

ipconfig /all     # for windows host
ifconfig -a       # for linux host

Dans l'invité, éditez / etc / network / interfaces . L'astuce consistait à inverser l'ordre eth1 (hôte uniquement) AVANT eth0 (Internet / DHCP). Je ne sais pas pourquoi.

auto lo                        # keep the original loopback settings
iface lo ...                   # yeah, i don't remember, just keep it.

# ----> Ok, this is my addition <-----
auto eth1                      
allow-hotplug eth1             # i think hotplug it helps. not sure.
iface eth1 inet static
address 192.168.56.100         # arbitrary IP address between 2 and 254

auto eth0                      # This is the original content
iface eth0 inet dhcp           #  of this file, now at the end.

redémarrer.


0

Tout d'abord, j'ai activé les deux réseaux NAT avec DHCP et le réseau hôte uniquement avec static ip add 192.168.40.41.

Ensuite, j'ai suivi avec cette commande:

nano cat /etc/network/interfaces

J'ai obtenu ce résultat:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.41.4
netmask 255.255.255.0

Et avant de redémarrer, j'ai tapé la commande suivante:

sudo service networking restart

Puis redémarré.

Après avoir chargé sur VM VirtualBox, les deux réseaux fonctionnent. Je peux me connecter à Internet et je peux me connecter 192.168.40.41via un navigateur Web.

J'espère que cela sera utile pour obtenir l' nanoéditeur:

sudo apt-get update
sudo apt-get install nano

Tapez ensuite le nanoterminal pour le démarrer.


0

Plusieurs passerelles par défaut sont attribuées à différentes cartes réseau. En général, "Default" signifie une option présélectionnée. Dans ce cas, si une passerelle par défaut spécifiée est définie pour les deux cartes réseau, ce ne serait pas une option présélectionnée. En outre, cela entraînerait également des problèmes de communication tels que le routage asynchrone. Je ne sais pas comment la métrique des deux interfaces est définie sur 0, mais cela peut être dû au fait d'avoir les deux cartes réseau avec des passerelles. Le compte rendu de Microsoft à ce sujet se trouve ici et la fonction métrique a un certain nombre de facteurs qui fournissent la façon dont elle est déterminée pour définir les priorités. (Lien: https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes )

En accord avec @ jkt123 dans la réponse répondue, il n'y a qu'une seule passerelle par défaut qui doit être affectée.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.