Как найти IP-адрес Виртуальной машины KVM, что я могу SSH в него?

Это зависит от того, что делает DHCP?

Большинство домашних маршрутизаторов использует dnsmasq, и можно использовать это в качестве локального сервера DNS. Просто необходимо установить dnsmasq для возврата себя как сервер DNS. Затем, необходимо удостовериться, что ПК широковещательно передают имя хоста во время запроса DHCP.

Затем вуаля, необходимо смочь разрешить все локальные машины через сервер DNS/DHCP.

31
17.01.2017, 10:55
14 ответов

Можно работать arp -n видеть что IP Ваша погрузка виртуальной машины. Таким образом Вы не должны входить в гостя vm и тип ifconfig.

Блог ниже имеет больше деталей и включает сценарий жемчуга, который автоматизирует нахождение адреса виртуальной машины.

Подсказка: Найдите IP-адрес виртуальной машины

21
27.01.2020, 19:37
  • 1
    Настолько простой.Отлично.... –  Indika K 10.11.2016, 06:22
  • 2
    Перейдите к xyz веб-странице для ответов, бесполезны, если ссылка понижается, отправьте "полные ответы" –  FreeSoftwareServers 24.02.2018, 10:11

(В то время как Вы кажетесь слишком усовершенствованными для такого простого ответа),

Будет

$ ifconfig

работа?

-1
27.01.2020, 19:37
  • 1
    также, быть осторожным, если у Вас есть дублирующиеся экземпляры той же машины как машина, будет иметь проблемы с поддельным MAC-адресом и т.д.... существуют способы вручную отредактировать это (и я думаю, выполняет команду для того также), –  David 02.03.2012, 05:58
  • 2
    у меня только есть один VM "vm1" на моем хосте сервера человечности и выводе команды "ifconfig", не показывает IP-адреса, присвоенного моему "eth0" сетевому адаптеру. –  Xianlin 02.03.2012, 06:59
  • 3
    да, у Вас нет IP... Вы пробовали "dhclient eth0" - возможно, нуждался бы в sudo –  David 04.03.2012, 01:21
  • 4
    я попробовал только все еще получение dhcp IP от моего хост-сервера до моего гостя VMs. Моему хост-серверу присваивают фиксированный IP, и он может получить доступ к Интернету. –  Xianlin 05.03.2012, 05:22
  • 5
    , если Вы хотите IP не в родительской сети, Вы хотите выбрать NAT в своих vm настройках вместо соединенного мостом. –  David 05.03.2012, 20:57

Если у Вас есть консольный доступ к VM, затем просто выполненному ifconfig -a на госте. В то время как Вы там, проверьте, чтобы удостовериться, что у гостя действительно есть сетевое соединение и что sshd работает.

Если у Вас нет консольного доступа, то возможности являются IP-адресом, был присвоен DHCP. Ищите другую машину, которая также получает присвоение DHCP, возможно, хост-сервер, и затем добавьте 1 к адресу и попробуйте его. На самом деле попробуйте следующие 5 или 6 адресов. Если это не работает, то Вы или имеете большую активную сеть и должны будете попробовать каждый IP-адрес в подсети, или существует проблема сети нижнего уровня как никакой маршрут для хостинга или два хоста с тем же MAC-адресом. Или возможно Вы просто не добрались sshd выполнение.

Используя консоль самый легкий способ решить эту проблему.

4
27.01.2020, 19:37
  • 1
    мне на самом деле удалось соединиться с моим VM через Сервер Xming + "virt-viewr" команда. Я нашел, что нет никакого IP, присвоенного гостю, в то время как я нахожусь в VM. Как сделать работы DHCP? Какой-либо XML-файл я должен измениться? –  Xianlin 02.03.2012, 08:21
  • 2
    Привет Michael, Вы думаете, что можно помочь мне, если я предоставляю Вам доступ к своему серверу? Я попробовал DHCP и Статический IP, но гость, VMs не получают IP, мой хост-сервер все еще, может получить доступ к Интернету все же.спасибо. –  Xianlin 05.03.2012, 05:21

Возможно соединиться через встроенный VNC с virt-manager, и Вы делаете вход в систему tty, находите IP-адрес с ifconfig eth0. Обычно eth0, если Вы не указали иначе.

2
27.01.2020, 19:37

Попробуйте следующее:

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

Вы также можете использовать следующую форму, если знаете MAC-адрес:

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

MAC-адрес можно найти из команды dumpxml.  См. Есть ли способ определить, какой виртуальный интерфейс принадлежит виртуальной машине на узле KVM?

31
27.01.2020, 19:37

