Encontre o IP da VM executando o KVM

3

Como posso encontrar o IP da VM no KVM (usando o Nmap)? Se não, há alguma função no Libvirt para fazer isso?

    
por P Ramesh 09.09.2011 / 12:46

5 respostas

2
Depois de longas horas de sujar as mãos, eu por acaso tropeço em um a-virtual-machine / "> este link épico.

  1. Obtenha o endereço MAC da VM no arquivo de configuração da VM (desde Estou usando o KVM, consultei o arquivo .xml para o endereço MAC).
  2. Em seguida, use arp -a e obtenha todos os endereços MAC e o endereço das interfaces e armazene-o em um arquivo
  3. Consulte o arquivo para o endereço MAC da VM na etapa 1.
por 09.09.2011 / 22:24
4

Exemplo rápido e sujo para o KVM no Centos 63 x86_64. Ping curto em segundo plano para todos os endereços IP possíveis que as VMs podem ter neste segmento

for i in {1..249}
 do
  ping -c 1 -n -q -r  -t 1 -s 1  -W 1   192.168.100.$i > /dev/null &
done

Extraia os nomes e endereços MAC das VMs via virsh e extraia o IP da tabela ARP

for name in 'virsh list | grep running | awk '{ print $2 }''
do
  printf  "\n$name\n "
  arp -e | grep "'virsh dumpxml  $name | grep "mac address"|sed "s/.*'\(.*\)'.*//g"'" | 
  awk '{ printf  $1 ;  printf  " "  ; printf  $3 }'
done
    
por 19.09.2012 / 17:14
1

Eu escrevi um script bash para fazer isso, mas também filtrar por máquinas com o nome "swarm" nelas. Você pode remover o filtro ou alterá-lo conforme necessário. (remove | grep "swarm" ) Você poderia usar isso como o script completo ou copiar e colar o forro dele:

#!/usr/bin/env bash
# we make assumption that the VM's we want have the word swarm in their name.  Edit for different name or to get all unfiltered names
for i in $(virsh list | grep "swarm" | awk '{print $2;}' ); do virsh domifaddr $i | sed 3q | sed '$!d' |awk '{print $4}'  ; done;

As partes constituintes são comandos virsh, virsh list para obter uma lista de todas as VMs e, em seguida, em um loop for chamando domifaddr <VM NAME> para obter o endereço IP do mesmo. Todo o resto é filtrar o texto para apenas o endereço IP, um por linha. Eu escrevi / executei isso no servidor KVM do Ubuntu 15.10

    
por 19.05.2016 / 16:23
0

Usando o comando virt-cat, você pode consultar todos os arquivos em uma VM. Por exemplo, o arquivo de concessão do dhcp:

virt-cat -d seu_domínio /var/lib/dhcp/dhclient.eth0.leases

    
por 14.10.2014 / 22:38
0

Quando iniciado com qemu-kvm e a opção --nographic , você pode usar ctrl-a c para obter o monitor qemu (algum tipo de shell para monitorar e controlar VMs).

O comando info network fornecerá informações de conexão de rede, incluindo o endereço MAC. O comando info usernet mostra informações de ponte: por exemplo como uma porta de convidado é mapeada para uma porta do host. Esta informação geralmente inclui o ip do convidado.

Exemplo

Inicie vm com algum encaminhamento de porta tcp:

qemu-kvm -cpu host -m 1024 -hda ~/myvm.qcow -net user,hostfwd=tcp::10022-:22 -net nic -nographic

após ctrl-a c os comandos info network e info usernet

(qemu) info network
hub 0
 \ hub0port1: e1000.0: index=0,type=nic,model=e1000,macaddr=58:44:00:22:11:
 \ hub0port0: user.0: index=0,type=user,net=10.0.2.0,restrict=off
(qemu) info usernet
VLAN 0 (user.0):
  Protocol[State]    FD  Source Address  Port   Dest. Address  Port RecvQ S
  TCP[HOST_FORWARD]  13               * 10022       10.0.2.15    22     0  

Referência: QEMU-doc em wiki.qemu.org.

    
por 07.11.2016 / 11:22

Tags