- Вопрос или проблема
- Ответ или решение
- Исправление проблемы с запуском сетевых интерфейсов в Ubuntu 16.04.3 LTS
- Шаг 1: Проблемы с Predictable-Network-Interface-Names
- Шаг 2: Убедитесь в правильной конфигурации имени интерфейсов
- Шаг 3: Устранение возможных конфликтов
- Шаг 4: Перезапуск сетевых служб
- Заключение
Вопрос или проблема
У меня Ubuntu 16.04.3 LTS с EVE-NG, работающим сверху. Я столкнулся с известной проблемой с Predictable-Network-Interface-Names и изменил имена интерфейсов на старый стиль, но что-то все еще не так.
Во время загрузки я вижу сообщение “не удалось запустить подъем сетевых интерфейсов”. Затем вот что показывает systemctl:
* networking.service - Подъем сетевых интерфейсов
Загружен: загружен (/lib/systemd/system/networking.service; включен; предустановка производителя: включена)
Drop-In: /run/systemd/generator/networking.service.d
`-50-insserv.conf-$network.conf
Активен: неудачно (Результат: код выхода) с вт 2017-11-14 07:06:04 EST; 20 минут назад
Документы: man:interfaces(5)
Процесс: 677 ExecStart=/sbin/ifup -a --read-environment (код=завершен, статус=1/НЕУДАЧА)
Процесс: 570 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (
Основной PID: 677 (код=завершен, статус=1/НЕУДАЧА)
14 ноя 07:06:03 eve-ng ifup[677]: Ожидание, пока pnet2 станет готовым (MAXWAIT 32 секунды).
14 ноя 07:06:04 eve-ng ifup[677]: SIOCADDRT: Файл существует
14 ноя 07:06:04 eve-ng ifup[677]: Не удалось поднять pnet2.
14 ноя 07:06:04 eve-ng ifup[677]: Ожидание, пока pnet3 станет готовым (MAXWAIT 32 секунды).
14 ноя 07:06:04 eve-ng ifup[677]: интерфейс eth4 не существует!
14 ноя 07:06:04 eve-ng ifup[677]: Ожидание, пока pnet4 станет готовым (MAXWAIT 32 секунды).
14 ноя 07:06:04 eve-ng systemd[1]: networking.service: Основной процесс завершен, код=завершен, статус=1/НЕУДАЧА
14 ноя 07:06:04 eve-ng systemd[1]: Не удалось запустить Подъем сетевых интерфейсов.
14 ноя 07:06:04 eve-ng systemd[1]: networking.service: Юнит вошел в состояние неудачи.
14 ноя 07:06:04 eve-ng systemd[1]: networking.service: Не удалось с результатом 'код выхода'
Тем не менее, мои интерфейсы успешно переименованы: dmesg | grep eth подтверждает, что переименование не происходит во время загрузки.
Все интерфейсы работают, я могу подключиться по SSH к этому хосту.
Есть четыре вещи, которые я уже сделал (и ни одна не сработала):
Вы отключаете назначение фиксированных имен, чтобы непредсказуемые имена ядра использовались снова. Для этого просто замаскируйте файл правил udev для политики по умолчанию: ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules // сделано
Вы передаете net.ifnames=0 в командной строке ядра // сделано
Вы создаете свою собственную схему наименований, например, назвав свои интерфейсы “internet0”, “dmz0” или “lan0”. Для этого создайте свои собственные .link файлы в /etc/systemd/network/, которые выбирают явное имя или лучшую схему наименования для одного, некоторых или всех ваших интерфейсов. // сделано:
cat /etc/systemd/network/10-eth.link
[Match]
MACAddress=00:0c:29:20:c2:66
[Link]
Name=eth0
[Match]
MACAddress=00:0c:29:20:c2:70
[Link]
Name=eth1
[Match]
MACAddress=00:0c:29:20:c2:7a
[Link]
Name=eth2
[Match]
MACAddress=00:0c:29:20:c2:84
Name=eth3
Я создал новый файл 10-rename-network.rules в /etc/udev/rules.d/ и добавил в него следующее содержимое:
SUBSYSTEM==”net”, ACTION==”add”, ATTR{address}==”ff:ff:ff:ff:ff:ff”, NAME=”eth0″ // сделано:
cat /etc/udev/rules.d/10-rename-network.rules
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:20:c2:66", NAME="eth0"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:20:c2:70", NAME="eth1"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:20:c2:7a", NAME="eth2"
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:0c:29:20:c2:84", NAME="eth3"
Я что-то упустил?
Причина
Проблема была вызвана Predictable-Network-Interface-Names от systemd/udev. Возможное решение
Согласно этому источнику, вы можете:
Вы отключаете назначение фиксированных имен, чтобы непредсказуемые имена ядра использовались снова. Для этого просто замаскируйте файл правил udev для политики по умолчанию: ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
Вы создаете свою собственную схему наименований, например, назвав свои интерфейсы "internet0", "dmz0" или "lan0". Для этого создайте свои собственные .link файлы в /etc/systemd/network/, которые выбирают явное имя или лучшую схему наименования для одного, некоторых или всех ваших интерфейсов. Смотрите systemd.link(5) для получения дополнительной информации.
Вы передаете net.ifnames=0 в командной строке ядра
Примененные решения
Я создал новый файл 10-rename-network.rules в /etc/udev/rules.d/ и добавил в него следующее содержимое:
SUBSYSTEM==”net”, ACTION==”add”, ATTR{address}==”ff:ff:ff:ff:ff:ff”, NAME=”eth0″
где
eth0 = желаемое имя сетевого интерфейса, используемое в /etc/network/interfaces
ff:ff:ff:ff:ff:ff = аппаратный MAC-адрес сетевого устройства
Я рекомендую перезагрузиться после завершения этого, чтобы убедиться, что изменение применено.
Ответ или решение
Исправление проблемы с запуском сетевых интерфейсов в Ubuntu 16.04.3 LTS
При возникновении ошибки "failed to start raise network interfaces" в среде Ubuntu 16.04.3 LTS, которая использует EVE-NG, важно понимать, какие шаги необходимо предпринять для ее устранения. На основе предоставленного вами описания проблемы, постараемся детально разобрать возможные причины и решения.
Шаг 1: Проблемы с Predictable-Network-Interface-Names
Проблема, с которой вы столкнулись, скорее всего, связана с механизмом переименования сетевых интерфейсов, введённым в systemd и udev, который переименовывает интерфейсы в соответствии с предсказуемыми именами. Для устранения этой проблемы вы уже предприняли несколько правильных шагов, однако давайте еще раз рассмотрим возможные решения и убедимся, что все сделано правильно.
-
Отключение уевого правила: Вы упомянули, что создали символическую ссылку на
/dev/null
для правила80-net-setup-link.rules
. Проверьте, выполнена ли команда:ln -s /dev/null /etc/udev/rules.d/80-net-setup-link.rules
-
Параметр командной строки ядра: Убедитесь, что параметр
net.ifnames=0
действительно добавлен в конфигурацию загрузчика GRUB. Для его добавления отредактируйте файл конфигурации GRUB:sudo nano /etc/default/grub
В строке
GRUB_CMDLINE_LINUX_DEFAULT
добавьтеnet.ifnames=0
. Например:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash net.ifnames=0"
После того как изменения внесены, выполните обновление конфигурации GRUB:
sudo update-grub
Шаг 2: Убедитесь в правильной конфигурации имени интерфейсов
Вы создали файл /etc/systemd/network/10-eth.link
для назначения собственных имен интерфейсам на основе их MAC-адресов. Проверьте, чтобы формат .link файлов был корректным, а имена соответствовали тем, что указаны в файле /etc/network/interfaces
.
Также убедитесь, что в файле /etc/network/interfaces
указаны правильные конфигурации для всех интерфейсов, которые вы хотите использовать. Например:
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet static
address 192.168.1.10
netmask 255.255.255.0
Шаг 3: Устранение возможных конфликтов
Сообщения из dmesg
, такие как "SIOCADDRT: File exists" и "interface eth4 does not exist", могут указывать на конфликты в конфигурациях интерфейсов, которые вам необходимо проверить. Убедитесь, что в файле /etc/network/interfaces
не указаны интерфейсы, которые фактически не существуют или имеют неправильные имена.
-
Проверьте существование интерфейсов:
Запустите командуip link show
и убедитесь, что все интерфейсы, которые вы пытаетесь поднять, существуют так, как вы их определили. -
Удалите или закомментируйте ненужные конфигурации, если вы видите, что интерфейсы не соответствуют действительности.
Шаг 4: Перезапуск сетевых служб
После всех изменений, для применения конфигураций необходимо перезагрузить службу сетей или саму систему:
sudo systemctl restart networking.service
Или же полностью перезагрузите систему:
sudo reboot
Заключение
Если, следуя указанным шагам, ошибка "failed to start raise network interfaces" сохраняется, возможно, стоит проверить логи системы более подробно для выявления дополнительных проблем, которые могли бы повлиять на запуск сетевых интерфейсов. Команды journalctl -xe
и dmesg
помогут вам в этом.
Тщательное выполнение шагов по настройке интерфейсов и устранению конфликтов с именами должно помочь в решении проблемы. Если после всех попыток проблема сохраняется, возможно, стоит рассмотреть возможность переустановки или обновления сетевых пакетов, или даже самой системы, если поддерживаемая версия это позволяет.