Bagaimana menemukan alamat IP Mesin Virtual KVM, yang dapat saya masukkan ke SSH?

30

Saya telah mengikuti panduan ini ( Virtualisasi Dengan KVM Pada Ubuntu 11.10 ) untuk mengatur KVM (Perangkat Lunak Mesin Virtual) saya pada Server Ubuntu 11.10 saya. Namun, saya tidak mengatur alamat IP VM saya saat membuat VM, alih-alih menggunakan:

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

Saya menggunakan: (Saya menghapus "--ip = 192.168.0.101 --gw = 192.168.0.1" dari baris perintah)

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

Saya telah mengatur jembatan jaringan sebagai panduan yang diperintahkan dan antarmuka VM baru terhubung ke jembatan jaringan.

Saya berasumsi KVM akan menetapkan VM saya melalui DHCP tetapi saya tidak memiliki informasi tentang alamat IP VM baru saya, di mana saya dapat menemukan alamat IP VM dan SSH ke VM baru? Terima kasih.

[Catatan: Saya telah berhasil login VM tanpa mengetahui alamat IP VM. Menggunakan " Xming + SSH dengan X Graphic Forwarding " Tetapi tidak ada alamat ip DHCP yang ditetapkan untuk VM saya, Selain pertanyaan di atas, saya punya pertanyaan lain di sini: Cara mengaktifkan DCHP pada VM saya jadi ketika saya menggunakan Xming untuk login via " virt viewer "Saya setidaknya bisa melihat alamat IP saya ada di sana.]

Xianlin
sumber
Saya telah menemukan masalah dan menyelesaikannya. Di / etc / network / interfaces saya menghapus informasi "network" dan "broadcast" dan DHCP bekerja pada VM tamu saya. Sekarang saya bisa ssh ke Guest VM saya. Saya kira "jaringan XXX.XXX.XXX.XXX" atau "siaran XXX.XXX.XXX.XXX" saya salah. Panduan ini masih berfungsi dengan baik untuk pengaturan seperti ini, hanya berhati-hatilah saat mengatur lingkungan jaringan Anda sendiri. Masalah terpecahkan!!!
Xianlin
1
libvirt memiliki dua perintah sekarang: domifaddr dan net-dhcp-leases
Nehal J Wani
silakan merujuk tautan ini , Anda akan menemukan jawaban:

Jawaban:

20

Anda dapat menjalankan arp -nuntuk melihat IP apa yang diambil oleh mesin virtual Anda. Dengan cara itu, Anda tidak perlu masuk ke vm dan ketik tamu ifconfig.

Blog di bawah ini memiliki rincian lebih lanjut dan menyertakan skrip perl yang secara otomatis menemukan alamat mesin virtual.

Kiat: Temukan alamat IP mesin virtual

chenwj
sumber
Sangat sederhana. Hebat ....
Indika K
1
Pergi ke halaman web xyz untuk jawaban yang tidak baik jika tautan turun, silakan posting "jawaban lengkap"
FreeSoftwareServers
31

Coba ini:

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

Anda juga dapat menggunakan formulir berikut jika Anda tahu alamat MAC:

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

Alamat MAC dapat ditemukan dari perintah dumpxml. Lihat Apakah ada cara untuk menentukan antarmuka virtual mana yang milik mesin virtual di host kvm?

Rahul
sumber
5
Ini jawaban yang benar. Bekerja tanpa peretasan. Terima kasih banyak.
chmac
1
Harusnya "virsh net-list" ... tidak ada spasi antara "net" dan "list". Kalau tidak, ini bekerja dengan sempurna.
Dave Hein
@DaveHein Terima kasih telah mengoreksi. Diperbarui jawabannya.
Rahul
Jika Anda mendapatkan hasil kosong, coba jalankan virsh dengansudo
Freedom_Ben
6

Saya kira ini adalah pertanyaan lama, tetapi versi saat virshini membuat ini jauh lebih mudah jika Anda menggunakan jaringan pribadi nat atau bridged. Saya memiliki mesin virtual bernama steakpada jaringan pribadi (dialihkan) (AKA "NAT"). Hanya ada dua perintah untuk menemukan IP apa yang ditugaskan oleh mekanisme bawaan:

$ sudo virsh list
 Id    Name                           State
----------------------------------------------------
 21    steak                          running

$ sudo virsh domifaddr steak
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet0      76:0c:28:ab:0e:ee    ipv4         10.14.1.1/24