Если у вас есть QEMU (эмулятор виртуальной машины), нажмите кнопку «i» и проверьте сетевую карту, связанную с сетью «Br0». Запишите MAC-адрес сетевой карты. Теперь войдите в свою виртуальную машину -> Открыть терминал -> введите в терминале команду "ifconfig" -> запишите IP-адрес, связанный с MAC-адресом, который вы указали ранее.

Вы можете войти в свою виртуальную машину с помощью Putty или любого ssh-клиента, используя IP-адрес, который вы указали на последнем шаге.

0
27.01.2020, 19:37

список для vms:

virsh list

получить MAC vm из имени

virsh domiflist debian8

выполнить сканирование подсети vm с помощью grep (MAC должен быть заглавным)

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

результат

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
27.01.2020, 19:37

Чтобы увидеть IP-адрес виртуальной машины, просто выполните:

$ arp -n

Если arp не установлен в вашей системе, просто установите пакет net-tools.

5
27.01.2020, 19:37

Tengo mis invitados KVM en la interfaz br0, así que creo que es un poco diferente, pero aquí están mis dos scripts que hice.

Nota para usar ARP, primero debe tener el MAC en su tabla Arp. Por lo tanto, es mejor usar fping para hacer un ping rápido de toda la red (, toma como 2 segundos ). Esto asegura que su caché Arp esté actualizada.

apt-get install fping
yum install fping

Encuentre una sola IP de invitado a través de:

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

Encuentre todas las IP de invitados a través de:

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
27.01.2020, 19:37

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

Сканировать подсеть. Проанализируйте вывод с помощью awk, чтобы получить такие строки, как <IP> <MAC>. Затем выполните поиск в них, используя список MAC-адресов виртуальных машин.

Список MAC-адресов получается путем перечисления всех виртуальных машин (, а также удаления пустых строк ), затем выполнения virsh domiflistдля каждой из них, а затем поиска шаблона, похожего на MAC-адрес.

Источники:

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

2
27.01.2020, 19:37

Я написал 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'
2
27.01.2020, 19:37

Хорошее решение, использующее гостевой агент qemu -.

a )Настройте виртуальную машину для использования гостевого агента qemu -На хосте :добавьте с помощью менеджера virt -канал "qemu -guest -agent" Это действительно просто. В моем случае машина называется «Debian», и xml после модификации будет похож на этот.

 <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 )В гостевой системе установите qemu -гостевой -агент и убедитесь, что он запущен

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 )Наконец, этот славный пайп вернет ip, вместо NAMEOFVMNIC поставьте eth0,enp1s0 и т.д..

virsh domifaddr  --domain yourvmname --source agent|grep -w NAMEOFVMNIC|egrep -o '([[:digit:]]{1,3}\.){3}[[:digit:]]{1,3}'
3
27.01.2020, 19:37
  1. Получите список доменов поvirsh list --all

    virsh # list --all
    
    2     webserver_01                   running
    
  2. Получите список интерфейсов вашего домена по идентификатору или имени домена, используя virsh domiflist yourDomainId, и вы увидите MAC-АДРЕС интерфейса домена.

    virsh # domiflist 2
    
    bridge     br0        virtio      52:54:00:42:be:96
    
  3. С помощью nmapпросканируйте вашу локальную сеть по nmap -sn 192.168.1.0/24|grep -i '52:54:00:42:be:96' -B 2, вы получите 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)
    
1
27.01.2020, 19:37

Я думаю, это старый вопрос, но текущие версии virshзначительно упрощают этот вопрос, если вы используете частную сеть с естественным доступом или мостом. У меня есть виртуальная машина с именем steakв (маршрутизируемой )частной сети (AKA "NAT" ). Всего две команды, чтобы узнать, какой IP был назначен встроенным -механизмом :

.
$ 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

У меня также есть другая виртуальная машина (eggs), которая соединена мостом с обычной сетью (, подключенной к мостовому устройству на хосте гипервизора ). Libvirt не присваивает ему адрес; он получает адрес от DHCP-сервера моей сети, который в моем случае также обновляет динамический DNS. Это одна из вероятных возможностей, когда нет выходных данных domifaddдля этой виртуальной машины. Таким образом, вам в основном нужно найти адрес, как и любой другой машине -, найти его в таблице arp, вероятно, проще всего --, что означает ip neighbourсейчас, поскольку arpустарел и больше не присутствует в некоторых дистрибутивах.. К счастью для тех из нас, кто не пишет вещи с дополнительными гласными, вы также можете использовать более короткие варианты, такие как ip neighиip n(илиip neighbor). ; )Ниже я использую domiflist, чтобы найти MAC-адрес (, обратите внимание, что он подключен к br0в столбце «источник» ), а затем нахожу его в таблице 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
12
27.01.2020, 19:37

Теги

Похожие вопросы