Знайдіть IP VM під керуванням KVM


3

Як я можу знайти IP VM на KVM (за допомогою Nmap)? Якщо ні, чи є якісь функції в Libvirt для цього?


Відповідь: Після дня спробувати nmap / ifconfig / iptables, я вирішив натрапити на це - rwmj.wordpress.com/2010/10/26/… . епічна посилання.
П Рамеш

Дві вірш команди: domifaddr і net-dhcp-
leases

Відповіді:


4

Швидкий і брудний приклад для KVM на Centos 63 x86_64. Короткий пінг у фоновому режимі на всі можливі IP-адреси, які можуть мати VM в цьому сегменті

for i in {1..249}
 do
  ping -c 1 -n -q -r  -t 1 -s 1  -W 1   192.168.100.$i > /dev/null &
done

Витягніть імена та MAC адреси VM за допомогою virsh та витягніть IP з таблиці ARP

for name in `virsh list | grep running | awk '{ print $2 }'`
do
  printf  "\n$name\n "
  arp -e | grep "`virsh dumpxml  $name | grep "mac address"|sed "s/.*'\(.*\)'.*/\1/g"`" | 
  awk '{ printf  $1 ;  printf  " "  ; printf  $3 }'
done

2

Після довгих годин забруднення рук я спробував натрапити на цю епічну посилання.

  1. Отримайте MAC-адресу VM з конфігураційного файлу VM (оскільки я використовую KVM, я запитав .xml-файл для MAC-адреси).
  2. Потім використовуйте arp -a і отримуйте всі MAC-адреси та Адреса інтерфейсів і зберігайте їх у файлі
  3. Запитайте файл на MAC-адресу VM з кроку 1.

Чи можете ви описати, як це вирішило вашу проблему? Що ти точно робив?
Саймон Шихан

@Simon Sheehan- Ось як я це зробив - 1. отримайте MAC-адресу VM з конфігураційного файлу VM (оскільки я використовую KVM, я запитав .xml-файл на MAC-адресу). 2. Потім використовуйте arp -a і отримуйте всі MAC-адреси та Адреса інтерфейсів і зберігайте їх у файлі 3.запитайте файл для MAC-адреси VM з кроку 1.
P Ramesh

Чудово, я додав це до вашої відповіді
Саймон Шиган

1

Я написав сценарій bash, щоб це зробити, але також фільтрував машини для машин із назвою "рій" у них. Ви можете видалити фільтр або змінити його за потребою. (видалити | grep "swarm") Ви можете використовувати це як повний сценарій або скопіювати один вкладиш з нього:

#!/usr/bin/env bash
# we make assumption that the VM's we want have the word swarm in their name.  Edit for different name or to get all unfiltered names
for i in $(virsh list | grep "swarm" | awk '{print $2;}' ); do virsh domifaddr $i | sed 3q | sed '$!d' |awk '{print $4}'  ; done;

Складовими частинами є команди virsh, virsh listщоб отримати список усіх VM, а потім у циклі for для виклику domifaddr <VM NAME>отримати ip addr його. Все інше - відфільтрувати текст лише до IP-адреси по одному на рядок. Я написав / запустив це на сервері Ubuntu KVM 15.10


0

Використовуючи команду virt-cat, ви можете запитувати всі файли в VM. Наприклад, файл оренди dhcp:

virt-cat -d your_domain /var/lib/dhcp/dhclient.eth0.leases


0

Починаючи з qemu-kvmі --nographicопцію, ви можете використовувати ctrl-a cдля отримання монітора qemu (якусь оболонку для контролю та управління ВМ).

Команда info networkдасть інформацію про мережеве з'єднання, включаючи MAC-адресу. Команда info usernetпоказує інформацію про місток: наприклад, як порт гостя відображається на порт хосту. Ця інформація часто включає гостьовий ip.

Приклад

Запустіть vm з переадресації деяких портів tcp:

qemu-kvm -cpu host -m 1024 -hda ~/myvm.qcow -net user,hostfwd=tcp::10022-:22 -net nic -nographic

після ctrl-a cкоманд info networkі info usernetдай

(qemu) info network
hub 0
 \ hub0port1: e1000.0: index=0,type=nic,model=e1000,macaddr=58:44:00:22:11:
 \ hub0port0: user.0: index=0,type=user,net=10.0.2.0,restrict=off
(qemu) info usernet
VLAN 0 (user.0):
  Protocol[State]    FD  Source Address  Port   Dest. Address  Port RecvQ S
  TCP[HOST_FORWARD]  13               * 10022       10.0.2.15    22     0  

Довідка: QEMU-doc на wiki.qemu.org.


0

Я написав get-vm-ipсценарій (який ви можете завантажити з https://github.com/earlruby/create-vm/blob/master/get-vm-ip ), який використовує це для отримання 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'

Команда virsh отримує MAC-адресу, останній рядок знаходить IP-адресу за допомогою arp.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.