Comment trouver l'adresse IP d'une machine virtuelle à l'aide de VMware Fusion?

19

Puis-je déterminer l'IP d'une machine virtuelle à l'aide de VMware Fusion sans réellement entrer dans le système d'exploitation exécuté sur la machine virtuelle? Je recherche une option de menu, une ligne de commande ou autre que je peux émettre contre l'image virtuelle avec le logiciel VMware Fusion lui-même.

Merci - Adron

Adron
la source
Si vous connaissez l'adresse MAC de la carte réseau de la machine virtuelle, vous pouvez toujours essayer d'exploiter le cache ARP de votre machine hôte ou inverser ARP.
ta.speot.is
Il est étonnant que vmware ne rende pas ce drop-dead évident et facile comme les autres vms! Bravo pour la réponse avahi, et nmap si vous êtes désespéré, mais quand même - Gros échec, VMware!
nealmcb

Réponses:

1

Réponse courte: Non

Réponse longue: Non mais peut-être

Une adresse IP relève uniquement de la responsabilité d'un OS. Par conséquent, le cadre virtuel qui contient le système d'exploitation n'a aucune idée de la pile TCP / IP à moins qu'il n'y ait des ajouts symbiotiques au cadre tels que Hyper-V et les outils invités supplémentaires de VMware (grâce à todda.speot.is dans les commentaires ci-dessous) . Ce n'est pas très différent de vouloir parcourir les fichiers sur une machine virtuelle sans le démarrer d'abord.

Techniquement, si la machine virtuelle repose sur DHCP, vous pouvez rechercher sur votre serveur DHCP (probablement le routeur de votre réseau local) le dernier bail qui a été remis à l'adresse MAC de la carte réseau virtuelle pour avoir une bonne idée de ce que l'IP serait probablement le la prochaine fois qu'il sera lancé. Cela suppose que la même IP n'a pas été distribuée à un autre appareil entre le moment où vous avez regardé l'historique du bail et le démarrage de la machine virtuelle.

Wesley
la source
1
Argh. J'espérais que VMware avait des crochets dans le système d'exploitation qui fourniraient cela. :( Je n'ai pas accès au DHCP d'entreprise, donc je n'ai aucune idée puisque je n'ai pas non plus accès au système d'exploitation réel.
Adron
Un hyperviseur peut se connecter et obtenir l'adresse IP, Hyper V le fait avec ses compléments invité. Et il semble que certaines versions de VMware vous le diront également kb.vmware.com/Platform/Publishing/images/1006098.JPG - mais comme WesleyDavid l'a dit, ce n'est pas vraiment la responsabilité de l'hyperviseur de s'inquiéter à ce sujet.
ta.speot.is
46

VMWare fournit, sans surprise, un outil intégré pour cela vmrun,. C'est sous /Applications/VMware Fusion.app/Contents/Library/vmrunbien qu'il ait un peu bougé dans d'autres versions de Fusion.

🍺 vmrun list
    Total running VMs: 1
    .docker/machine/machines/myvm.vmx

🍺  vmrun getGuestIPAddress ~/.docker/machine/machines/myvm.vmx
    172.16.213.128
dch
la source
7
Ce devrait être la réponse acceptée. Fonctionne parfaitement.
Michael Potter
2
Agréable! vmrunest dans le CHEMIN de mon Mac par défaut, alors vmrun getGuestIPAddress "$(vmrun list | grep vmx)", incluez les guillemets!
Big Rich
Apparemment, VMWare Tools doit fonctionner sur la machine virtuelle. (Fusion V8.5)
Laryx Decidua
10

Voici un conseil au cas où cela aiderait quelqu'un. Installez avahi-daemonsur la VM. Cela vous permet de vous connecter via le nom d'hôte vmname.local, où vmnameest le nom de votre machine virtuelle. Dans mon cas, le nom de la machine virtuelle est baremetalet sur l'hôte, je peux exécuter:

ssh baremetal.local

Pas besoin de connaître l'IP de la VM. :)

berto
la source
1
Bonne idée mais qu'en est-il des machines virtuelles qui exécutent des systèmes d'exploitation où elles avahi-daemonne sont pas disponibles? Windows par exemple me vient à l'esprit ... :-)
Laryx Decidua
4

Il est possible - au moins, dans le cas courant, où un réseau de style NAT est configuré pour l'invité. Étant donné que VMWare fournit le NAT-ing, il devrait être en mesure de nous dire à quelles adresses il est actuellement NAT-ing. Quelque chose comme vmrun listdevrait produire ces informations. Ce n'est pas le cas ...

Mais, en tout cas, voici comment on peut le découvrir de toute façon. Tout d'abord, exécutez ifconfigsur votre Mac (peut-être, ipconfigferait la même chose sur Windows, mais je ne l'ai pas testé). Cela répertoriera toutes les interfaces réseau sur la machine - à la fois physiques et virtuelles. Recherchez les vmnet-ones. Sur mon Mac, cela produit:

% ifconfig | grep -A2 ^vmnet
vmnet1: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:50:56:c0:00:01 
inet 192.168.82.1 netmask 0xffffff00 broadcast 192.168.82.255
vmnet8: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 00:50:56:c0:00:08 
inet 192.168.123.1 netmask 0xffffff00 broadcast 192.168.123.255

Ainsi, l'adresse IP de mon invité se trouve sur l'un de ces deux réseaux privés de machine virtuelle: 192.168.82.0/24 ou 192.168.123.0/24. Sur votre hôte, il peut y en avoir un seul, vous avez de la chance, ou plus de deux - nous devons tous les vérifier. Voici un script tcsh très simple, entré directement en ligne de commande, qui l'a fait pour moi. Il tente d'envoyer une requête ping à chaque adresse dans tous les réseaux privés de classe C gérés par vmnet et se termine, lorsqu'un ping réussit. L' -W 500option indique à ping d'attendre seulement une demi-seconde pour une réponse (pourrait, probablement, utiliser encore moins), et lui -c 1dit d'envoyer exactement un paquet:

% set i=2
% while ( $i < 255 )
while? ping -W 500 -c 1 192.168.82.$i && break
while? ping -W 500 -c 1 192.168.123.$i && break
while? @ i++
while? end

Le petit script ci-dessus a fonctionné pendant un certain temps répertoriant toutes les tentatives infructueuses pour atteindre les adresses inexistantes:

PING 192.168.82.2 (192.168.82.2): 56 data bytes

--- 192.168.82.2 ping statistics ---
1 packets transmitted, 0 packets received, 100.0% packet loss
PING 192.168.123.2 (192.168.123.2): 56 data bytes
...

Jusqu'à ce qu'il réussisse et se termine finalement:

64 bytes from 192.168.123.130: icmp_seq=0 ttl=64 time=0.307 ms

--- 192.168.123.130 ping statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss

Voilà, j'ai pu me connecter à mon invité:

% ssh 192.168.123.130
Password:

Maintenant, je n'avais qu'un seul invité en cours d'exécution - donc la première adresse IP à répondre à un ping était la bonne. Si vous exécutez plusieurs invités à la fois, vous devrez peut-être utiliser la même commande ping ou une commande similaire pour créer une liste de toutes ces adresses IP privées valides, puis les essayer toutes jusqu'à ce que vous obteniez le bon invité ...

(Et, peut-être, .130 est une bonne supposition pour les adresses basées sur NAT de toute façon. Mais je ne peux pas dire avec certitude.)

Mikhail T.
la source
1
Avec nmap, vous trouvez les IP up plus rapidement ;-)nmap -sP 192.168.123.*
Robert Reiz
4

Comme Mikhail T. l'a dit, "Parce que VMWare fournit le NAT-ing, il devrait être en mesure de nous dire à quelles adresses il est actuellement NAT-ing." En effet, il:

Dans mon installation VMware Fusion 6, le vmnet-dhcpddémon écrit ses baux dans les fichiers /var/db/vmware/vmnet-dhcpd-vmnetX.leases, où "X" est 1 et 8. Empiriquement :-) J'ai établi que c'est vmnet8 que je devrais rechercher. Voici un extrait du dossier de location /var/db/vmware/vmnet-dhcpd-vmnet8.leases:

lease 192.168.177.129 {
    starts 1 2014/02/17 09:34:19;
    ends 1 2014/02/17 09:36:56;
    hardware ethernet 00:0c:29:2b:2b:10;
    client-hostname "ubuntu";
}

Le client-hostnameest le nom de la VM et le numéro après le mot leaseest son IP. Vous pouvez analyser ces entrées ou simplement regarder les plus récentes. Assurez-vous que le bail que vous consultez est toujours valide.

Laryx Decidua
la source
2

Ma solution à cela était:

Une fois les outils VMware installés, configurez le partage afin d'accéder à un dossier (n'importe quel dossier) à partir de CentOS. Ensuite, modifiez / etc / sysconfig / network-scripts / ifup-post pour ajouter votre date actuelle et votre adresse IP à un fichier dans ce dossier partagé.

Comment procéder:

Modifiez: / etc / sysconfig / network-scripts / ifup-post

ajoutez ceci avant la dernière ligne de ifup-post ("exit 0"):

date >> /path/to/shared/folder/guest_ip.log
ifconfig >> /path/to/shared/folder/guest_ip.log

Cela ajoutera à votre guest_ip.log la date et la valeur de retour de ifconfig chaque fois que le réseau démarre.

Dans mon cas, j'ai décidé de chercher un préfixe de 192 sur mon adresse IP, car je sais qu'entre mon domicile et mon travail, c'est toujours 192. Cela peut être fait en ajustant ce qui précède comme suit:

date >> /path/to/shared/folder/guest_ip.log
ifconfig | grep 192 >> /path/to/shared/folder/guest_ip.log
Mr.BassHatt
la source
msgstr "afin que vous puissiez accéder à un dossier (n'importe quel dossier) à partir de CentOS.". Qu'en est-il des personnes qui 1) utilisent d'autres distributions Linux, 2) utilisent des systèmes d'exploitation UNIX autres que Linux, 3) utilisent des systèmes d'exploitation non Unix tels que Windows, ... dans leurs machines virtuelles? :-)
Laryx Decidua
1

Exécutez dans la console VM ipconfig(si VM est Windows) ou ifconfig(si VM est Linux).

IP eth0est l'adresse IP que vous recherchez.

Utilisateur VM
la source
La question d'origine était "sans réellement entrer dans le système d'exploitation exécuté sur la machine virtuelle?" Cela a peut-être échappé à votre attention.
Laryx Decidua
Cela ne répond peut-être pas à la question, mais je me suis retrouvé ici avec une question légèrement différente et cela a été utile.
jamie-wilson
1

J'ai eu le même problème lors de l'exécution de VMPlayer sur Ubuntu 15.04. Ma machine virtuelle était définie sur NAT, et même si je pouvais déterminer son adresse IP en me connectant à l'interface graphique et en exécutant ifconfig dans la machine virtuelle, je ne pouvais pas y envoyer de ping ou ssh.

S'avère quand VMPlayer est installé, il n'a pas activé DHCP sur l'adaptateur vmnet1 et vmnet8. La solution consistait à utiliser l'interface utilisateur ubuntu pour modifier les connexions réseau avec "Modifier les connexions". Trouvez vmnet1 sous ethernet et appuyez sur le bouton d'édition. Sous Paramètres IPv4, activez DHCP, enregistrez et redémarrez.

Maintenant, si vous exécutez ifconfig sur la ligne de commande, vous remarquerez que le vmnet1 a une adresse IP. La connexion SSH dans la machine virtuelle native à partir de l'hôte fonctionne désormais également.

Atifm
la source
0

Depuis les pages de manuel de vmrun (version 1.14.4 build-3204469):

getGuestIPAddress        Path to vmx file     Gets the IP address of  the guest
                         [-wait]

Cependant, gardez à l'esprit que pour que cela fonctionne, la suite VMware Tools doit être installée dans le système d'exploitation invité et cette étape ne peut pas être effectuée sans se connecter au système d'exploitation invité. Vous pouvez installer les outils dans une "image de base" et en créer de nouvelles images via le clonage. Ensuite, vous pouvez utiliser la commande ci-dessus pour obtenir l'adresse IP des VM nouvellement créées.

pldimitrov
la source
0
arp -a| grep vmnet 
? (172.16.65.132) at 0:c:29:83:1:e0 on vmnet8 ifscope [ethernet]
Mohammad Shahid Siddiqui
la source