Cómo conseguir la IP de una máquina virtual de libvirt / kvm

Una de esas pequeñas cosas que molestan de libvirt en su combinación por virsh es que no tiene un método para obtener la IP de una máquina virtual. Y sin la IP ¿cómo conectamos por ssh a la máquina?

En los últimos cambios incorporados en libvirt, se permite controlar parte del gestor dhcp/dns que viene incorporado, dnsmasq y que seguro que en un futuro nos permitirá obtener la IP sin hacer trucos. Se puede ver en la documentación de Addressing de libvirt

La forma trivial de obtener la IP es bastante fácil. A través de virt-manager, accedes a la pantalla de la máquina mediante VNC. Haces login con tu usuario y contraseña, y bastaría con ejecutar ifconfig o ip a para ver la IP entre toda la información de la red.

Este método es un poco tedioso, y además, si el servidor se encuentra en una red lejana con mucho lag en la terminal, el efecto sobre la consola VNC puede ser temible. Por tanto, hay que buscar alternativas más cómodas. Cómo mediante la información arp.


Hasta ahora, mi método solía ser mirar la mac de máquina obtenida del XML de la máquina con:

Y luego buscarla en la tabla arp, fácilmente accesible mediante:

Para refrescar la memoria de algún rezagado, con el comando arp se obtiene la información de la tabla de caché del sistema que vincula “macs” vecinas con sus respectivas IPs, de forma que se evite tener que estar continuamente haciendo peticiones de descubrimiento de asociaciones mac-ip en la red en cada envío de paquete tcp/ip. Si quieres más información sobre el protocolo ARP siempre puedes consultar su página en la Wikipedia. Como inconveniente tenemos que solo es válida su ejecución en el host de virtualización donde esté corriendo la máquina virtual. De otra forma, al no llegarnos la petición de IP de DHCP mediante broadcast, no podremos obtener esta IP.

Este método es muy manual, pero es bastante fácil meterlo todo en un comando de una sola línea combinando esos comandos que tanto nos gusta usar en la shell como cut y grep:

Y si ya tenemos todo en una línea ¿porqué no incorporarlo como comando del sistema?

Como adjunto, he incorporado el script que uso para obtener la IP de una máquina virtual indicándole el nombre de la máquina. El comando lo llamo virt-ip y lo suelo colocar bajo la ruta /usr/local/bin/virt-ip

virt-ip


{lang: 'es'}

5 pensamientos en “Cómo conseguir la IP de una máquina virtual de libvirt / kvm

  1. Buen post! La verdad es que se echa mucho de menos un comando que te muestre la IP de una máquina virtual usando virsh, ya lo hemos comentado alguna vez.

    ¿Aún no te has decidido a crearte un repositorio en github o bitbucket para este tipo de utilidades?

    Un saludo!
    Manu.

    • Pues tengo alguno privado en bitbucket con los perfiles de vim, screen, y estos mini-scripts. A ver si un día de estos, unifico las utilidades “publicables” en github. De momento, achroot ya está allí.

  2. Yo por ahora prefiero configurar mis máquinas virtuales con IPs estáticas para luego ponerles nombres fáciles en el /etc/hosts del anfitrión. Alguna vez me ha pasado que la IP que le asignaba el dhcp cambiaba según si la máquina se había conectado a la red de la oficina o a la de mi casa.

  3. Muy buena!!!, me has ahorrado trabajo de pensar… ya que me daba pereza hacer la sentencia…

    Con tu permiso, te la mejoro, y la redactaré en mi blog (haciéndote mención claro está!!)

    Un saludo, y muchas gracias! =)

  4. Son muy honesto y bien informado. Les recomendaré sus servicios ya que son muy confiables. Amador puede producir algunas ganancias impresionantes en muy poco tiempo. Sin embargo, es muy tóxico para el hígado (hepatotóxico), por lo que debe usarlo con precaución durante los períodos más cortos posibles en esteroides24.com.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *