Интерфейс не переименовался: имя занято другим устройством
Имена сетевых интерфейсов назначаются подсистемой устройств при загрузке. Если целевое имя уже занято, переименование отказывает, и интерфейс остаётся с временным именем — а описание сети, ссылающееся на ожидаемое имя, не применяется.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Целевое имя уже занято другим устройством
Два правила назначают одно имя, либо имя занял интерфейс, появившийся раньше.
-
Правило ссылается на адрес устройства, который изменился
После замены платы или клонирования виртуальной машины адрес устройства другой, и правило не совпадает.
-
Описание сети ссылается на несуществующее имя
Интерфейс сохранил временное имя, а описание ждёт целевое. Настройки не применяются, сети нет.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Что подсистема устройств сделала с именами интерфейсов.
journalctl -b --no-pager | grep -iE "Could not rename|renamed from" | tailФактические имена и состояния интерфейсов.
ip -brief linkСвойства интерфейса: по ним составляются правила.
udevadm info /sys/class/net/eth0 2>/dev/null | head -15Решение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Два правила назначают одно имя, либо имя занял интерфейс, появившийся раньше.
- Как проверить
-
Посмотрите сообщения подсистемы устройств и имена интерфейсов.
journalctl -b --no-pager | grep -iE "Could not rename|renamed" | tail -5 ip -brief link
- Как исправить
- Сделайте правила однозначными: привязывайте имя к адресу устройства, а не к его положению. Совпадающие правила — частая причина плавающих имён.
- Почему происходит
- После замены платы или клонирования виртуальной машины адрес устройства другой, и правило не совпадает.
- Как проверить
-
Посмотрите правило и фактические адреса устройств.
sudo cat /etc/udev/rules.d/70-persistent-net.rules 2>/dev/null | head ip -brief link | head; cat /sys/class/net/*/address 2>/dev/null
- Как исправить
- Обновите правило под новый адрес устройства или удалите его: современные предсказуемые имена обычно не требуют своих правил.
- Почему происходит
- Интерфейс сохранил временное имя, а описание ждёт целевое. Настройки не применяются, сети нет.
- Как проверить
-
Сравните имена в описании и фактические.
sudo grep -rhE "^\s*(Name|name)" /etc/systemd/network/ /etc/netplan/ 2>/dev/null | head ip -brief link
- Как исправить
- Приведите описание к фактическим именам или добейтесь верного переименования. Второе надёжнее: имя должно быть предсказуемым.
Пример вывода
Целевое имя занято, интерфейс сохранил временное. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
systemd-udevd[520]: eth0: Could not rename interface '2' from 'eth0' to 'eth1': File exists
systemd-networkd[600]: rename2: Link UP
systemd-networkd-wait-online[620]: Timeout occurred while waiting for network connectivity.
Связанные ошибки
- Интерфейс не настроен: systemd-networkd не применил описание Сеть не поднимается: файл описания не подхвачен, интерфейс под управлением другой службы, неверное совпадение по имени.
- systemd-udevd: timeout killing worker и медленная загрузка Обработка устройств висит: рабочий процесс udev не укладывается в таймаут. Разбор для дисков и сетевых карт.
- File exists при создании файла или сокета Ошибка 17: объект уже существует. Разбор для сокетов, файлов блокировки и каталогов службы.
- Cannot assign requested address при привязке Ошибка 99 при привязке: адрес не принадлежит машине или ещё не поднят. Разбор с network-online.target и ip_nonlocal_bind.
- Temporary failure in name resolution в журнале службы Служба не может разрешить имя: не готова сеть, нет сервера имён, мешает изоляция. Разбор при загрузке и в работе.
- nginx: [emerg] host not found in upstream nginx не запускается: не разрешается имя узла из upstream или proxy_pass. Разбор порядка запуска и работы с именами.
- Адрес не получен: нет ответа от сервера DHCP Интерфейс поднят, адреса нет: нет ответов от сервера, не та подсеть, фильтрация в сети.
- A start job is running: загрузка висит на одной службе Загрузка останавливается с обратным отсчётом: служба не укладывается в таймаут. Как найти виновника и не ждать.
Источники
-
systemd.link(5)
Правила назначения имён сетевым интерфейсам. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено двумя правилами, назначающими одно имя.