Ich verwende qemu / kvm mit überbrücktem Netzwerk. Auf dem Host-Computer gibt es mehrere "vnetX" -Netzwerkschnittstellen ohne IP. Ich suche nach einer Möglichkeit zu wissen, welche vnetX zu einer virtuellen Maschine gehören.
Ich habe versucht, die MAC-Adresswerte auf diesen Schnittstellen mit den MACs auf den virtuellen Maschinen (oder dem XML, das sie definiert) abzugleichen, aber es stimmt nicht überein.
Es gibt eine brctl-Show, die die vnet-Schnittstellen zeigt, die zu einer Bridge gehören, aber dies sind keine nützlichen Informationen.
Gibt es eine Möglichkeit, diese Beziehung zu kennen? Danke!!
quelle
for vm in $(virsh list | grep running | awk '{print $2}'); do echo -n "$vm:"; virsh dumpxml $vm| grep -oP "vnet\d+" ; done
Versuchen Sie
virsh dumpxml $domain
, Sie werden etwas sehen wie:das
alias name
ist das, was in der qemu-kvm Befehlszeile verwendet wird, so dass , wenn Sie laufenps -ef |grep qemu|grep net1
von meinem Beispiel werden Sie die tatsächliche Befehlssyntax für diese Schnittstelle verwendet sehen.quelle
Bei jeder der oben angegebenen Lösungen wird davon ausgegangen, dass die VMs von libvirt verwaltet werden. Es ist durchaus möglich, QEMU-VMs ohne diese auszuführen. In diesem Fall können Sie weder virsh noch XML verwenden, um die Antwort zu finden.
Im Fall der Ausführung von QEMU-VMs über eine "rohe" Befehlszeile:
tcpdump -i tap0 -f 'icmp' (ersetzen Sie die Tap-Schnittstelle, an der Sie interessiert sind)
Pingen Sie jede Kandidaten-VM an, bis Sie Pakete in der Ablaufverfolgung sehen. Die Schnittstelle, die Sie verfolgen, wenn ICMP-Pakete angezeigt werden, ist die, nach der Sie suchen!
Umgekehrt können Sie einen Ping an eine bestimmte VM starten und dann nacheinander jede Tap-Schnittstelle tcpdumpen, bis eine "aufleuchtet". Hängt davon ab, ob Sie die VM suchen möchten, die der Tap-Schnittstelle entspricht, oder die Tap-Schnittstelle, die der VM entspricht.
quelle
Die MAC-Adresse der
vnetX
Schnittstellen gehört dem Host, nicht dem Gast.brctl showmacs br0
zeigt die von der Bridge erkannten MACs an, aber Sie müssen dann die Portnummer mit der Liste der Schnittstellen von vergleichenbrctl show
.quelle
Passen Sie die IP-Adressen vom Arp-Cache an die VM an
Beispielausgabe:
quelle
Basierend auf der Antwort von @daff:
Ausgabebeispiel:
quelle
Beispielausgabe:
quelle