J'utilise qemu / kvm avec un réseau ponté. Sur la machine hôte, il existe plusieurs interfaces réseau "vnetX" sans IP. Je cherche un moyen de savoir quels vnetX appartiennent à une machine virtuelle.
J'ai essayé de faire correspondre les valeurs d'adresse MAC sur ces interfaces avec les MAC sur les machines virtuelles (ou le XML qui les définit), mais ne correspond pas.
Il y a brctl show qui montre les interfaces vnet qui appartiennent à un pont, mais ce ne sont pas des informations utiles.
Existe-t-il un moyen de connaître cette relation? THX!!
la source
for vm in $(virsh list | grep running | awk '{print $2}'); do echo -n "$vm:"; virsh dumpxml $vm| grep -oP "vnet\d+" ; done
Essayez
virsh dumpxml $domain
, vous verrez quelque chose comme:l'
alias name
est ce qui est utilisé dans la ligne de commande qemu-kvm, donc si vous exécutezps -ef |grep qemu|grep net1
de mon exemple, vous verrez la syntaxe de commande réelle utilisée pour cette interface.la source
Chacune des solutions données ci-dessus suppose que les machines virtuelles sont gérées par libvirt. Il est tout à fait possible d'exécuter des machines virtuelles QEMU sans cela, auquel cas vous ne pouvez pas utiliser virsh ou regarder XML pour trouver la réponse.
Dans le cas de l'exécution de machines virtuelles QEMU à partir d'une ligne de commande "brute":
tcpdump -i tap0 -f 'icmp' (remplacez l'interface tactile qui vous intéresse)
Envoyez un ping à chaque machine virtuelle candidate jusqu'à ce que vous voyiez des paquets dans la trace. L'interface que vous tracez lorsque les paquets ICMP apparaissent est celle que vous recherchez!
Inversement, vous pouvez démarrer un ping vers une machine virtuelle particulière, puis tcpdump chaque interface tactile à tour de rôle jusqu'à ce qu'une "s'allume". Cela dépend si vous êtes intéressé à trouver la machine virtuelle qui correspond à l'interface tactile, ou l'interface tactile qui correspond à la machine virtuelle.
la source
L'adresse MAC des
vnetX
interfaces appartient à l'hôte, pas à l'invité.brctl showmacs br0
affichera les MAC détectés par le pont, mais vous devrez alors croiser le numéro de port avec la liste des interfacesbrctl show
.la source
Faire correspondre les adresses IP du cache Arp à la machine virtuelle
Exemple de sortie:
la source
Basé sur la réponse @daff:
Exemple de sortie:
la source
Exemple de sortie:
la source