You are here: Home » Справка и подсказки » Решение проблемы с отсутствие сети из-за Dependency failed

Решение проблемы с отсутствие сети из-за Dependency failed

При перезагрузке сервера на Arch Linux (VPS) после обновлений (было обновлено в том числе ядро Linux) на нём полностью пропала сеть. Отсутствовало как подключение к веб-серверу, так и по SSH. В результате пришлось подключаться по VNC и решать проблему.

Оказалось, что сетевому интерфейсу не присвоены IP адреса, а сам интерфейс находится в состоянии DOWN. Проверял с помощью команды:

ip a

Аналогичный результат давала команда

ifconfig

С помощью команды (здесь enp0s3 – имя сетевого интерфейса в моей системе):

ip link set enp0s3 up

Удалось перевести интерфейс в состояние UP, но это ситуацию не изменило, по-прежнему не присвоены внешние IP адреса, сети нет, команда ip a стала выводить:

При загрузке системы я наблюдал запись:

A start job is running for sys-subsystem-net-device-ens3.device (32s / Inin 30s)

Вместо неё может быть запись вида A start job is running for sys-subsystem-net-device-*.device.

Попытки запустить сетевую службу командами вида:

netctl start static.ens3

Приводили к ошибкам:

The result is dependency.

А также:

Dependency failed for A basic static ethernet connection.
A dependency job for netctlPstatic.ens3.seruice failed. See 'journalctl -xe' for details.

Статус, полученный командой

netctl status static.ens3

Выводил:

netctl0static.ens3.sevice - A basic static ethernet connection
Loaded: loaded (/etc/systend/systen/netctl@static.ens3.sevice; enabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:netctl.profile(5)
Mar 13 04:13:57 suip.biz systend[l]: Dependency failed for A basic static ethernet connection.
Mar 13 04:13:57 suip.biz systend[l]: netctl0static.ens3.sevice: Job netctl0static.ens3.sevice/start failed with result ‘dependency’

В журнале было записано:

Причина ошибки Dependency failed для сетевой службы

Причина оказалась в том, что в настройках сетевого профиля было указано неверное имя сетевого интерфейса. В файле /etc/netctl/static.ens3 строка, которая начинается с Interface, например:

Interface=ens3

обозначает имя сетевого интерфейса, для которого в файле делаются настройки. У меня там было имя ens3, в то время как имя в системе было enp0s3. Поскольку данный сервер на тот момент проработал уже 2 года, можно предположить, что внезапное изменение имени сетевого интерфейса связано с обновлением (возможно, ядра), либо изменениями в аппаратной виртуализации со стороны хостинга.

Как исправить отсутствие сети из-за Dependency failed

Видятся два варианта:

  • Вернуть прежнее имя сетевого интерфейса в системе
  • Изменить настройки исходя из нового имени сетевого интерфейса

Второй способ, думается, предпочтительнее.

С помощью команды

find /etc/systemd

вы можете найти сервис, который находится в автозагрузке и который использует старое имя.

В моём случае, для отключения старого профиля:

netctl disable static.ens3

Далее переименование файла профиля в соответствие с новым именем интерфейса:

mv /etc/netctl/static.ens3 /etc/netctl/static.enp0s3

Затем редактирование профиля, заменяя в этом файле строку

Interface=ens3

на строку с новым интерфейсом, в моём случае это

Interface=enp0s3

Запуск:

netctl start static.enp0s3

Если всё в порядке, то добавление в автозагрузку.

netctl enable static.enp0s3

Проверяем доступность Интернет-подключения:

ping ya.ru

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *