Вопрос или проблема
Служба сети не запускается / не стартует при перезагрузке.
Перезапуск сети (через systemctl): networking.serviceJob для networking.service завершился с ошибкой, так как процесс управления завершился с кодом ошибки.
Я все еще могу получить доступ к серверу через удаленную консоль, но больше ничего, так как без сети нет пути ни внутрь, ни наружу.
команда systemctl status networking.service говорит:
● networking.service - Включение сетевых интерфейсов
Loaded: загружен (/lib/systemd/system/networking.service; включен; предустановленный производителем: включен)
Drop-In: /run/systemd/generator/networking.service.d
└─50-insserv.conf-$network.conf
Active: неактивен (завершился с кодом ошибки) с Mo 2016-04-18 06:53:11 UTC; 43 с назад
Docs: man:interfaces(5)
Process: 3551 ExecStart=/sbin/ifup -a --read-environment (код=завершился, статус=
1/НЕУДАЧА)
Process: 3546 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [
-n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (код=
завершился, статус=0/УСПЕШНО)
Main PID: 3551 (код=завершился, статус=1/НЕУДАЧА)
Apr 18 06:53:11 h2502988.stratoserver.net ifup[3551]: Для информации, пожалуйста, посетите htt
ps://www.isc.org/software/dhcp/
Apr 18 06:53:11 h2502988.stratoserver.net ifup[3551]: Использование: dhclient [-4|-6] [-
SNTP1dvrx] [-nw] [-p <порт>] [-D LL|LLT]
Apr 18 06:53:11 h2502988.stratoserver.net ifup[3551]: [-s server
-addr] [-cf config-file] [-lf lease-file]
Apr 18 06:53:11 h2502988.stratoserver.net ifup[3551]: [-pf pid-f
ile] [--no-pid] [-e VAR=val]
Apr 18 06:53:11 h2502988.stratoserver.net ifup[3551]: [-sf scrip
t-file] [interface]
Apr 18 06:53:11 h2502988.stratoserver.net ifup[3551]: Не удалось поднять eth0.
Apr 18 06:53:11 h2502988.stratoserver.net systemd[1]: networking.service: Основной процесс
завершился, код=завершился, статус=1/НЕУДАЧА
Apr 18 06:53:11 h2502988.stratoserver.net systemd[1]: Не удалось запустить Включение сетевых
интерфейсов.
Apr 18 06:53:11 h2502988.stratoserver.net systemd[1]: networking.service: Юнит перешел в
состояние ошибки.
Apr 18 06:53:11 h2502988.stratoserver.net systemd[1]: networking.service: Завершился с результатом 'exit-code'.
Мой /etc/network/interfaces выглядит так:
# Интерфейс сетевой петли
auto lo
iface lo inet loopback
# Основной сетевой интерфейс
auto eth0
iface eth0 inet dhcp
С чего я могу начать отладку?
Спасибо за любую подсказку!
С уважением, K
# sudo ifup --verbose eth0
Настройка интерфейса eth0=eth0 (inet)
/bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: выполнение /etc/network/if-pre-up.d/ethtool
run-parts: выполнение /etc/network/if-pre-up.d/wireless-tools
run-parts: выполнение /etc/network/if-pre-up.d/wpasupplicant
/sbin/dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0
Клиент DHCP от Интернет-системного консорциума 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
Все права защищены.
Для информации, пожалуйста, посетите https://www.isc.org/software/dhcp/
Использование: dhclient <snip>
Не удалось поднять eth0.
Со мной это только что произошло. Причиной была несогласованность зависимостей пакетов, которая прервала мой переход с trusty на xenial, так что некоторые версии пакетов были не согласованы. В моем случае дилемму вызвали squid3 и ca-certificates-java.
Я восстановил сетевое подключение, просто запустив dhclient eth0
. После того как я устранил несогласованность пакетов, удалив вызывающие проблемы пакеты и запустив apt-get install -f
, я выполнил apt-get dist-upgrade
и apt-get install ubuntu-standard
. Это полностью решило мою проблему.
Что привело меня к подозрению на несогласованность, так это то, что бинарник /sbin/ifup
содержал устаревшую командную строку dhclient
с более не поддерживаемой опцией -I
. Это должно быть несоответствие версии пакетов.
Я предполагаю, что вы только что установили/обновили более новую ОС, такую как Ubuntu 16.04, и из-за отказа от традиционных схем именования интерфейсов, таких как eth0
или eth1
, система не может запустить ваш интерфейс.
Попробуйте отредактировать ваш /etc/network/interfaces
, чтобы использовать ens32
или ens192
вместо eth0
, как
# Интерфейс сетевой петли
auto lo
iface lo inet loopback
# Ethernet интерфейс
auto ens192
iface ens192 inet dhcp
Это должно позволить вам перезапустить сетевой интерфейс. Надеюсь, это поможет.
Для получения подробной информации об изменениях предсказуемых имен сетевых интерфейсов
https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/
Не уверен, насколько это все еще полезно: кажется, что у dhclient больше нет опций “-I” или “-df”, которые, согласно man-странице выполняют DDNS:
-I Использовать стандартную схему DDNS от RFCs 4701 & 4702.
Как только я убрал эту опцию из командной строки, dhclient смог поднять eth0.
[ИЗМЕНЕНО]: Теперь, если бы я мог найти, где находится эта опция “-I”…
У меня была схожая проблема, как у автора вопроса и Wei Wang, когда ifup
пытался запустить dhclient с опцией -I
, но моя версия dhclient была старой, которая ее не поддерживала. Предполагаю, это было вызвано моей предыдущей попыткой загрузки/установки Chromium для Xenial (16.04) в то время, как моя система оставалась на Trusty (14.04), что, вероятно, также обновило некоторые другие части моей системы.
В итоге, мое решение заключалось в том, чтобы вручную загрузить и установить соответствующие пакеты, связанные с dhclient, из официальной версии Xenial. Требуется три пакета, и их необходимо устанавливать в следующем порядке:
- libisc-export160 (https://ubuntu.pkgs.org/16.04/ubuntu-main-amd64/libisc-export160_9.10.3.dfsg.P4-8_amd64.deb.html)
- libdns-export162 (https://ubuntu.pkgs.org/16.04/ubuntu-main-amd64/libdns-export162_9.10.3.dfsg.P4-8_amd64.deb.html)
- isc-dhcp-client_4.3.3 (https://ubuntu.pkgs.org/16.04/ubuntu-main-amd64/isc-dhcp-client_4.3.3-5ubuntu12_amd64.deb.html)
После этого команда dhclient --version
показала, что у меня версия 4.3.3, которая поддерживает опцию -I
, и я смог снова использовать ifup
.
Попробуйте это:
sudo ifdown --exclude=lo -a && sudo ifup --exclude=lo -a
Таким образом замените networking restart
на ifdown... && ifup....
К слову: ifconfig
также давно устарел – используйте ip
из пакета iproute2
Попробуйте также
ifconfig eth0 down && ifconfig eth0 up
(или как там называется ваш сетевой интерфейс), чтобы перезапустить сеть.
@jos упоминает в комментарии к оригинальному посту:
Наличие строк “Использование:…” выглядит так, будто команда dhclient завершилась с ошибкой из-за неверных параметров…
У меня была точно такая же проблема, и ведение подробного журнала было ключом.
ifup --verbose eth0
Ищите вывод, объясняющий параметры DHCP.
Затем я взял вывод из:
/sbin/dhclient -4 -v -pf /run/dhclient.eth0.pid -if /var/lib/dhcp/dhclient.eth0.leases -I -df /var/lib/dhcp/dhclient6.eth0.leases eth0
и изменил на:
/sbin/dhclient -4 -v -pf /run/dhclient.eth0.pid eth0
и затем я получил адрес.
Полагаю, что какое-либо обновление программного обеспечения сделало так, чтобы dhclient вышел из синхронизации с тем, что происходило на моей системе Debian 7.11.
Para resolver é simples.
В /etc/network/interfaces.d/
удалите все файлы внутри этого каталога
В /etc/network/
создайте файл с именем interfaces
и внутри него поместите текст ниже
source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback
Перезагрузите компьютер и в рабочем столе создайте сетевое соединение.
Если используется только терминал, придется вписать в файл interfaces настройки для активации сетевой карты.
Это также подходит для ошибки Debian 12, который создает файл с именем setup внутри интерфейсов.d с eth0 и возникает ошибка при запуске службы сети.
abçs
.
Ответ или решение
Когда сеть eth0 не поднимается, это, как правило, связано с несоответствием конфигураций или с ошибками в параметрах запуска сетевых интерфейсов. Попробуем подробно разобрать шаги, которые помогут вам устранить эту проблему.
Изучение проблемы
-
Анализ сообщений об ошибках:
Проверьте выводsystemctl status networking.service
. Здесь указано, что главный процессifup
завершился с ошибкой из-за неверных параметров командыdhclient
. Система сообщает о том, что она не может поднять интерфейс eth0. -
Проверка конфигурационного файла:
Ваш файл/etc/network/interfaces
содержит состояние для интерфейса eth0, который пытается получить IP-адрес по DHCP. Убедитесь, что синтаксис файла правильно оформлен, что можно сделать через командуifdown eth0 && ifup eth0
.
Возможные решения
-
Проблема с параметрами
dhclient
:
Ошибка в сообщении указывает на некорректные параметрыdhclient
. Запуститеdhclient eth0
вручную, чтобы проверить, работает ли команда отдельно. Если команда выполняется без ошибок и интерфейс получает IP-адрес, то проблема скорее всего в конфигурации запускаifup
. -
Несоответствие версий пакетов:
Проверьте, все ли пакеты обновлены и совместимы. Ошибки могут возникать из-за устаревшей версииdhclient
, которая не поддерживает новые параметры. Используйте командыapt-get install -f
иapt-get dist-upgrade
, чтобы устранить несоответствия пакетов. -
Изменение имен сетевых интерфейсов в Ubuntu:
В более новых версиях Ubuntu сетевые интерфейсы больше не имеют имен формата eth0. Проверьте текущее имя интерфейса при помощиip link list
и обновите файл/etc/network/interfaces
, чтобы использовать правильное имя интерфейса, например,ens192
илиens32
. -
Удаление ненужных файлов конфигурации:
Проверьте папку/etc/network/interfaces.d/
и удалите все некорректные файлы, которые могут мешать запуску сетевых интерфейсов. Создайте единый файл конфигурации в/etc/network/interfaces
с корректными настройками.
Итог
Для решения проблемы вы должны сфокусироваться на нескольких аспектах: корректности конфигурационных файлов, совместимости версий пакетов и актуальности имен сетевых интерфейсов. После проведения описанных выше шагов, ваш интерфейс eth0 должен быть поднят корректно, что обеспечит нормальную работу сетевых служб вашего сервера. Если проблема сохраняется, обратитесь за консультацией к более опытному администратору или в службу поддержки вашего дистрибутива.