L'hôte ne peut pas parler à la machine virtuelle invitée lorsque l'adresse IP attribuée dynamique à DHCP est modifiée.

0

TL; DR: l' hôte peut envoyer une requête ping à la machine virtuelle invitée connectée au NAT lorsque l'adresse IP DHCP est utilisée sur l'invité, mais pas lorsque l'adresse IP statique est utilisée. Aidez-moi.


J'ai donc essayé de configurer un réseau local basé sur un NAT avec lequel l'hôte peut communiquer, chaque ordinateur virtuel ayant une adresse IP statique. Selon les documents VMware, un adaptateur d’hôte est connecté au commutateur virtuel vmnet, qui s’affiche sous la forme «vmnet #» (où # correspond au numéro de l’adaptateur) dans la ifconfigsortie de l’hôte . À l'aide de cette interface virtuelle, l'hôte peut effectuer un ping et communiquer avec les ordinateurs virtuels invités connectés au même commutateur virtuel vmnet #.

Au début, j'ai créé un nouveau commutateur virtuel appelé vmnet10. Je l'ai configuré pour avoir une adresse IP de sous-réseau de 10.0.99.0/24(NetMask:) 255.255.255.0, un périphérique NAT avec l'adresse IP de 10.0.99.2et un serveur DHCP (qui, selon la documentation VMware, réside sur 10.0.99.254). Je n'ai pas modifié les paramètres DHCP automatisés et la plage 10.0.99.128 - 10.0.99.253correspond donc aux adresses IP dynamiques DHCP et aux adresses 10.0.99.3 - 10.0.99.127IP que je peux attribuer de manière statique. C'est là que le problème commence.

Lorsque l'invité de la machine virtuelle obtient son adresse IP du serveur DHCP (10.0.99.128), l'adaptateur à l'hôte y est connecté et 10.0.99.1 peut envoyer une requête ping à 10.0.99.128 et inversement. Cependant, si je modifie l'adresse IP manuellement via nmtui (générant le /etc/sysconfig/network-scripts/ifcfg-ens33fichier suivant ) alors que la machine virtuelle peut toujours accéder à Internet et envoyer une requête ping à d'autres machines virtuelles, l'hôte ne peut pas l'atteindre, et inversement. Que se passe-t-il? Est-ce à cause du fait que je n'ai pas demandé une adresse IP statique au serveur DHCP ?! Comment puis-je réparer ça?


Le fichier de configuration des systèmes décrits ci-dessus est disponible à cet emplacement .

Somenath Sinha
la source

Réponses:

1

EDIT : La méthode ci-dessous peut ou peut ne pas être nécessaire - cependant, cette étape particulière est un must . Un itinéraire statique doit être créé sur les interfaces invité, car la table de routage existante peut être erronée. Le mien ressemblait à l'origine à:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.99.2       0.0.0.0         UG    100    0        0 ens33
10.0.99.2       0.0.0.0         255.255.255.255 UH    100    0        0 ens33
10.0.99.11      0.0.0.0         255.255.255.255 UH    100    0        0 ens33
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0

Pour cela, un fichier /etc/sysconfig/network-scripts/route-ens33( interface de route ) doit être créé avec la syntaxe suivante:

default 10.0.99.2 dev ens33
10.0.99.0/24 dev ens33

10.0.99.2est l'adresse IP de la passerelle (périphérique NAT VMware) et 10.0.99.0/24le sous-réseau dans lequel les adresses IP statiques existent, c'est-à-dire le sous-réseau LAN. Après cette étape, l'interface doit être redémarrée avec nmcli c d ens33; nmcli c u ens33. La table de routage du noyau devrait maintenant ressembler à ceci:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.99.2       0.0.0.0         UG    100    0        0 ens33
10.0.99.0       0.0.0.0         255.255.255.0   U     100    0        0 ens33
...

