Нет сети: не удалось вызвать eth0

13

Сетевая служба не запускается / не запускается при перезагрузке.

Restarting networking (via systemctl): networking.serviceJob for networking.service failed because the control process exited with error code.

Я все еще могу получить доступ к серверу через удаленную консоль, но больше ничего, так как без сети нет выхода, ни в.

systemctl status network.service говорит:

● networking.service - Raise network interfaces
   Loaded: loaded (/lib/systemd/system/networking.service; enabled; vendor prese
t: enabled)
  Drop-In: /run/systemd/generator/networking.service.d
           └─50-insserv.conf-$network.conf
   Active: failed (Result: exit-code) since Mo 2016-04-18 06:53:11 UTC; 43s ago
     Docs: man:interfaces(5)
  Process: 3551 ExecStart=/sbin/ifup -a --read-environment (code=exited, status=
1/FAILURE)
  Process: 3546 ExecStartPre=/bin/sh -c [ "$CONFIGURE_INTERFACES" != "no" ] && [
 -n "$(ifquery --read-environment --list --exclude=lo)" ] && udevadm settle (cod
e=exited, status=0/SUCCESS)
 Main PID: 3551 (code=exited, status=1/FAILURE)

Apr 18 06:53:11 h2502988.stratoserver.net ifup[3551]: For info, please visit htt
ps://www.isc.org/software/dhcp/
Apr 18 06:53:11 h2502988.stratoserver.net ifup[3551]: Usage: dhclient [-4|-6] [-
SNTP1dvrx] [-nw] [-p <port>] [-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]: Failed to bring up eth0.
Apr 18 06:53:11 h2502988.stratoserver.net systemd[1]: networking.service: Main p
rocess exited, code=exited, status=1/FAILURE
Apr 18 06:53:11 h2502988.stratoserver.net systemd[1]: Failed to start Raise netw
ork interfaces.
Apr 18 06:53:11 h2502988.stratoserver.net systemd[1]: networking.service: Unit e
ntered failed state.
Apr 18 06:53:11 h2502988.stratoserver.net systemd[1]: networking.service: Failed
 with result 'exit-code'.

Мой / etc / network / interfaces выглядит так:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Где я могу начать отлаживать?

Спасибо за любую подсказку! С уважением, K

