it-swarm-eu.dev

Jak najít IP adresu virtuálního počítače KVM), do kterého mohu SSH vložit?

Postupuji podle tohoto průvodce ( Virtualization With KVM Na Ubuntu 11.1 ), abych nastavil můj KVM (Virtual Machines Software)) na mém Ubuntu 11.10 Server: Při vytváření VM jsem však nenastavil IP adresu svého virtuálního počítače, místo použití:

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

Použil jsem: (z příkazového řádku jsem odstranil "--ip = 192.168.0.101 --gw = 192.168.0.1")

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

Nastavil jsem síťový most podle pokynů průvodce a nové rozhraní VM je připojeno k síťovému mostu.

Předpokládám, že KVM přiřadí moji VM přes DHCP, ale nemám informace o IP adrese mého nového VM, kde najdu IP adresu VM) a SSH novému VM? Díky.

[Poznámky: Podařilo se mi přihlásit se VM bez znalosti IP adresy VM. Pomocí " Xming + SSH s X Graphic Forwarding " Ale neexistuje DHCP ip adresa přiřazená mému VM, kromě výše uvedené otázky, mám zde ještě další otázku: Jak povolit DCHP na mém VM, takže když se pomocí Xmingu přihlašuji pomocí „virt viewer“, můžu na nejméně vidět moje IP adresa je tam.]

31
Xianlin

Můžete spustit arp -n a zjistěte, jakou adresu IP váš virtuální stroj vyzvedne. Tímto způsobem se nemusíte přihlašovat hosta vm a psát ifconfig.

Níže uvedený blog obsahuje více podrobností a obsahuje skript Perl, který automatizuje vyhledávání adresy virtuálního počítače.

Tip: Najděte IP adresu virtuálního počítače

21
chenwj

Zkuste to:

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

Pokud znáte adresu MAC, můžete použít také následující formulář:

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

MAC adresu lze najít z příkazu dumpxml. Viz Existuje způsob, jak určit, které virtuální rozhraní patří k virtuálnímu počítači v hostiteli kvm?

31
Rahul

Myslím, že se jedná o starou otázku, ale současné verze virsh to výrazně usnadňují, pokud používáte nativní nebo přemostěnou privátní síť. Mám virtuální počítač s názvem steak v (směrované) soukromé síti (AKA „NAT“). Jsou to pouze dva příkazy, aby se zjistilo, jaká IP je přidělena vestavěným mechanismem:

$ 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

Mám také další VM (eggs), který je přemostěn do běžné sítě (připojené k můstkovému zařízení na hostitele hypervisoru). Libvirt mu nepřiděluje adresu; získá adresu ze serveru DHCP v mé síti, který v mém případě také aktualizuje dynamické DNS. To je jedna z pravděpodobných možností, když pro tento VM neexistuje žádný výstup z domifadd. Takže v podstatě musíte najít adresu, jako je jakákoli jiný stroj - jeho nalezení v tabulce arp je pravděpodobně nejjednodušší - což znamená ip neighbour nyní, protože arp je zastaralé a u některých distribucí již není přítomno. Naštěstí pro ty z nás, kteří neříkají věci extra vouwels, můžete také použít kratší verze, jako ip neigh a ip n (nebo ip neighbor). ;) Níže používám domiflist k nalezení MAC adresy (mějte na paměti, že je připojen k br0 ve sloupci „source“) a najděte to v tabulce 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
6
dannysauer

seznam pro vms:

virsh list

získat vm MAC od jména

virsh domiflist debian8

proveďte skenování své podsítě vm pomocí grep (MAC musí být velká písmena)

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

výsledek

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

Pokud máte konzolový přístup k VM), stačí spustit ifconfig -a na hosta. Když jste tam, zkontrolujte, zda je host připojen k síti a zda je spuštěn sshd.

