Estoy usando qemu / kvm con conexión en red en puente. En la máquina host hay varias interfaces de red "vnetX" sin IP. Estoy buscando una manera de saber qué vnetX pertenece a una máquina virtual.
Intenté hacer coincidir los valores de la dirección MAC en estas interfaces con los MAC en las máquinas virtuales (o el XML que los define), pero no coincide.
Hay brctl show que muestra las interfaces vnet que pertenecen a un puente, pero esta no es información útil.
¿Hay alguna manera de conocer esa relación? ¡¡Gracias!!
fuente
for vm in $(virsh list | grep running | awk '{print $2}'); do echo -n "$vm:"; virsh dumpxml $vm| grep -oP "vnet\d+" ; done
Intenta
virsh dumpxml $domain
, verás algo como:esto
alias name
es lo que se usa en la línea de comando qemu-kvm, por lo que si ejecutaps -ef |grep qemu|grep net1
desde mi ejemplo, verá la sintaxis de comando real utilizada para esta interfaz.fuente
Cada una de las soluciones dadas anteriormente supone que las máquinas virtuales están siendo administradas por libvirt. Es muy posible ejecutar máquinas virtuales QEMU sin eso, en cuyo caso no puede usar virsh o mirar XML para encontrar la respuesta.
En el caso de ejecutar máquinas virtuales QEMU desde una línea de comando "sin formato":
tcpdump -i tap0 -f 'icmp' (sustituya la interfaz de tap que le interese)
Haga ping a cada máquina virtual candidata hasta que vea paquetes en la traza. ¡La interfaz que está rastreando cuando aparecen los paquetes ICMP es la que está buscando!
Por el contrario, puede iniciar un ping a una VM en particular y luego tcpdump cada interfaz de toque a su vez hasta que uno "se enciende". Depende de si está interesado en encontrar la VM que coincida con la interfaz de tap, o la interfaz de tap que coincida con la VM.
fuente
La dirección MAC de las
vnetX
interfaces pertenece al host, no al invitado.brctl showmacs br0
mostrará los MAC detectados por el puente, pero luego deberá hacer una referencia cruzada del número de puerto con la lista de interfaces debrctl show
.fuente
Haga coincidir las direcciones IP de la caché Arp con la VM
Salida de muestra:
fuente
Según la respuesta de @daff:
Ejemplo de salida:
fuente
Salida de ejemplo:
fuente