# sudo ifup --verbose eth0
Configuring interface eth0=eth0 (inet)
/bin/run-parts --exit-on-error --verbose /etc/network/if-pre-up.d
run-parts: executing /etc/network/if-pre-up.d/ethtool
run-parts: executing /etc/network/if-pre-up.d/wireless-tools
run-parts: executing /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  
Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Usage: dhclient <snip>
Failed to bring up eth0.
Катя Сюсс
источник
1
Система пытается перенести ваш сетевой интерфейс up, выполняя, один за другим, скрипты, которые находятся в /etc/network/if-up.d. Один из них содержит dhclientкоманду, которая не выполняется. Так что сделайте что-нибудь подобное grep -R dhclient /etc/network/if-up.d/*и посмотрите, что вы получите.
Йос
Спасибо за эту информацию. Нет команды dhclient, ни в if-up.d, ни выше.
Катя Сюсс
Можете ли вы сделать руководство, sudo ifup --verbose eth0чтобы увидеть, где все идет не так?
Jos
Я добавил вывод # sudo ifup --verbose eth0 в свой вопрос.
Катя Сюсс
Наличие строк «Usage: ...» выглядит так, как будто команда dhclient терпит неудачу из-за ошибки в параметрах. Тем не менее, насколько я могу судить, команда верна. Более того, у меня есть такие же строки «Использование» в моей /var/log/syslog. Вы можете попробовать выполнить dhclientкоманду вручную самостоятельно. Если сообщение об ошибке не появляется, проблема не возникает dhclient.
Йос

Ответы:

7

Это только что случилось со мной. Причина заключалась в том, что была несогласованность зависимостей пакетов, которая прервала мое обновление с доверенного на xenial, поэтому некоторые версии пакетов были несовместимы. В моем случае несоответствие было вызвано squid3 и ca-Certificates-Java.

Я восстановил сетевое соединение, запустив просто dhclient eth0. После устранения несоответствия пакетов, удалив ошибочные пакеты и запустив их apt-get install -f, я запустил apt-get dist-upgradeи apt-get install ubuntu-standard. Это решило мою проблему полностью.

Что заставило меня заподозрить несоответствие в том, что /sbin/ifupбинарный файл содержал устаревшую dhclientкомандную строку с более не поддерживаемым -Iпараметром. Это должно быть несоответствие версии пакета.

furstex
источник
как-то мой do-release-upgrade тоже застрял, и это сработало и для меня, спасибо!
Эверт
6

Я предполагаю, что вы только что установили / обновили до более новой ОС, такой как Ubuntu 16.04, и из-за отклонения от традиционных схем именования интерфейсов, таких как eth0или eth1, система не может запустить ваш интерфейс.

Попробуйте отредактировать ваш, /etc/network/interfacesчтобы использовать ens32или ens192вместо eth0как

# The loopback network interface
auto lo
iface lo inet loopback

# The Ethernet interface
auto ens192
iface ens192 inet dhcp

Это должно позволить вам перезагрузить сетевой интерфейс. Я надеюсь, что это помогает. Подробнее о прогнозируемых изменениях сетевого интерфейса

https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

П. Нтенде
источник
исправление для меня было: askubuntu.com/a/830163/543586
theIntoy
Какой спасатель жизни. Это именно то, что мешало моему виртуальному Linux-хосту вернуться в сеть после принудительного обновления ядра для распада. мой был ens3 (делай ip link show и находи, какой это относится к тебе)
Патрик Ф
2

Не уверен, что это все еще полезно: кажется, что у dhclient больше нет опции "-I" или "-df", которая согласно man-странице делает DDNS:

-Я использую стандартную схему DDNS из RFC 4701 и 4702.

Как только я уберу эту опцию из командной строки, dhclient сможет вызвать eth0.

[РЕДАКТИРОВАТЬ] : Теперь, если бы я мог найти, где эта опция "-I" ...

Вэй Ван
источник
1
Я пытаюсь выяснить, где команда "dhclient" вызывается с этими параметрами. Я временно запустил сеть, вручную запустив команду dhclient без этих двух опций. - Кажется, у меня недостаточно репутации, чтобы комментировать в другом месте, поэтому я добавляю свой ответ здесь.
Вэй Ван
1
TLin (ниже) прав. Пакет isc-dhcp-client застрял в более старой версии. Хороший улов! Мне просто нужно было сделать «apt-get install isc-dhcp-client», чтобы установить 4.3.3, и система довольна после этого.
Вэй Ван
Вэй Ван: Большое спасибо, переустановка «isc-dhcp-client», как вы и предлагали, сработала! Мне удалось убить хост (VM guest!) В середине do-release-upgrade, что было не совсем умным. Теперь я могу покончить с этим через ssh и снова подключиться к сети! Благодарю.
stolsvik
1

У меня была похожая проблема с OP и Wei Wang, где я ifupпытался запустить dhclient с -Iопцией, но мой dhclient был более старой версией, которая не поддерживала ее. Я предполагаю, что это произошло из-за моего предыдущего хакерского способа загрузки / установки Xenial (16.04) Chromium, в то время как моя система работала на Trusty (14.04), он также должен был обновить некоторые другие части моей системы.

Короче говоря, мое исправление состояло в том, чтобы вручную загрузить и установить соответствующие пакеты, относящиеся к dhclient, в исходной версии Xenial. Требуется три пакета, и их необходимо установить в следующем порядке:

  1. libisc-export160 ( https://ubuntu.pkgs.org/16.04/ubuntu-main-amd64/libisc-export160_9.10.3.dfsg.P4-8_amd64.deb.html )
  2. libdns-export162 ( https://ubuntu.pkgs.org/16.04/ubuntu-main-amd64/libdns-export162_9.10.3.dfsg.P4-8_amd64.deb.html )
  3. 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снова.

TLin
источник
0

Попробуй это:-

sudo ifdown --exclude=lo -a && sudo ifup --exclude=lo -a

Так что заменить networking restartнаifdown... && ifup....

Просто как в стороне: ifconfigтакже давно устарел - использовать ipиз пакетаiproute2

Вы также можете попробовать

ifconfig eth0 down && ifconfig eth0 up

(или как называется ваш сетевой интерфейс), чтобы перезапустить сеть.

Afaque
источник
0

@jos упоминает в комментарии к оригинальному сообщению:

Наличие строк «Usage: ...» выглядит так, как будто команда 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.

Евгений ван дер Мерве
источник