Pokud nemáte přístup z konzoly, je pravděpodobné, že adresa IP byla přidělena DHCP. Vyhledejte další počítač, který také získává přiřazení DHCP, možná hostitelský server, poté přidejte 1 na adresu a zkuste to. Ve skutečnosti zkuste následujících 5 nebo 6 adres. Pokud to nefunguje, máte buď velkou aktivní síť a budete muset vyzkoušet každou IP adresu v podsíti, nebo je problém se sítí nižší úrovně, jako je žádná cesta k hostiteli nebo dva hostitelé se stejnou adresou MAC. Nebo jste prostě nechtěli běžet sshd.

Použití konzoly je nejjednodušší způsob, jak tento problém vyřešit.

4
Michael Dillon

Chcete-li zobrazit IP adresu vašeho VM/s, stačí spustit:

$ arp -n

Pokud není ve vašem systému arp nainstalován, stačí nainstalovat net-tools balíček.

3
Alxs

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

Skenování podsítě. Analyzujte výstup s awk a získejte řádky jako <IP> <MAC>. Pak se do nich vrhněte pomocí seznamu MAC počítačů VM.

Seznam MACs je získán vypsáním všech virtuálních počítačů (také odstraněním prázdných řádků) a následným provedením virsh domiflist pro každou z nich a pak touží po vzoru, který vypadá jako MAC.

Zdroje:

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

2
Velkan

Je možné se připojit pomocí vestavěné VNC pomocí virt-manager a ty se přihlásíš, najdi IP adresu pomocí ifconfig eth0. Normálně eth0, pokud není uvedeno jinak.

2
daisy

Pěkné řešení, které využívá agenta qemu-guest.

a) Nakonfigurujte svůj vm tak, aby používal agenta qemu-guest na hostiteli: Přidejte s virt-managerem kanál „qemu-guest-agent“ je opravdu snadný. V mém případě se stroj nazývá „Debian“ a xml po úpravě bude podobné jako tento.

 <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) Na hosta nainstalujte qemu-guest-agent a zkontrolujte, zda je spuštěn

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) Nakonec tento pěkný kanál vrátí ip, namísto NAMEOFVMNIC dal eth0, enp1s0 atd.

virsh domifaddr  --domain yourvmname --source agent|grep -w NAMEOFVMNIC|egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
1
elbarna
  1. Získejte svůj seznam domén podle virsh list --all

    virsh # list --all
    
    2     webserver_01                   running
    
  2. Získejte seznam rozhraní vaší domény podle jména nebo jména domény pomocí virsh domiflist yourDomainId a uvidíte MAC ADRESU rozhraní domény.

    virsh # domiflist 2
    
    bridge     br0        virtio      52:54:00:42:be:96
    
  3. Pomocí nmap prohledejte vaši LAN podle nmap -sn 192.168.1.0/24|grep -i '52:54:00:42:be:96' -B 2, dostanete IP ADRESU.

    [[email protected] ~]# 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
lupguo

Na rozhraní br0 mám své KVM) hosty, takže si myslím, že je to trochu jiné, ale tady jsou moje dva skripty, které jsem vytvořil.

Poznámka: Chcete-li používat ARP, musíte mít v tabulce Arp nejprve MAC. Proto je nejlepší použít fping pro rychlé ping celé sítě (trvá asi 2 sekundy). Tím je zajištěno, že mezipaměť Arp je aktuální.

apt-get install fping
yum install fping

Najděte jedinou IP hosta prostřednictvím:

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

Najít všechny IP hosta prostřednictvím:

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
0

Pokud máte QEMU (emulátor VM), přejděte na tlačítko „i“ a zkontrolujte síťovou kartu spojenou se sítí „Br0“. Poznamenejte si mac adresu NIC. Nyní se přihlaste ke svému VM -> Otevřít terminál -> zadejte: "ifconfig" příkaz v terminálu -> poznamenejte si IP adresu spojenou s Mac adresou, kterou jste si poznamenali dříve.

Můžete se přihlásit k vašemu VM) pomocí PuTTY nebo jakéhokoli ssh klienta pomocí IP, které jste si poznamenali v posledním kroku.

0
saurav

Napsal jsem get-vm-ip skript (k dispozici na https://github.com/earlruby/create-vm/blob/master/get-vm-ip ), který jej používá k získání 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'
0
Earl Ruby