Я использую QEMU / KVM с мостовыми сетями. В хост-машине есть несколько сетевых интерфейсов "vnetX" без IP. Я ищу способ узнать, какие vnetX принадлежат виртуальной машине.
Я пытался сопоставить значения MAC-адресов на этих интерфейсах с MAC-адресами на виртуальных машинах (или XML, который их определяет), но не совпадает.
Есть brctl show, которое показывает интерфейсы vnet, которые принадлежат мосту, но это не полезная информация.
Есть ли способ узнать это отношение? Спасибо!!
for vm in $(virsh list | grep running | awk '{print $2}'); do echo -n "$vm:"; virsh dumpxml $vm| grep -oP "vnet\d+" ; done
Попробуйте
virsh dumpxml $domain
, вы увидите что-то вроде:alias name
является то , что используется в командной строке QEMU-KVM, так что, если вы бежитеps -ef |grep qemu|grep net1
из моего примера, вы увидите , фактический синтаксис команды , используемый для этого интерфейса.источник
Каждое из приведенных выше решений предполагает, что виртуальные машины управляются libvirt. Вполне возможно запустить виртуальные машины QEMU без этого, и в этом случае вы не можете использовать virsh или смотреть на XML, чтобы найти ответ.
В случае запуска виртуальных машин QEMU из «сырой» командной строки:
tcpdump -i tap0 -f 'icmp' (замените тот интерфейс интерфейса, который вас интересует)
Проверяйте каждую виртуальную виртуальную машину, пока не увидите пакеты в трассировке. Интерфейс, который вы отслеживаете, когда появляются ICMP-пакеты, это тот, который вы ищете!
И наоборот, вы можете запустить ping для определенной виртуальной машины и затем tcpdump каждый интерфейс крана по очереди, пока один из них не загорится. Зависит от того, заинтересованы ли вы в поиске виртуальной машины, которая соответствует интерфейсу касания, или в интерфейсе касания, который соответствует виртуальной машине.
источник
MAC-адрес
vnetX
интерфейсов принадлежит хосту, а не гостю.brctl showmacs br0
покажет MAC-адреса, обнаруженные мостом, но вам нужно будет сопоставить номер порта со списком интерфейсовbrctl show
.источник
Сопоставить IP-адреса из кэша Arp с виртуальной машиной
Пример вывода:
источник
На основании ответа @daff:
Пример вывода:
источник
Пример вывода:
источник