SSH bulabildiğim bir KVM Sanal Makinenin IP adresini nasıl bulabilirim?


30

Ubuntu 11.10 Sunucumda KVM'yi (Sanal Makineler Yazılımı) kurmak için bu kılavuzu ( Ubuntu 11.10 KVM ile Sanallaştırma) izledim . Ancak, VM'yi oluşturmak yerine VM'yi oluştururken VM adresimi ayarlamadım:

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

Kullandım: ("--ip = 192.168.0.101 - gw = 192.168.0.1" komut satırından sildim)

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

Ağ köprüsünü kılavuzda belirtilen şekilde ayarlıyorum ve yeni VM'nin arayüzü ağ köprüsüne bağlı.

KVM'nin VM'mi DHCP üzerinden atayacağını varsayıyorum ancak yeni VM'nin IP adresi hakkında bilgim yok, VM'nin IP adresini ve SSH'sini yeni VM'ye nerede bulabilirim? Teşekkürler.

[Notlar: VM'nin IP adresini bilmeden VM'ye giriş yapmayı başardım. " Xming + SSH ile X Grafik Yönlendirme " Kullanılıyor Ancak VM'ime atanan DHCP ip adresi yok, Yukarıdaki sorunun yanı sıra, burada bir sorum daha var: VM'mde DCHP nasıl etkinleştirilir? virt izleyici "En azından IP adresimin orada olduğunu görebiliyorum.]


Sorunu çözdüm ve çözdüm. / Etc / network / interfaces'de "network" ve "broadcast" bilgilerini sildim ve DHCP misafir VM'lerimde çalıştı. Şimdi Misafir VM'ime girebilirim. Sanırım "ağ XXX.XXX.XXX.XXX" veya "yayın XXX.XXX.XXX.XXX" yanlış. kılavuz bu tür kurulum için hala iyi çalışıyor, sadece kendi ağ ortamınızı kurarken dikkatli olun. Problem çözüldü!!!
Xianlin

1
libvirt'in şimdi iki komutu var: domifaddr ve net-dhcp-leasingleri
Nehal J Wani

Lütfen bu bağlantıya bakın , bir cevap bulacaksınız:

Yanıtlar:


20

arp -nSanal makinenizin hangi IP'yi aldığını görmek için koşabilirsiniz . Bu şekilde misafir vm giriş yapıp yazmak zorunda değilsiniz ifconfig.

Aşağıdaki blogda daha fazla ayrıntı var ve bir sanal makinenin adresini bulmayı otomatikleştiren bir perl betiği içeriyor.

İpucu: Sanal makinenin IP adresini bulun


Çok basit. Harika ....
Indika K 10:16

1
Bağlantılar kesilirse cevaplar için xyz web sayfasına gitme, lütfen "tam cevaplar" gönderin
FreeSoftwareServers

31

Bunu dene:

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

MAC adresini biliyorsanız aşağıdaki formu da kullanabilirsiniz:

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

MAC adresini dumpxml komutundan bulabilirsiniz. Bkz. Kvm sunucusundaki hangi sanal arabirimin sanal bir makineye ait olduğunu belirlemenin bir yolu var mı?


5
Bu doğru cevap. Herhangi bir hack olmadan çalışır. Çok teşekkürler.
chmac

1
"Virsh net-list" olmalı ... "net" ve "list" arasında boşluk bırakılmamalıdır. Aksi takdirde, bu mükemmel çalışıyor.
Dave Hein,

@DaveHein Düzeltdiğiniz için teşekkürler. Cevap güncellendi.
Rahul,

Boş sonuçlar alıyorsanız, ile virsh çalıştırmayı deneyinsudo
Freedom_Ben

6

Sanırım bu eski bir soru, ama virsheğer nat ya da köprülü bir özel ağ kullanıyorsanız, bu sürümleri güncelleştirmek çok daha kolay. steak(Yönlendirilmiş) özel bir ağda (AKA "NAT") adlı bir sanal makinem var. Yerleşik mekanizma tarafından neyin atandığını bulmak sadece iki komuttur:

$ 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

Ayrıca eggsnormal ağa köprülenmiş (hiper yönetici ana bilgisayarındaki bir köprü cihazına bağlı) başka bir VM ( ) de sahibim . Libvirt ona bir adres atamaz; ağımın DHCP sunucusundan bir adres alır, bu da benim durumumda dinamik DNS'i günceller. Bu domifaddVM için çıktı olmadığında olası bir olasılık . Dolayısıyla, adresi başka bir makine gibi bulmanız gerekir - arp tablosunda bulmak muhtemelen en kolay olanıdır - bu, ip neighbourartık arpkullanımdan kaldırıldığı ve artık bazı dağıtımlarda bulunmadığı anlamına gelir . Neyse ki, extrae vouwels ile bir şeyleri hecelemeyen bizler için, ip neighve ip n(veya ip neighbor) gibi daha kısa versiyonları da kullanabilirsiniz . ;) Aşağıda domiflistMAC adresini bulmak için kullanıyorum (bağlı olduğunu unutmayın.br0 "kaynak" sütununda) ve arp tablosunda bunu bulun.

$ 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

5

vms için liste:

virsh list

adından vm MAC al

virsh domiflist debian8

vm alt ağınızı grep ile taramayı yapın (MAC büyük harf gerekir)

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

sonuç

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)

4

Sanal makineye konsol erişiminiz varsa, sadece ifconfig -akonuğu çalıştırın . Siz oradayken, konuğun ağ bağlantısının olduğundan ve sshdçalıştığından emin olun .

