Виртуальные машины Linux неожиданно загружаются без сетевой подключения – нужно вручную выполнять ifup для восстановления после каждой загрузки?

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

У меня есть хост гипервизора Proxmox 8.3.2, на котором работают несколько виртуальных машин с Linux.

Недавно я выбрал ядра Proxmox 6.11 (по умолчанию ядра 6.8).

В это время я заметил, что после перезагрузки виртуальные машины загружаются без сетевого подключения – нужно вручную переключать интерфейс с помощью ifup, чтобы получить сетевое подключение. Сначала я приписал это обновлению с ядра 6.8 на 6.11 – однако даже при загрузке обратно в ядра 6.8 проблема сохраняется. Теперь я действительно в замешательстве. А на некоторых хостах этот обходной путь даже не работает.

На всякий случай – вот вывод ip link на хосте гипервизора Proxmox при загрузке в 6.8:

https://gist.github.com/victorhooi/582ea69a1c8ee9215e45bb805ff590e5

А вот вывод ip link при загрузке в 6.11 на хосте гипервизора:

https://gist.github.com/victorhooi/4385bbeff0eb6489c85637a61df9aad4

Насколько я могу судить, единственное различие – это MAC-адреса между ними.

У меня несколько виртуальных машин Debian, а также виртуальная машина ArubaOS (которая, насколько я знаю, является своей собственной версией Linux) – они загружаются без подключения, но если сделать ручной ifup, они, похоже, успешно получают DHCP-лицензию…

Вот вывод ip link из одной из виртуальных машин:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens18: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether bc:24:11:bd:a1:f8 brd ff:ff:ff:ff:ff:ff
    altname enp6s18
    altname enxbc2411bda1f8
3: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN mode DEFAULT group default qlen 500
    link/none

Если я выполню sudo ifupdown ens18, он ответит ifup: unknown interface ens18. Однако sudo ifup end6s18 работает – это успешно получает DHCP-лицензию.

Вот вывод dmesg из той же виртуальной машины:

https://gist.github.com/victorhooi/f66285d0ed3c94e6574f547549e9a2a1

Там есть строка:

[    1.100303] virtio_net virtio2 ens18: renamed from eth0

Но я не думаю, что это проблема, верно? (По информации из Google – это изменение было в системах 197, которые были в 2013 году – https://lwn.net/Articles/531850/).

Вот вывод /etc/network/interfaces из этой виртуальной машины:

$ cat /etc/network/interfaces
# Этот файл описывает сетевые интерфейсы, доступные на вашей системе
# и как их активировать. Для получения дополнительной информации смотрите interfaces(5).

source /etc/network/interfaces.d/*

# Сетевой интерфейс обратной петли
auto lo
iface lo inet loopback

# Основной сетевой интерфейс
allow-hotplug enp6s18
iface enp6s18 inet dhcp

У виртуальной машины ArubaOS также нет подключения, что очень запутывает, так как эта система не обновлялась на протяжении нескольких месяцев – из-за чего я думал, что вся эта проблема на уровне Proxmox/гипервизора. Но я не могу это понять…эх.

Существует ли способ выяснить, почему машины загружаются без сетевого подключения? Или попытаться разобраться, что здесь происходит?

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

Проблема, с которой вы столкнулись, связана с отсутствием сетевого подключения у виртуальных машин на хосте Proxmox после перезагрузки. Важно отметить, что данное явление возникло после перехода на ядра версии 6.11 и сохраняется даже при возврате к версии 6.8.

Описание проблемы

Вы наблюдаете, что после перезагрузки виртуальные машины (ВМ) на Proxmox не имеют сетевого подключения, и для его восстановления требуется вручную использовать команду ifup. Это может вызывать неудобства, особенно если у вас несколько машин, и требуется время для их настройки после каждой перезагрузки.

Совершенно очевидно, что:

  1. Сетевые интерфейсы не инициализируются корректно при загрузке. При выполнении команды ip link на ВМ мы видим, что интерфейс ens18 находится в состоянии "DOWN", что подтверждает отсутствие подключения к сети.

  2. Подход с использованием ifup работает для интерфейса enp6s18, но не для ens18. Това может быть связано с особенностями конфигурации сетевых интерфейсов в Debian, поскольку allow-hotplug enp6s18 указывает системе подключать интерфейс при его обнаружении.

Возможные причины и решения

1. Проблемы с конфигурацией сети

Проверьте файл /etc/network/interfaces:

# Авто-подключение интерфейса
allow-hotplug enp6s18
iface enp6s18 inet dhcp

Убедитесь, что имя интерфейса соответствует тому, что система регистрирует. Ваша система, похоже, автоматически переименовывает интерфейс с eth0 на ens18, но конфигурация в /etc/network/interfaces ссылается на enp6s18. Попробуйте использовать ens18 в конфигурационном файле, чтобы удостовериться, что система находит правильный интерфейс.

Измените на:

allow-hotplug ens18
iface ens18 inet dhcp

2. Проверка драйверов VirtIO

Поскольку вы используете VirtIO, убедитесь, что соответствующие драйверы правильно установлены и загружены. Это можно сделать через команду:

lsmod | grep virtio

Если оборудование настроено правильно, вы должны увидеть загруженные модули.

3. Журнал загрузки системы

Изучение выходных данных команд, таких как dmesg, может помочь определить, правильно ли инициализируются сетевые интерфейсы при загрузке. Обратите внимание на строки, относящиеся к сетевым интерфейсам, их инициализации и возможным сообщениям об ошибках.

4. Влияние обновления

Так как вы упомянули, что проблема появилась после обновления ядра, желательно откатиться на более раннюю версию, где всё работало стабильно, чтобы определить, является ли это обновление причиной проблемы.

Диагностические тесты

1. Проверка конфигураций Proxmox

Убедитесь, что конфигурация сети на уровне хоста Proxmox корректна и не содержит ошибок. Проверьте файл /etc/network/interfaces на Proxmox, чтобы подтвердить, что виртуальные интерфейсы настроены правильно для вашего окружения.

2. Логи гипервизора

Осмотрите логи, связанные с сетевыми интерфейсами Proxmox. Это можно сделать с помощью команды:

journalctl -xe

или

less /var/log/syslog

Ищите все сообщения, относящиеся к загрузке сетевых интерфейсов и DHCP.

Заключение

Ошибки в конфигурации сети виртуальных машин могут быть устранены путём корректировки параметров в /etc/network/interfaces и проверки работы драйверов. Следует внимательно изучить логи загрузки, чтобы выявить возможные проблемы на уровне гипервизора.

Если по-прежнему нет успеха, рекомендуется обратиться к документации Proxmox или на специализированные форумы для получения дополнительной помощи, так как решение может зависеть от уникальных характеристик вашего окружения.

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

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