Il s'avère donc nécessaire d'attribuer une adresse IP statique aux ordinateurs virtuels invités, même lorsque les invités ne fonctionnent pas avec DHCP. En tant que tel, le dhcpd.confcommutateur virtuel doit avoir des entrées pour chaque adresse IP statique. Depuis que j'utilise vmnet10, j'ai édité le /etc/vmware/vmnet10/dhcpd/dhcpd.conffichier et ajouté:

...
####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######

####### VMNET Static IP Allocation Table by Somu                 #######
host vmInfra.somuVMnet.local {
    hardware ethernet 00:0C:29:79:8C:1F;
    fixed-address 10.0.99.99;
}

host vmPrime.somuVMnet.local {
    hardware ethernet 00:0C:29:3B:B9:1C;
    fixed-address 10.0.99.11;
}

host vmDeux.somuVMnet.local {
    hardware ethernet 00:0C:29:2A:E2:D3; 
    fixed-address 10.0.99.12;
}

Notez que chaque adresse MAC correspond aux cartes réseau virtuelles assignées à chaque machine virtuelle. Ces configurations doivent être ajoutées une fois les machines virtuelles arrêtées et vmware workstation lui-même éteint.

Enfin, une fois la configuration enregistrée, le service DHCP étant exécuté sur la machine hôte, il doit être redémarré. Comme je ne pouvais pas trouver le service individuel pour chaque machine virtuelle, j'ai simplement redémarré le vmware.servicesur l'hôte lui-même. Notez que j'utilise systemddepuis Fedora 27. Cette méthode devrait également fonctionner pour les systèmes d'exploitation System V, même si la commande sera différente.

systemctl restart vmware; systemctl status -l vmware

Assurez-vous que le service est actif, puis allumez votre invité. Désormais, si vous avez configuré votre machine virtuelle pour avoir une adresse IP statique, elle doit alors correspondre à l'adresse IP que vous avez définie dhcpd.confpour éviter les conflits. Si vous utilisez la configuration automatique basée sur DHCP, ce n'est pas un problème du tout, puisque le serveur DHCP va maintenant attribuer l'adresse IP spécifique que vous avez demandée en fonction de l'adresse du MAC de la carte réseau virtuelle!

J'espère que cette réponse aidera quelqu'un qui est coincé dans une situation similaire et lui évitera d'innombrables heures de recherches. Notez que je n'ai pas eu à désactiver le pare-feu sur l'hôte ou l'invité!

Somenath Sinha
la source
La NAT est généralement utilisée lors du routage de paquets entre deux réseaux différents. Et contrairement à ce que vous avez dit dans votre question, ce n’est PAS une méthode permettant à l’hôte de communiquer avec l’invité. En fait, il empêche spécifiquement les communications des hôtes extérieurs d’atteindre les invités, à moins que vous ne transfériez le transfert. Il semble presque que votre hôte et vos invités se trouvent sur la même adresse réseau (10.0.99.x). Par conséquent, cela n’est pas correct ou vous n’avez pas de configuration de réseau NAT. Peut-être avez-vous voulu utiliser un réseau «ponté»? Sinon, vous devez expliquer comment on devrait toujours s'attendre à ce que 10.0.99.1 envoie une requête ping à 10.0.99.128.
Appleoddity
@Appleoddity C'est encore une fois, en utilisant un commutateur virtuel comme il est clairement indiqué dans la question - il existe un adaptateur d'hôte virtuel de l'hôte au réseau local. L'hôte envoie le trafic au réseau local si l'adresse IP correspond, sinon à la passerelle par défaut, contournant ainsi le NAT lorsqu'il doit communiquer avec les hôtes. Cependant, les hôtes ont la possibilité de se connecter à Internet derrière un NAT et peuvent avoir leur propre sous-réseau, contrairement à la connexion au pont où le routeur physique assigne l'adresse IP. Les invités peuvent donc disposer d'un sous-réseau différent tout en communiquer avec l'hôte.
Somenath Sinha
@Appleoddity Il est également important de noter que l'hôte possède l'équivalent des cartes réseau doubles et peut donc communiquer avec les deux réseaux en sélectionnant l'itinéraire pour le trafic.
Somenath Sinha