3 votes

Trouver l'IP de la VM qui exécute KVM

Comment puis-je trouver l'IP de la VM sur KVM (en utilisant Nmap) ? Sinon, existe-t-il des fonctions dans Libvirt pour le faire ?

4voto

jva Points 41

Exemple rapide et sale pour KVM sur Centos 63 x86_64. Ping court en arrière-plan vers toutes les adresses IP possibles que les VMs peuvent avoir dans ce segment.

for i in {1..249}
 do
  ping -c 1 -n -q -r  -t 1 -s 1  -W 1   192.168.100.$i > /dev/null &
done

Extraire les noms et les adresses MAC des VMs via virsh et extraire l'IP de la table ARP.

for name in `virsh list | grep running | awk '{ print $2 }'`
do
  printf  "\n$name\n "
  arp -e | grep "`virsh dumpxml  $name | grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`" | 
  awk '{ printf  $1 ;  printf  " "  ; printf  $3 }'
done

2voto

P Ramesh Points 151

Après de longues heures à me salir les mains, je suis tombé par hasard sur este Lien épique.

  1. Obtenir l'adresse MAC de la VM à partir du fichier de configuration de la VM (puisque j'utilise KVM, j'ai interrogé le fichier .xml pour l'adresse MAC).
  2. Ensuite, utilisez arp -a et récupérez toutes les adresses MAC et l'adresse des interfaces et stockez-les dans un fichier.
  3. Recherchez dans le fichier l'adresse MAC de la VM de l'étape 1.

1voto

Jared Chmielecki Points 111

J'ai écrit un bash script pour faire cela mais aussi pour filtrer les machines ayant le nom "swarm" dans leur nom. Vous pouvez supprimer le filtre ou le modifier selon vos besoins. (supprimer | grep "swarm" ) Vous pouvez l'utiliser comme le script complet ou copier-coller le one liner de celui-ci :

#!/usr/bin/env bash
# we make assumption that the VM's we want have the word swarm in their name.  Edit for different name or to get all unfiltered names
for i in $(virsh list | grep "swarm" | awk '{print $2;}' ); do virsh domifaddr $i | sed 3q | sed '$!d' |awk '{print $4}'  ; done;

Les éléments constitutifs sont les commandes virsh, virsh list pour obtenir une liste de toutes les VM, puis dans un boucle for appeler domifaddr <VM NAME> pour obtenir l'adresse IP de celui-ci. Tout le reste consiste à filtrer le texte pour ne retenir que l'adresse IP, une par ligne. J'ai écrit/exécuté ceci sur un serveur KVM Ubuntu 15.10.

1voto

Bert Points 11

Lorsque l'on commence avec qemu-kvm et le --nographic vous pouvez utiliser l'option ctrl-a c pour obtenir le moniteur qemu (une sorte de Shell pour surveiller et contrôler les VMs).

La commande info network donnera des informations sur la connexion réseau, y compris l'adresse MAC. La commande info usernet montre des informations sur les ponts : par exemple, comment un port invité est mappé sur un port hôte. Cette information inclut souvent l'IP de l'invité.

Exemple

Démarrer le vm avec une redirection de port tcp :

qemu-kvm -cpu host -m 1024 -hda ~/myvm.qcow -net user,hostfwd=tcp::10022-:22 -net nic -nographic

après ctrl-a c les commandes info network y info usernet donner

(qemu) info network
hub 0
 \ hub0port1: e1000.0: index=0,type=nic,model=e1000,macaddr=58:44:00:22:11:
 \ hub0port0: user.0: index=0,type=user,net=10.0.2.0,restrict=off
(qemu) info usernet
VLAN 0 (user.0):
  Protocol[State]    FD  Source Address  Port   Dest. Address  Port RecvQ S
  TCP[HOST_FORWARD]  13               * 10022       10.0.2.15    22     0  

Référence : QEMU-doc à wiki.qemu.org.

0voto

Jean Points 1

En utilisant la commande virt-cat, vous pouvez interroger tous les fichiers d'une VM. Par exemple, le fichier dhcp lease :

virt-cat -d votre_domaine /var/lib/dhcp/dhclient.eth0.leases

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X