web-dev-qa-db-fra.com

Comment configurer les réseaux NAT et hôte uniquement avec une adresse IP statique dans VirtualBox

J'essaie de configurer un ensemble d'invités dans VirtualBox, de sorte que chacun d'entre eux puisse accéder à Internet tout en étant visible pour l'autre et pour l'hôte. Je veux aussi que les invités aient des adresses IP statiques.

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

  1. Désactiver la fonction de serveur DHCP du réseau hôte uniquement à utiliser dans cette configuration
  2. Remplacez l'adresse IP attribuée à l'hôte par 192.168.56.254.
  3. Créer un ordinateur invité avec 2 cartes d'interface réseau (NIC)
  4. Configurez le premier NIC pour utiliser NAT
  5. Configurez le 2nd NIC pour utiliser la mise en réseau Hot-Only
  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. Sauvegarder le fichier
  2. Redémarrer

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

Si je lance ensuite une commande service networking restart, 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 d'affichage des cartes réseau dans le fichier /etc/network/interfaces. J'ai également échangé le réseau NAT/hôte uniquement entre les deux 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 dans ce domaine.

Mise à jour:

J'ai inclus ci-dessous le résultat des commandes suivantes, pour faciliter le 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, le résultat de route -n devient:

$ 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?

19

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

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

Sans en savoir plus, c’est un coup dans le noir, mais j’imagine que soit a) vous n’obtenez pas d’adresse DHCP sur eth0, soit b) vos paramètres de passerelle pour eth1 jouent avec la route par défaut attribuée par DHCP.

Si vous n'obtenez pas d'adresse DHCP pour eth0, il s'agit probablement d'une mauvaise configuration dans VirtualBox (par exemple, l'inversion des adaptateurs).

Quoi qu'il en soit, vous n'avez pas besoin d'une passerelle ou de paramètres DNS spécifiquement assignés à eth1, car ceux-ci seront attribués par DHCP sur eth0. Je supprimerai donc les lignes gateway, 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 si VirtualBox est configuré correctement.

Edit: Pour vous assurer de ne pas avoir de passerelle sur eth1 après un redémarrage, supprimez les lignes de votre bloc eth1 afin qu'il ressemble à ceci:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

Une fois que vous avez terminé, vous n’avez plus de lignes de passerelle dans votre fichier d’interfaces.

14
jkt123

Je suis venu avec 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, active les réseaux NAT et les hôtes uniquement. (BTW: Cela fonctionne sur mon hôte Win7. Je ne sais pas comment faire cela dans l'hôte Linux).

Sur l'hôte - recherche 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 était en inversant l'ordre eth1 (hôte uniquement) vient 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.

3
Berry Tsakala