Вопрос или проблема
ifup зависает, и загрузка занимает много времени при запуске и завершении.
me@K501L:~$ systemctl status networking.service
● networking.service - Поднять сетевые интерфейсы
Загружено: загружено (/lib/systemd/system/networking.service; включено; предустановка вендора: включено)
Активен: неудача (Результат: время ожидания) с ср 2018-08-01 13:24:54 CEST; 1ч 0мин назад
Документы: man:interfaces(5)
Процесс: 1049 ExecStart=/sbin/ifup -a --read-environment (код=убит, сигнал=TERM)
Процесс: 918 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ] &&
Основной PID: 1049 (код=убит, сигнал=TERM)
01 авг 13:19:52 K501L systemd[1]: Запуск поднятия сетевых интерфейсов...
01 авг 13:19:55 K501L ifup[1049]: проверьте кабель
01 авг 13:20:00 K501L ifup[1049]: /sbin/ifup: ожидает блокировку на /run/network/ifstate.enp2s0
01 авг 13:24:54 K501L systemd[1]: networking.service: Операция запуска превысила время ожидания. Завершение.
01 авг 13:24:54 K501L systemd[1]: networking.service: Основной процесс завершился, код=убит, статус=15/TERM
01 авг 13:24:54 K501L systemd[1]: networking.service: Не удалось с результатом 'время ожидания'.
01 авг 13:24:54 K501L systemd[1]: Не удалось запустить поднятие сетевых интерфейсов.
/etc/interfaces
#LAN
auto enp2s0
iface enp2s0 inet static
address 10.0.0.2/24
gateway 10.0.0.1
dns-nameserver 10.0.0.1
хотя там написано, что он не поднялся:
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
/etc/resolv.conf
# Динамический resolv.conf(5) файл для glibc resolver(3), сгенерированный resolvconf(8)
# НЕ ИЗМЕНЯЙТЕ ЭТОТ ФАЙЛ ВРУЧНУЮ -- ВАШИ ИЗМЕНЕНИЯ БУДУТ ЗАПИСАНЫ ПЕРЕПИСАНЫ
# 127.0.0.53 это системный resolver stub.
# выполните "systemd-resolve --status", чтобы увидеть подробности о фактических DNS-серверах.
nameserver 10.0.0.1
nameserver 127.0.0.53
он работает, если я удаляю эту строку из /etc/interfaces
dns-nameserver 10.0.0.1
это связано с avahi-daemon, после обновления Bionic:
avahi-daemon-check-dns.sh висит бесконечно
Это можно исправить, удалив avahi-daemon:
apt-get remove avahi-daemon
или отредактировав “/usr/lib/avahi/avahi-daemon-check-dns.sh”:
в dns_has_local() замените
OUT=`LC_ALL=C host -t soa local. 2>&1
на
OUT=`LC_ALL=C /usr/bin/timeout 5 host -t soa local. 2>&1`
и вы будете зависать только пять секунд
Ответ или решение
Решение проблемы с запуском сетевых интерфейсов после обновления до Ubuntu 18.04.1 LTS
Обновление вашей системы до Ubuntu 18.04.1 LTS может привести к различным проблемам с сетью, таким как длительное время загрузки или зависание при запуске службы сетевых интерфейсов. В данном случае, сообщение об ошибке:
Failed to start Raise network interfaces.
сопровождается ошибкой таймаута в службе networking.service
, причиной которой является блокировка, связанная с файлом /run/network/ifstate.enp2s0
.
Анализ проблемы
Как показано в предоставленных данных:
-
Статус службы
networking
указывает на таймаут:Active: failed (Result: timeout)
-
Сообщения от
ifup
свидетельствуют о том, что он ожидает разблокировки:/sbin/ifup: waiting for lock on /run/network/ifstate.enp2s0
-
Конфигурация
/etc/interfaces
:auto enp2s0 iface enp2s0 inet static address 10.0.0.2/24 gateway 10.0.0.1 dns-nameserver 10.0.0.1
-
Интересно, что функционирование сети восстанавливается после удаления строки:
dns-nameserver 10.0.0.1
Согласно вашему описанию, проблема происходит из-за взаимодействия между avahi-daemon
и конфигурацией сети, в частности, вызова avahi-daemon-check-dns.sh
.
Решение проблемы
Есть несколько методов для решения данной проблемы:
-
Удаление
avahi-daemon
:
Если ваш сервер не требует автоматического обнаружения сетевых сервисов, вы можете решить проблему, просто удаливavahi-daemon
командой:sudo apt-get remove avahi-daemon
-
Изменение скрипта
avahi-daemon-check-dns.sh
:
Если вам нужно сохранитьavahi-daemon
, вы можете внести изменения в скрипт для установки таймаута.
Для этого откройте файл:sudo nano /usr/lib/avahi/avahi-daemon-check-dns.sh
Найдите строку:
OUT=`LC_ALL=C host -t soa local. 2>&1`
Замените её на:
OUT=`LC_ALL=C /usr/bin/timeout 5 host -t soa local. 2>&1`
Это позволит вашей системе продолжать выполнение, даже если DNS-запросы занимают слишком много времени, установив лимит в 5 секунд.
Заключение
После внесения изменений рекомендуется перезагрузить вашу систему или перезапустить сетевые службы:
sudo systemctl restart networking.service
Таким образом, указанные методы позволяют устранить зависание службы сетевых интерфейсов и сократить время загрузки системы. Если у вас остались вопросы или возникли сложности в процессе выполнения, не стесняйтесь обращаться за помощью.