Como encontrar o endereço IP de uma máquina virtual KVM, que eu posso usar SSH nela?

25

Eu segui este guia ( Virtualização com o KVM no Ubuntu 11.10 ) para configurar meu KVM (Virtual Machines Software) no meu servidor Ubuntu 11.10. No entanto, não configurei o endereço IP da minha VM ao criar a VM, em vez de usar:

vmbuilder kvm ubuntu --suite=oneiric --flavour=virtual --arch=amd64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --ip=192.168.0.101 --gw=192.168.0.1 --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=/var/lib/libvirt/images/vm1/boot.sh --mem=256 --hostname=vm1 --bridge=br0

Eu usei: (eu deletei "--ip = 192.168.0.101 --gw = 192.168.0.1" da linha de comando)

vmbuilder kvm ubuntu --suite=oneiric --flavour=virtual --arch=amd64 --mirror=http://de.archive.ubuntu.com/ubuntu -o --libvirt=qemu:///system --part=vmbuilder.partition --templates=mytemplates --user=administrator --name=Administrator --pass=howtoforge --addpkg=vim-nox --addpkg=unattended-upgrades --addpkg=acpid --firstboot=/var/lib/libvirt/images/vm1/boot.sh --mem=256 --hostname=vm1 --bridge=br0

Eu configurei a ponte de rede conforme o guia é instruído e a nova interface da VM é conectada à ponte de rede.

Eu suponho que o KVM irá atribuir minha VM via DHCP, mas eu não tenho informações sobre o endereço IP da minha nova VM, onde posso encontrar o endereço IP da VM e o SSH para a nova VM? Obrigado.

[Notas: Consegui fazer o login da VM sem saber o endereço IP da VM. Usando " Xming + SSH com X Graphic Forwarding " Mas não há nenhum endereço IP DHCP atribuído para minha VM, além da pergunta acima, eu tenho outra pergunta aqui: Como habilitar o DCHP na minha VM, então quando eu uso o Xming para logar via "virt viewer" eu posso pelo menos ver meu endereço IP lá.]

    
por Xianlin 02.03.2012 / 03:24

11 respostas

15

Veja o blog abaixo para mais detalhes. Simplificando, você pode executar arp -n para ver qual IP sua máquina virtual atende. Dessa forma, você não precisa fazer o login no guest vm e digitar ifconfig .

Dica: encontre o endereço IP de uma máquina virtual

    
por 25.03.2013 / 09:50
24

Tente isto:

virsh net-list
virsh net-dhcp-leases <net-name>   <--- net-name from above command

Você também pode usar o seguinte formulário se souber o endereço MAC:

virsh net-dhcp-leases <net-name> --mac <mac-address>

O endereço MAC pode ser encontrado no comando dumpxml. Veja Existe uma maneira de determinar qual interface virtual pertence a uma máquina virtual em um host kvm?

    
por 13.05.2016 / 23:57
5

lista para vms:

virsh list

obtenha o vm MAC do nome

virsh domiflist debian8

faça a varredura de sua sub-rede vm com o grep (o MAC deve estar em maiúsculas)

nmap -sP 10.0.0.0/24 | grep 52:54:00:FD:1F:92 -B 3 

resultado

Nmap scan report for 10.0.0.173
Host is up (0.0012s latency).
MAC Address: 52:54:00:FD:1F:92 (QEMU Virtual NIC)
    
por 22.04.2017 / 21:56
4

Se você tiver acesso ao console para a VM, basta executar ifconfig -a no convidado. Enquanto estiver lá, verifique se o convidado tem conectividade de rede e se o sshd está em execução.

Se você não tiver acesso ao console, provavelmente o endereço IP foi atribuído pelo DHCP. Procure outra máquina que também esteja recebendo uma atribuição de DHCP, talvez o servidor host, e adicione 1 ao endereço e tente-o. Na verdade, tente os próximos 5 ou 6 endereços. Se isso não funcionar, você terá uma grande rede ativa e precisará tentar todos os endereços IP na sub-rede, ou haverá um problema de rede de nível inferior, como nenhuma rota para hospedar ou dois hosts com o mesmo endereço MAC. Ou talvez você simplesmente não tenha recebido sshd em execução.

Usar o console é a maneira mais fácil de resolver esse problema.

    
por 02.03.2012 / 06:08
3

Para ver o endereço IP de suas VMs, execute:

$ arp -n

Se o arp não estiver instalado no seu sistema, basta instalar o pacote net-tools .

    
por 22.04.2017 / 22:42
2

É possível conectar-se através do VNC incorporado com virt-manager , e você faz o login tty, encontre o endereço IP com ifconfig eth0 . Normalmente eth0, a menos que você tenha especificado o contrário.

    
por 28.09.2012 / 11:16
2

sudo nmap -sn 192.168.5.0/24 | awk '/Nmap scan report/{printf $5;printf " ";getline;getline;print $3;}' | fgrep -if <(virsh list --name | grep . | while read n; do virsh domiflist $n; done | grep --only-matching ..:..:..:..:..:..)

