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
.
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á.]
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
.
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?
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)
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.
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
.
É 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.
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:
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
(Enquanto você parece muito avançado para uma resposta tão simples)
$ ifconfig
trabalho?
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.
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
Tags networking kvm ip ubuntu