Saya juga memiliki VM lain ( eggs) yang dijembatani ke jaringan biasa (terhubung ke perangkat jembatan pada host hypervisor). Libvirt tidak memberinya alamat; ia mendapat alamat dari server DHCP jaringan saya, yang juga memperbarui DNS dinamis dalam kasus saya. Itu satu kemungkinan kemungkinan ketika tidak ada output dari domifadduntuk VM ini. Jadi, Anda pada dasarnya harus menemukan alamat seperti itu mesin lain - menemukannya di tabel arp mungkin yang paling mudah - yang berarti ip neighboursekarang, seperti arpsudah usang dan tidak lagi ada di beberapa distribusi. Untungnya bagi kita yang tidak mengeja sesuatu dengan vouwels tambahan, Anda juga dapat menggunakan versi yang lebih pendek, seperti ip neighdan ip n(atau ip neighbor). ;) Di bawah ini, saya gunakan domiflistuntuk menemukan alamat MAC (perhatikan bahwa itu terhubung kebr0 di kolom "sumber") dan kemudian temukan di tabel arp.

$ sudo virsh domifaddr eggs
 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------

$ sudo virsh domiflist eggs
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     br0        virtio      52:54:00:2c:ac:ee

$ ip neigh | grep -i 52:54:00:2c:ac:ee
192.168.0.226 dev br0 lladdr 52:54:00:2c:ac:ee REACHABLE
$ host eggs
eggs.home.domain.com has address 192.168.0.226
dannysauer
sumber
5

daftar untuk vms:

virsh list

dapatkan vm MAC dari nama

virsh domiflist debian8

lakukan pemindaian subnet vm Anda dengan grep (MAC harus ditulis dengan huruf besar)

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

hasil

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)
Antonín Vrba
sumber
4

Jika Anda memiliki akses konsol ke VM maka jalankan saja ifconfig -apada tamu. Saat Anda berada di sana, periksa untuk memastikan bahwa tamu memiliki konektivitas jaringan dan yang sshdsedang berjalan.

Jika Anda belum mengakses konsol, maka kemungkinan alamat IP ditugaskan oleh DHCP. Cari mesin lain yang juga mendapatkan tugas DHCP, mungkin server host, lalu tambahkan 1 ke alamat dan coba. Bahkan, coba 5 atau 6 alamat berikutnya. Jika itu tidak berhasil, maka Anda memiliki jaringan aktif yang besar dan perlu mencoba setiap alamat IP di subnet, atau ada masalah jaringan tingkat yang lebih rendah seperti tidak ada rute ke host atau dua host dengan alamat MAC yang sama. Atau mungkin Anda tidak sshdberlari.

Menggunakan konsol adalah cara termudah untuk menyelesaikan masalah ini.

Michael Dillon
sumber
Saya benar-benar berhasil terhubung ke VM saya melalui Xming Server + "virt-viewr" perintah. Saya menemukan tidak ada IP yang ditugaskan untuk tamu saat saya berada di VM. Bagaimana cara membuat DHCP berfungsi? Adakah file XML yang perlu saya ubah?
Xianlin
Halo Michael, apakah Anda pikir Anda dapat membantu saya jika saya memberi Anda akses ke server saya? Saya mencoba DHCP dan Static IP tetapi guest VMs tidak mendapatkan IP, server host saya masih dapat mengakses internet. Terima kasih.
Xianlin
3

Untuk melihat alamat IP VM Anda, jalankan saja:

$ arp -n

Jika arp tidak diinstal pada sistem Anda, cukup instal net-toolspaket.

Alxs
sumber
2

Dimungkinkan untuk terhubung melalui VNC builtin dengan virt-manager, dan Anda melakukan login, cari alamat ip ifconfig eth0. Biasanya eth0, kecuali Anda telah menentukan sebaliknya.

bunga aster
sumber
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 ..:..:..:..:..:..)

Pindai subnet. Parsing output dengan awk untuk mendapatkan baris seperti <IP> <MAC>. Kemudian ambil di dalamnya menggunakan daftar MAC dari VM.

Daftar MAC diperoleh dengan mendaftar semua VM (juga menghapus garis kosong), kemudian melakukan virsh domiflistuntuk masing-masing, dan kemudian mengambil pola yang terlihat seperti MAC.

Sumber:

https://serverfault.com/a/669862/284568

Velkan
sumber
0

Jika Anda memiliki QEMU (emulator VM), buka tombol "i" dan periksa kartu jaringan yang terkait dengan jaringan "Br0". Catat alamat mac NIC. Sekarang Login ke VM Anda -> Buka Terminal -> ketik: "ifconfig" perintah di terminal -> catat alamat IP yang terkait dengan alamat Mac yang telah Anda catat sebelumnya.

Anda dapat masuk ke VM menggunakan Putty atau klien ssh apa pun menggunakan IP yang telah Anda catat di langkah terakhir.

Saurav
sumber
0

Saya punya tamu KVM saya di antarmuka br0 jadi saya pikir itu agak berbeda, tapi di sini adalah dua skrip yang saya buat.

Catatan untuk menggunakan ARP Anda harus terlebih dahulu memiliki MAC di Tabel Arp Anda. Oleh karena itu yang terbaik untuk menggunakan fping untuk melakukan ping cepat seluruh jaringan (memakan waktu sekitar 2 detik). Ini memastikan cache Arp Anda mutakhir.

apt-get install fping
yum install fping

Temukan IP tamu tunggal melalui:

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

Temukan Semua IP Tamu melalui:

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
FreeSoftwareServers
sumber
Saya mengatasi masalah ini pada akhirnya dengan arp-scan. contoh: sudo arp-scan --interface = br0 --localnet --bandwidth = 8192000 --numeric --retry = 1 itu ketika saya ingin aktif mencari. Saya menggunakan addrwatch untuk duduk di latar belakang dan mengumpulkan pemetaan alamat mac / ip untuk saya.
Duke Dougal
0

Saya menulis sebuah get-vm-ipskrip (tersedia di https://github.com/earlruby/create-vm/blob/master/get-vm-ip ) yang menggunakan ini untuk mendapatkan IP:

HOSTNAME=[your vm name]
MAC=$(virsh domiflist $HOSTNAME | awk '{ print $5 }' | tail -2 | head -1)
arp -a | grep $MAC | awk '{ print $2 }' | sed 's/[()]//g'
Earl Ruby
sumber
0
  1. Dapatkan daftar domain Anda dengan virsh list --all

    virsh # list --all
    
    2     webserver_01                   running
    
  2. Dapatkan daftar antarmuka domain Anda menggunakan id domain atau nama virsh domiflist yourDomainId, dan Anda akan melihat MAC ALAMAT dari antarmuka domain.

    virsh # domiflist 2
    
    bridge     br0        virtio      52:54:00:42:be:96
    
  3. Menggunakan nmappemindaian LAN nmap -sn 192.168.1.0/24|grep -i '52:54:00:42:be:96' -B 2Anda, Anda akan mendapatkan ALAMAT IP.

    [root@kvm-master ~]# nmap -sn 192.168.1.0/24|grep -i '52:54:00:42:be:96' -B2 
    
    Nmap scan report for bogon (192.168.1.210)
    Host is up (0.00013s latency).
    MAC Address: 52:54:00:42:BE:96 (QEMU Virtual NIC)
    
Rod Terry
sumber
0

Solusi bagus yang menggunakan agen qemu-guest.

a) Konfigurasikan vm Anda untuk menggunakan qemu-guest agent Pada host: Tambahkan dengan virt-manager saluran "qemu-guest-agent" Sangat mudah. ​​Dalam mesin kasing saya disebut "Debian", dan xml setelah modifikasi akan mirip dengan ini.

 <channel type='unix'>
      <source mode='bind' path='/var/lib/libvirt/qemu/channel/target/domain-3-debian/org.qemu.guest_agent.0'/>
      <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
      <alias name='channel1'/>
      <address type='virtio-serial' controller='0' bus='0' port='2'/>
    </channel>

b) Pada tamu instal qemu-guest-agent dan pastikan sudah dimulai

apt -y install qemu-guest-agent

systemctl status qemu-guest-agent.service
● qemu-guest-agent.service - LSB: QEMU Guest Agent startup script
   Loaded: loaded (/etc/init.d/qemu-guest-agent; generated; vendor preset: enabled)
   Active: active (running) since Sat 2019-01-26 09:35:57 CET; 3s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 1624 ExecStop=/etc/init.d/qemu-guest-agent stop (code=exited, status=0/SUCCESS)
  Process: 1630 ExecStart=/etc/init.d/qemu-guest-agent start (code=exited, status=0/SUCCESS)
    Tasks: 1 (limit: 4915)
   CGroup: /system.slice/qemu-guest-agent.service
           └─1638 /usr/sbin/qemu-ga --daemonize -m virtio-serial -p /dev/virtio-ports/org.qemu.guest_agent.0

c) Akhirnya pipa yang bagus ini akan mengembalikan ip, bukannya NAMEOFVMNIC menempatkan eth0, enp1s0, dll.

virsh domifaddr  --domain yourvmname --source agent|grep -w NAMEOFVMNIC|egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
elbarna
sumber
-1

(Meskipun Anda tampaknya terlalu maju untuk jawaban yang sederhana)

Akan

$ ifconfig

kerja?

David
sumber
juga, hati-hati, jika Anda memiliki contoh duplikat dari mesin yang sama, karena mesin tersebut akan memiliki masalah dengan alamat MAC palsu dll ... ada cara untuk mengeditnya secara manual (dan saya pikir jalankan perintah untuk itu juga)
David
Saya hanya memiliki satu VM "vm1" di host server ubuntu saya dan output perintah "ifconfig" tidak menunjukkan alamat ip yang ditetapkan untuk adapter jaringan "eth0" saya.
Xianlin
ya, Anda tidak memiliki ip ... Apakah Anda mencoba "dhclient eth0" --mungkin perlu sudo
David
Saya mencoba tetapi masih tidak mendapatkan ip dhcp dari server host saya ke VM tamu saya. Server host saya diberi IP tetap dan dapat mengakses internet.
Xianlin
jika Anda ingin ip tidak di jaringan induk, Anda ingin memilih NAT dalam pengaturan vm Anda alih-alih dijembatani.
David