Configuration du NAT invité Ubuntu VMware

9

J'ai un hôte Windows qui exécute une machine virtuelle Ubuntu invitée via vmplayer. Cette machine virtuelle sera clonée, distribuée à plusieurs personnes (exécutant des hôtes Windows) et utilisée pour mener un atelier de programmation. J'essaie - et échoue jusqu'à présent - de configurer le réseau pour répondre aux exigences suivantes:

  1. L'invité doit avoir accès à Internet
  2. Tous les clones doivent avoir le même nom d'hôte (disons que Workshop doit être concret)
  3. Le système hôte doit pouvoir accéder à son invité respectif via ce nom (par exemple, ping Workshop enverrait un ping à l'invité qui s'exécute sur cet hôte et non à tout autre clone)

Ce que j'ai essayé jusqu'à présent:

  • "Installé" une carte réseau NAT pour l'invité
  • J'ai essayé de connecter l'invité via DHCP, dans / etc / network / interfaces :

    auto eth0
    iface eth0 inet dhcp
       hostname Workshop
    

Cela fonctionne en ce qui concerne la connexion à Internet. Cependant, je ne peux pas du tout me connecter à l'invité à partir de l'hôte. (Par exemple, ping Workshop ne fonctionne pas; si j'utilise l'adresse renvoyée par ifconfig, cela ne fonctionne pas non plus depuis l'hôte).

  • J'ai ensuite essayé d'attribuer une adresse statique à l'invité:

    auto eth0
    iface eth0 inet static
         address 172.241.0.101
         netmask 255.255.0.0
         gateway 172.241.0.100
    

(172.241.0.100 est l'adresse attribuée statiquement à l'hôte par l'adaptateur VMWare Network VMNet8 - c'est l'adaptateur NAT ci-dessus). Maintenant, je peux cingler 172.241.0.101 et telnet à partir de l'hôte. Je peux également envoyer une requête ping et telnet de l'invité au 172.241.0.100 (l'hôte), mais c'est à peu près tout - il n'y a pas de connexion au réseau plus large. (Je ne peux pas non plus accéder à l'invité via son nom d'hôte, mais ce n'est pas crucial ici car si le push vient à pousser, je peux utiliser son adresse directement - tant qu'elle est la même pour tout le monde - et pas le nom).

Maintenant, je pense que je peux utiliser l'option de connexion réseau pontée avec DHCP et cela me donnera ce dont j'ai besoin dans le cas d'une machine virtuelle (je ne l'ai pas essayé dans ce cas, mais je me souviens l'avoir fait précédemment). Cependant, dans le cas de plusieurs VM avec le même nom d'hôte et leurs hôtes connectés au même réseau qui seront problématiques, n'est-ce pas?

Vos solutions et autres conseils seront très appréciés.

malenkiy_scot
la source

Réponses:

8

Tout d'abord, oui, vous ne pourrez pas utiliser une connexion réseau pontée car tous les invités auront le même nom d'hôte, vous devrez donc utiliser NAT.

Vous avez obtenu une bonne partie de la configuration, cependant, votre problème devrait être dans la passerelle par défaut que vous avez affectée à l'invité. La passerelle par défaut, lors de l'utilisation de NAT, n'est pas l'IP de l'hôte, c'est l'IP d'un "commutateur virtuel" qui est connecté au réseau NAT. (L'adaptateur VMnet8 hôte est simplement un autre périphérique connecté au réseau, pour permettre à l'hôte de communiquer avec la machine virtuelle.) Ce commutateur virtuel dont nous parlons obtient l' .2IP dans le sous-réseau. Donc, dans votre cas, vous /etc/network/interfacesdevriez lire:

auto eth0
iface eth0 inet static
     address 172.241.0.101
     netmask 255.255.0.0
     gateway 172.241.0.2

Cela devrait permettre à votre machine virtuelle invitée d'accéder à Internet (via 172.241.0.2) et de communiquer également avec votre hôte ( 172.241.0.100). Alors essayez-le et faites-moi savoir si cela fonctionne.

Si cela ne fonctionne pas (hautement improbable), vous devez savoir quelle est l'IP du commutateur virtuel. Ce que vous pouvez faire est de laisser la VM obtenir une IP via DHCP (c'est-à-dire la changer iface eth0 inet dhcpcomme vous l'aviez auparavant), puis le faire route -n. Cela devrait vous montrer la passerelle par défaut qu'elle utilise. Utilisez cette adresse IP dans votre configuration statique.


Pour pouvoir envoyer une requête ping à la machine virtuelle invitée à l'aide de son atelier de nom d'hôte , voici ce que vous pouvez faire. Vous devez ajouter une entrée dans le hostsfichier sous Windows, qui se trouve dans C:\Windows\System32\drivers\etc\hosts. Modifiez ce fichier pour inclure la ligne suivante à la fin:

Cependant, pour modifier ce fichier sous Windows, vous devez l'ouvrir en tant qu'administrateur dans le bloc-notes ou Wordpad ... et parfois, il ne vous permet même pas de l'enregistrer, vous devrez donc prendre une copie du fichier quelque part, modifier , supprimez l'extension .txt si elle en a une, et revenez en arrière et remplacez celle d'origine, et "confirmez" ... oh comme j'aime Linux. Mais de toute façon, voici la ligne que vous devez ajouter:

172.241.0.101    Workshop

Une fois cela fait, vous devriez pouvoir ping Workshopréussir depuis votre hôte Windows.

Bien sûr, pour pouvoir déployer cela dans votre atelier, vous devrez modifier le fichier hosts dans chaque hôte Windows, à moins que vous ne cloniez également les machines Windows.

Astuce : puisque vous allez attribuer une adresse IP statique à votre invité, assurez-vous que le "réseau NAT" dans VMplayer sur tous vos hôtes Windows utilise le sous-réseau 172.241.0.0/16, car je pense que VMware attribue de manière aléatoire un sous-réseau à ses réseaux virtuels ( VMnet1, 2, etc.), il est donc possible que VMnet8 n'utilise pas le même sous-réseau sur un autre hôte Windows. Si ce n'est pas le cas, vous devrez attribuer manuellement un sous-réseau à VMnet8 à l'aide de Virtual Network Editor dans VMware.


ÉDITER

D'accord. Après les commentaires, voici ce que vous devez faire:

  1. Configurez votre machine hôte (Windows) pour «obtenir automatiquement l'adresse IP» sur l'adaptateur VMnet8. Il devrait obtenir l'IP 192.168.186.1.
  2. Configurez votre machine invitée (Ubuntu) sur une IP statique dans la plage 192.168.186.3 - 192.168.186.127. Utilisons 192.168.186.3. De plus, configurez la passerelle par défaut et le serveur DNS pour qu'il soit 192.168.186.2ainsi /etc/network/interfaces:

    auto eth0
    iface eth0 inet static
         address 192.168.186.3
         netmask 255.255.255.0
         gateway 192.168.186.2
         dns-nameservers 192.168.186.2
    
  3. Testez la connectivité locale en exécutant une commande ping 192.168.186.1et à 192.168.186.2partir de la machine invitée. Vous devriez également pouvoir envoyer une requête ping de l'hôte à l'invité.

  4. Testez la connectivité Internet sur la machine invitée en exécutant une commande ping google.comou en naviguant sur Internet.
  5. Ajoutez la ligne 192.168.186.3 Workshopà votre hostsfichier sur la machine hôte Windows.
  6. Testez à ping Workshoppartir de la machine hôte Windows.

Si vous souhaitez utiliser des adresses IP à partir d'un réseau / pool complètement différent 192.168.186.0/24, vous devrez vous rendre Edit > Virtual Network Editordans VMware, trouver VMnet8 et modifier ses paramètres DHCP tout en bas sur le réseau de votre choix, et modifier les adresses IP statiques en conséquence (la passerelle par défaut sera toujours la deuxième IP utilisable, x.x.x.2).

entrez la description de l'image ici

Alaa Ali
la source
172.241.0.2 ne fonctionne pas. Il ne répond pas non plus à un ping (en fait, l'exécution de nmap -sP 172.241.0.0/24 ne renvoie que deux hôtes actifs - .100 et .101). Lorsqu'elle est configurée avec DHCP, une adresse entièrement différente est retournée par route -n: 192.168.186.2
malenkiy_scot
Oh, j'ai supposé que vous utilisiez le réseau 172.241.0.0/16 parce que c'était celui que DHCP utilisait. À bien y penser, c'est en fait une adresse IP publique [Oo]. Y a-t-il une raison pour laquelle vous attribuiez les IP hôte et invité dans le réseau 172.241.0.0? Quoi qu'il en soit, regardez ma réponse modifiée.
Alaa Ali
Non, ce n'est pas ce que DHCP utilise, mais c'est comme cela que l'adaptateur VMNet8 est configuré. L'adresse DHCP est obtenue via un service DHCP VMWare. Je n'ai aucune idée d'où il obtient son pool d'adresses. Cependant, je ne pense pas que l'adresse 172.241 soit publique. Lorsque j'établis une connexion entre l'hôte et l'invité et que j'exécute CPORTS, cela montre que 10.63.41.41 (c'est l'adresse de l'hôte sur le LAN) est connecté à lui-même sur différents ports - ce qui est logique car il s'agit de NAT (ou probablement de PAT) . En fait, j'ai pensé dans le même sens que vous en ce qui concerne la passerelle - qu'elle a une adresse différente.
malenkiy_scot
Oui, comme mentionné dans ma réponse, le service DHCP et son pool sont configurables à partir de l'éditeur de réseau virtuel (j'ai ajouté une capture d'écran à ma réponse). La passerelle, DHCP et le serveur DNS sont tous le même périphérique virtuel, x.x.x.2. Et oui, comme vous l'avez dit, il utilise bien sûr la surcharge (PAT) sur l'IP de votre hôte; vous ne devriez pas voir l'IP de l'invité dans le réseau plus large. En outre, 172.241.0.0/16 est une plage d'adresses IP publique =). 172.16.0.0 - 172.31.255.255est la plage privée des adresses de classe B. Mais cela n'a pas vraiment d'importance, cela ne devrait rien affecter.
Alaa Ali
En outre, vous pouvez visiter cette page si vous souhaitez en savoir plus sur NAT dans VMware, c'est une bonne lecture.
Alaa Ali
3

J'avais un problème similaire en utilisant VMWare Player fonctionnant sous Windows 7 avec des invités Ubuntu. Mais j'ai pu me connecter d'hôte à invité et d'invité à hôte, mais le problème était que je n'ai pas pu me connecter à Internet à partir de l'invité. Après avoir lu la réponse @Alaa, je devais juste apporter une modification supplémentaire pour ajouter le nom du serveur DNS au fichier d'interface (dns-nameservers 192.168.150.2), puis tout était conforme.

Voici ma configuration qui a fonctionné.

Configuration de l'interface VMWare sur l'hôte:

Carte Ethernet VMware Network Adapter VMnet8: (Client)

Connection-specific DNS Suffix  . : 
Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8
Physical Address. . . . . . . . . : 00-50-56-C0-00-08
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::9c13:cbf2:1dc:259f%42(Preferred) 

IPv4 Address. . . . . . . . . . . : 192.168.150.1(Preferred) 
Subnet Mask . . . . . . . . . . . : 255.255.255.0

Default Gateway . . . . . . . . . : 
DHCPv6 IAID . . . . . . . . . . . : 704663638
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-19-06-50-32-88-53-2E-7A-D3-8E
DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                    fec0:0:0:ffff::2%1
                                    fec0:0:0:ffff::3%1
NetBIOS over Tcpip. . . . . . . . : Enabled 

Modifications de l'interface de Ubuntu invité:

auto eth0
iface eth0 inet static
address 192.168.150.10
netmask 255.255.255.0
gateway 192.168.150.2
dns-nameservers 192.168.150.2

192.168.150.2 est le proxy de VMWare qui transmettrait le trafic des invités à l'hôte.

Kingsly
la source
Bonjour, je rencontre le même problème que le vôtre. Pourriez-vous expliquer davantage comment vous résolvez le problème. La première chose est de savoir où obtenir les informations de "Adaptateur Ethernet VMware Network Adapter VMnet8: (Client)". Voulez-vous dire que vous devez mettre à jour vos modifications dans / etc / network / interfaces De plus, pour l'adresse comme "masque de réseau", "passerelle", varient-elles selon la machine? Ou je peux utiliser la même chose que vous avez posté.
user288609