Вопрос или проблема
У меня есть хост гипервизора 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
. Это может вызывать неудобства, особенно если у вас несколько машин, и требуется время для их настройки после каждой перезагрузки.
Совершенно очевидно, что:
-
Сетевые интерфейсы не инициализируются корректно при загрузке. При выполнении команды
ip link
на ВМ мы видим, что интерфейсens18
находится в состоянии "DOWN", что подтверждает отсутствие подключения к сети. -
Подход с использованием
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 или на специализированные форумы для получения дополнительной помощи, так как решение может зависеть от уникальных характеристик вашего окружения.