Гостевая система Linux на KVM не может получить сетевой адрес.

Вопрос или проблема

Я использую libvirt-manager для управления своими виртуальными машинами. Я создаю новую виртуальную машину и виртуальную сеть default, которая использует NAT.

virsh net-edit default возвращает мне:

<network>
  <name>default</name>
  <uuid>ec2b5979-dd0c-43db-ab16-99f2e48ef0dd</uuid>
  <forward mode="nat"/>
  <bridge name="virbr0" stp='on' delay='0'/>
  <mac address="52:54:00:0e:b1:4f"/>
  <domain name="default"/>
  <ip address="192.168.110.1" netmask='255.255.255.0'>
    <dhcp>
      <range start="192.168.110.128" end='192.168.110.254'/>
    </dhcp>
  </ip>
</network>

Я настроил своего гостя на Linux для использования этой сети, и устройство настроено на rtl8139. После того, как я запустил виртуальную машину, она видит устройство, но не может получить сетевой адрес.

brctl show показывает мне:

имя моста     id моста             STP включен     интерфейсы
virbr0          8000.5254000eb14f       да             virbr0-nic

ip link show показывает мне:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue состояние UNKNOWN mode DEFAULT group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast состояние UP mode DORMANT group default qlen 1000
    link/ether c8:ff:28:78:44:01 brd ff:ff:ff:ff:ff:ff
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue состояние DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:0e:b1:4f brd ff:ff:ff:ff:ff:ff
4: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 состояние DOWN mode DEFAULT group default qlen 1000
    link/ether 52:54:00:0e:b1:4f brd ff:ff:ff:ff:ff:ff

Одна странная вещь, которую я обнаружил, заключается в том, что на странице «Подробности подключения» в разделе “Сетевые интерфейсы” virbr0 отображается как неактивный, и я не могу его активировать. Попытка активировать его дает мне:

libvirtError: эта функция не поддерживается драйвером подключения: virInterfaceCreate

Если вы ожидаете увидеть virbr0-nic с IP-адресом, вы ошибаетесь – у него не будет адреса на хосте.

Вам нужно войти в гостевую систему и установить там IP или DHCP, сетевой интерфейс гостя получит IP-адрес из диапазона сети по умолчанию, если вы выберете DHCP, и адрес будет виден внутри гостя, а не с хоста.

Для меня я обнаружил, что перезагрузка интерфейса внутри гостевой ОС помогла:

ifdown ens3
ifup ens3

Ответ или решение

Когда виртуальная машина (VM) на базе KVM не может получить сетевой адрес, это может вызывать затруднения и требовать внимательного разбора конфигурации сети. Давайте рассмотрим основные шаги для диагностики и устранения этой проблемы.

1. Проверка конфигурации виртуальной сети

Вы создали виртуальную сеть с именем default, использующую NAT. Ваша конфигурация выглядит следующим образом:

<network>
  <name>default</name>
  <uuid>ec2b5979-dd0c-43db-ab16-99f2e48ef0dd</uuid>
  <forward mode="nat"/>
  <bridge name="virbr0" stp='on' delay='0'/>
  <mac address="52:54:00:0e:b1:4f"/>
  <domain name="default"/>
  <ip address="192.168.110.1" netmask='255.255.255.0'>
    <dhcp>
      <range start="192.168.110.128" end='192.168.110.254'/>
    </dhcp>
  </ip>
</network>

Эта конфигурация предполагает, что DHCP-сервер будет выдавать IP-адреса в диапазоне от 192.168.110.128 до 192.168.110.254. Убедитесь, что DHCP-сервер действительно запущен и настроен правильно. Если все настроено верно, следующий шаг — это проверка конфигурации сетевой карты гостевой ОС.

2. Проверка конфигурации сетевой карты в гостевой ОС

Ваш гость настроен на использование сетевой карты rtl8139. Убедитесь, что в настройках сети внутри гостя выбрана конфигурация DHCP. Для этого нужно проверить файл конфигурации сети, который может находиться в /etc/network/interfaces (для Debian/Ubuntu) или /etc/sysconfig/network-scripts/ifcfg-<interface> (для CentOS/RHEL).

Если в системе активирован DHCP-клиент, то выполняйте следующие команды для перезапуска сетевого интерфейса:

ifdown ens3
ifup ens3

Убедитесь, что у вас установлен соответствующий сетевой пакет, например, dhclient, для получения IP-адреса по DHCP.

3. Проверка состояния виртуального интерфейса

Команда ip link show показала, что интерфейс virbr0 находится в состоянии DOWN. Это может означать, что интерфейс виртуальной сети не активирован, и это может быть причиной проблемы с получением IP-адреса. Вы можете попробовать перезапустить виртуальный интерфейс с помощью команды:

sudo virsh net-start default

Однако, согласно вашему описанию, вы столкнулись с ошибками при попытке активировать интерфейс через графический интерфейс libvirt. Это может быть связано с ограничениями разрешений или настройками SELinux. Убедитесь, что у вас есть достаточные права для работы с сетью.

4. Устранение неполадок

Если после всех вышеописанных шагов проблема с получением IP-адреса не решена, попробуйте следующие подходы:

  • Перезапуск сетевых служб: Иногда поможет перезапуск служб, отвечающих за DHCP и сети.

  • Проверка логов: Просмотрите логи системных сервисов (например, syslog или messages) на наличие ошибок, связанных с сетевым интерфейсом.

  • Проверка на наличие конфликтующих настроек: Иногда могут конфликтовать настройки iptables или firewalld, предотвратив получение адресов DHCP.

Заключение

Следуя этим шагам, вы сможете провести диагностику и устранение неполадок, связанных с получением сетевого адреса для вашей виртуальной машины KVM. Убедитесь, что все настройки выполнены корректно и что гостевая ОС способна правильно взаимодействовать с DHCP-сервером. Если у вас возникли дополнительные вопрос или необходима дальнейшая помощь, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...