Korzystam z qemu / kvm z mostkiem sieciowym. W maszynie hosta znajduje się kilka interfejsów sieciowych „vnetX” bez adresu IP. Szukam sposobu, aby dowiedzieć się, który vnetX należy do maszyny wirtualnej.
Próbowałem dopasować wartości adresów MAC na tych interfejsach do adresów MAC na maszynach wirtualnych (lub XML, który je definiuje), ale nie pasują.
Jest program brctl, który pokazuje interfejsy vnet należące do mostu, ale nie jest to użyteczna informacja.
Czy istnieje sposób na poznanie tej relacji? Dzięki!!
źródło
for vm in $(virsh list | grep running | awk '{print $2}'); do echo -n "$vm:"; virsh dumpxml $vm| grep -oP "vnet\d+" ; done
Spróbuj
virsh dumpxml $domain
, zobaczysz coś takiego:alias name
to, co jest wykorzystywane w wierszu polecenia qemu-kvm, więc jeśli uruchomićps -ef |grep qemu|grep net1
z moim przykładzie widać rzeczywistą składnię poleceń używanych dla tego interfejsu.źródło
Każde z powyższych rozwiązań zakłada, że maszynami wirtualnymi zarządza libvirt. Bez tego możliwe jest uruchamianie maszyn wirtualnych QEMU, w którym to przypadku nie można użyć virsh lub spojrzeć na XML, aby znaleźć odpowiedź.
W przypadku uruchamiania maszyn wirtualnych QEMU z wiersza polecenia „surowego”:
tcpdump -i tap0 -f 'icmp' (zamień dowolny interfejs tapa, który Cię interesuje)
Pinguj każdą kandydującą maszynę wirtualną, aż zobaczysz pakiety w śladzie. Interfejs, który śledzisz, gdy pojawiają się pakiety ICMP, jest tym, którego szukasz!
I odwrotnie, możesz uruchomić polecenie ping do konkretnej maszyny wirtualnej, a następnie tcpdump kolejno każdy interfejs z kranem, aż jeden się „zapali”. Zależy, czy chcesz znaleźć maszynę wirtualną pasującą do interfejsu dotykowego, czy interfejs zaczepu pasujący do maszyny wirtualnej.
źródło
Adres MAC
vnetX
interfejsów należy do hosta, a nie do gościa.brctl showmacs br0
pokaże adresy MAC wykryte przez most, ale trzeba będzie wtedy odwołać się do numeru portu z listą interfejsów zbrctl show
.źródło
Dopasuj adresy IP z pamięci podręcznej Arp do maszyny wirtualnej
Przykładowe dane wyjściowe:
źródło
Na podstawie odpowiedzi @daff:
Przykład wyjścia:
źródło
Przykładowe dane wyjściowe:
źródło