Analisar sub-rede. Analise a saída com o awk para obter linhas como <IP> <MAC> . Então grep neles usando uma lista dos MACs das VMs.

A lista dos MACs é obtida listando todas as VMs (também tira linhas vazias), em seguida, fazendo virsh domiflist para cada uma delas e, em seguida, aplicando um padrão parecido com um MAC.

Fontes:

link

    
por 26.04.2017 / 08:53
1

Eu acho que essa é uma pergunta antiga, mas as versões atuais do virsh tornam isso muito mais fácil se você estiver usando uma rede privada nat ou com ponte. Eu tenho uma máquina - bife - em uma rede privada (roteada):

sauer@helium:~> sudo virsh list
 Id    Name                           State
----------------------------------------------------
 21    steak                          running

sauer@helium:~> sudo virsh domifaddr steak
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      76:0c:28:ab:0e:ee    ipv4         10.14.1.1/24

Em outra máquina, eu tenho um sistema (unifi) que é ligado à rede regular. O Libvirt não lhe atribui um endereço; ele recebe um endereço do meu servidor DHCP da rede, que também atualiza o DNS dinâmico no meu caso. Então, você basicamente tem que encontrar o endereço como se fosse qualquer outra máquina - encontrá-lo na tabela arp é provavelmente o mais fácil - o que significa ip neighbour agora, já que arp está obsoleto e não está mais presente em algumas distribuições. Felizmente para aqueles de nós que não escrevem coisas com extrae vouwels, você também pode usar versões mais curtas, como ip neigh e ip n (ou ip neighbor ). ;)

sauer@helium:~$ sudo virsh domifaddr unifi
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------

sauer@helium:~$ sudo virsh domiflist unifi
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     br0        virtio      52:54:00:2c:ac:ee

sauer@helium:~$ ip neigh | grep -i 52:54:00:2c:ac:ee
192.168.0.226 dev br0 lladdr 52:54:00:2c:ac:ee REACHABLE
sauer@helium:~$ host unifi
unifi.home.domain.com has address 192.168.0.226
    
por 27.07.2018 / 22:14
0

(Enquanto você parece muito avançado para uma resposta tão simples)

$ ifconfig

trabalho?

    
por 02.03.2012 / 04:56
0

Se você tiver o QEMU (VM emulator), vá para o botão "i" e verifique a placa de rede associada à rede "Br0". Tome nota do endereço MAC da NIC. Agora faça o login na sua VM - > Abra o Terminal - > digite: "ifconfig" comando no terminal - > tome nota do endereço IP associado ao endereço Mac que você anotou anteriormente.

Você pode acessar sua VM usando Putty ou qualquer cliente ssh usando o IP que você anotou na última etapa.

    
por 12.05.2016 / 08:29
0

Eu tenho meus convidados KVM na interface br0, então acho que é um pouco diferente, mas aqui estão meus dois scripts que fiz.

Nota para usar o ARP você primeiro precisa ter o MAC na sua Arp Table. Por isso, é melhor usar o fping para fazer um ping rápido de toda a rede (demora 2 segundos). Isso garante que o cache do Arp esteja atualizado.

apt-get install fping
yum install fping

Encontre um único IP convidado por:

cat << 'EOF' > ~/findip.sh
#!/bin/bash
#FreeSoftwareServers.com

echo "Finding All Active IP's in Network via single Ping"
sleep 2s

fping -a -g 192.168.1.0/24
#nmap -sn 192.168.1.0/24

echo "Please Enter the Exact Name of the VM Guest:"

read guestname

arp -na | awk -v mac=$(virsh domiflist $guestname | awk '$2=="bridge"{print $NF}') '$0 ~ " at " mac {gsub("[()]", "", $2); print $2}'
EOF
chmod +x ~/findip.sh
sudo sh -c 'echo "alias findguestip=~/findip.sh" >> ~/.bashrc'
source ~/.bashrc
findguestip

Encontre todos os IPs convidados:

cat << 'EOF' > ~/findallips.sh
#!/bin/bash
#FreeSoftwareServers.com

echo "Finding All Active IP's in Network via single Ping"
sleep 2s

fping -a -g 192.168.1.0/24
#nmap -sn 192.168.1.0/24

domainlog=/tmp/domain.log

virsh list --all | grep running |  cut -c 8- >> "$domainlog"

sed -i 's/running*//g' "$domainlog"

readarray domain < "$domainlog"

for i in "${domain[@]}"
do
ip="$(arp -na | awk -v mac=$(virsh domiflist $i | awk '$2=="bridge"{print $NF}') '$0 ~ " at " mac {gsub("[()]", "", $2); print $2}')"
echo "Hostname : $i IP : $ip"
done
rm "$domainlog"
EOF
chmod +x ~/findallips.sh
sudo sh -c 'echo "alias findallips=~/findallips.sh" >> ~/.bashrc'
source ~/.bashrc
findallips
    
por 24.02.2018 / 09:14