Konsol erişiminiz yoksa, şansınız DHCP tarafından atanan IP adresleridir. DHCP ataması yapan başka bir makineye, belki de ana sunucuya bakın ve adrese 1 ekleyin ve deneyin. Aslında, bir sonraki 5 veya 6 adresi deneyin. Bu işe yaramazsa, o zaman büyük bir aktif ağa sahip olursunuz ve alt ağdaki her IP adresini denemeniz gerekir ya da aynı MAC adresine sahip iki ana bilgisayara ya da ana bilgisayara giden bir yol gibi daha düşük düzeyde bir ağ sorunu olmaz. Ya da belki sshdkaçmadın.

Konsolu kullanmak bu sorunu çözmenin en kolay yoludur.


Sanal makineme Xming Server + "virt-viewr" komutu ile bağlanmayı gerçekten başardım. VM'deyken konuğa atanmış IP olmadığını buldum. DHCP nasıl çalışır? Değiştirmem gereken herhangi bir XML dosyası var mı?
Xianlin

Merhaba Michael, eğer sunucuma erişebilirsem bana yardım edermisin? DHCP ve Statik IP denedim ancak konuk VM'ler IP alamıyorlar, ana bilgisayar sunucum yine de internete erişebiliyor. Teşekkürler.
Xianlin

3

VM'nizin IP adresini görmek için çalıştırın:

$ arp -n

Arp sisteminizde yüklü değilse sadece net-toolspaketi yükleyin .


2

VNC ile yerleşik olarak bağlanmak mümkündür virt-manager, ve tty giriş yaparak ip adresini bulabilirsiniz ifconfig eth0. Normal olarak eth0, aksi belirtilmedikçe.


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 ..:..:..:..:..:..)

Alt ağı tara. Gibi satırları almak için çıktıyı awk ile ayrıştırın <IP> <MAC>. Ardından, VM'lerin MAC'lerinin bir listesini kullanarak içlerine geçin.

MAC'lerin listesi, tüm VM'lerin listelenmesi (ayrıca boş satırların çıkarılması), daha sonra virsh domiflistbunların her birinin yapılması ve ardından bir MAC'ye benzeyen bir modelin izlenmesi ile elde edilir.

Kaynaklar:

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


0

QEMU'nuz (VM emülatörü) varsa, "i" düğmesine gidin ve "Br0" ağı ile ilişkili ağ kartını kontrol edin. NIC'in mac adresini not alın. Şimdi VM'nize giriş yapın -> Terminali açın -> yazın: terminaldeki "ifconfig" komutu -> daha önce not ettiğiniz Mac adresiyle ilişkili IP adresini not edin.

Son adımda not ettiğiniz IP’yi kullanarak Putty’yi veya herhangi bir ssh istemcisini kullanarak VM’nize giriş yapabilirsiniz.


0

KVM misafirlerim br0 arabiriminde var bu yüzden biraz farklı olduğunu düşünüyorum, ama işte yaptığım iki senaryo.

ARP kullanmak için öncelikle Arp Tablonuzda MAC olması gerekir. Tüm ağda hızlı bir ping atmak için kullanmak en iyisidir (2 saniye kadar sürer). Bu Arp önbelleğinizin güncel olduğundan emin olmanızı sağlar.

apt-get install fping
yum install fping

Şununla tek bir misafir IP'si bul:

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

Tüm Misafir IP'lerini Şununla bul:

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

Arp taramasıyla sonunda bu problemi çözdüm. örnek: sudo arp-scan --interface = br0 --localnet --bandwidth = 8192000 --numeric --retry = 1 aktif olarak arama yapmak istediğimde. Arka planda oturmak için addrwatch kullandım ve benim için bir mac / ip adresi eşlemesi oluşturdum.
Duke Dougal


0
  1. Etki alanı listenizi ile alın virsh list --all

    virsh # list --all
    
    2     webserver_01                   running
    
  2. Etki alanı arabirim listenizi kullanarak etki alanı kimliğine veya adına göre alın ve etki alanı arabiriminin virsh domiflist yourDomainIdMAC ADRESİ'ni göreceksiniz.

    virsh # domiflist 2
    
    bridge     br0        virtio      52:54:00:42:be:96
    
  3. Kullanarak nmaptarafından LAN tarama nmap -sn 192.168.1.0/24|grep -i '52:54:00:42:be:96' -B 2, IP ADRESİ alacak.

    [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)
    

0

QEMU-guest aracısını kullanan hoş bir çözüm.

a) vm'nizi qemu-guest agent'ı kullanacak şekilde yapılandırın Ana bilgisayar üzerinde: virt-manager ile "qemu-guest-agent" kanalı ekleyin Çok kolay. bu.

 <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) Misafir kurulumunda qemu-guest-agent’ı kurun ve başladığınızdan emin olun

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) Sonunda bu güzel boru NAMEOFVMNIC eth0, enp1s0 vb.

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

-1

(Böyle basit bir cevap için fazla gelişmiş görünüyorsun)

İrade

$ ifconfig

iş?


ayrıca, aynı makinenin yinelenen örneklerine sahipseniz, makinenin sahte MAC adresi vb. gibi sorunları olacağından, dikkatli olun. Bunu manuel olarak düzenlemenin yolları vardır (ve bunun için bir komut çalıştırmayı düşünüyorum)
David

Ubuntu sunucu ana bilgisayarımda sadece bir VM "vm1" var ve "ifconfig" komut çıktısı "eth0" ağ adaptörüme atanmış ip adresi göstermiyor.
Xianlin

evet, ipin yok ... Denedin "dhclient eth0" - belki sudo gerekebilir
David

Denedim ama yine de ana sunucumdan konuk VM'lerime dhcp ipi alamıyorum. Ana bilgisayar sunucuma sabit bir IP atandı ve internete erişebiliyor.
Xianlin

Ana ağda bir ip istemiyorsanız, vm ayarlarınızda köprülü yerine NAT'ı seçmek istiyorsunuz.
David,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.