Brak sieci: nie udało się uruchomić eth0

13

Usługa sieciowa nie uruchamia się / nie uruchamia się przy ponownym uruchomieniu.

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

Nadal mogę uzyskać dostęp do serwera za pośrednictwem zdalnej konsoli, ale nic więcej, ponieważ bez sieci nie ma wyjścia ani wejścia.

status systemctl networking.service mówi:

● 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'.

Mój / etc / network / interfaces wygląda następująco:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Gdzie mogę zacząć debugować?

Dzięki za podpowiedź! Pozdrawiam 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.
Katja Süss
źródło
1
System próbuje wprowadzić interfejs sieciowy, upwykonując kolejno skrypty, które się w nim znajdują /etc/network/if-up.d. Jeden z nich zawiera dhclientpolecenie, które się nie udaje. Więc zrób coś takiego grep -R dhclient /etc/network/if-up.d/*i zobacz, co dostajesz.
Jos
Dzięki za tą informację. Nie ma polecenia dhclient, ani w if-up.d, ani powyżej.
Katja Süss,
Czy potrafisz zrobić instrukcję, sudo ifup --verbose eth0aby zobaczyć, gdzie coś pójdzie nie tak?
Jos
Do mojego pytania dodałem wynik # sudo ifup --verbose eth0.
Katja Süss
Obecność linii „Użycie: ...” sprawia, że ​​wygląda to tak, jakby polecenie dhclient nie powiodło się, ponieważ wystąpił błąd w parametrach. Jednak, o ile mogę stwierdzić, polecenie jest prawidłowe. Co więcej, mam te same linie „Użycie” w moim /var/log/syslog. Możesz spróbować wykonać dhclientpolecenie samodzielnie. Jeśli nie pojawi się komunikat o błędzie, oznacza to, że nie ma problemu dhclient.
Jos

Odpowiedzi:

7

To mi się po prostu przydarzyło. Powodem było to, że wystąpiła niespójność zależności pakietu, która przerwała moją aktualizację z wiernego na xenial, więc niektóre wersje pakietów były niespójne. W moim przypadku niespójność była spowodowana przez squid3 i ca-certyfikaty-java.

Przywróciłem połączenie sieciowe, uruchamiając właśnie dhclient eth0. Po rozwiązaniu niespójności pakietu poprzez usunięcie szkodliwych pakietów i uruchomienie apt-get install -f, uruchomiłem apt-get dist-upgradei apt-get install ubuntu-standard. To całkowicie rozwiązało mój problem.

Podejrzewałem, że niespójność polega na tym, że /sbin/ifupplik binarny zawierał przestarzałą dhclientlinię poleceń z nieobsługiwaną już -Iopcją. Musi to być niespójność wersji pakietu.

furstex
źródło
jakoś mój do-release-upgrade również utknął, a to zadziałało również dla mnie, dzięki!
Evert
6

Zakładam, że właśnie zainstalowałeś / zaktualizowałeś system do nowszego systemu operacyjnego, takiego jak Ubuntu 16.04, a ze względu na odejście od tradycyjnych schematów nazewnictwa interfejsów, takich jak eth0lub eth1, system nie może uruchomić interfejsu.

Spróbuj edycji /etc/network/interfacesalbo użycia ens32lub ens192zamiast eth0jak

# The loopback network interface
auto lo
iface lo inet loopback

# The Ethernet interface
auto ens192
iface ens192 inet dhcp

Powinno to umożliwić ponowne uruchomienie interfejsu sieciowego. Mam nadzieję, że to pomoże. Szczegółowe informacje o przewidywanych zmianach interfejsu sieciowego

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

P. Ntende
źródło
poprawka dla mnie była następująca: askubuntu.com/a/830163/543586
theINtoy
Co za uratowanie życia. To właśnie powstrzymywało mojego wirtualnego hosta linuksa przed powrotem do sieci po tym, jak przeprowadzili wymuszoną aktualizację jądra dla krachu. mój był ens3 (zrób ip link show i znajdź, który ens dotyczy ciebie)
Patrick F
2

Nie jestem pewien, czy jest to nadal przydatne: Wygląda na to, że dhclient nie ma już opcji „-I” lub „-df”, co według strony podręcznika robi DDNS:

- Używam standardowego schematu DDNS z RFC 4701 i 4702.

Po usunięciu tej opcji z wiersza poleceń program dhclient może wywołać eth0.

[EDYCJA] : Teraz gdybym mógł znaleźć, gdzie jest ta opcja „-I” ...

Wei Wang
źródło
1
Próbuję dowiedzieć się, gdzie wywoływane jest polecenie „dhclient” z tymi opcjami. Tymczasowo uruchomiłem sieć, ręcznie uruchamiając polecenie dhclient bez tych dwóch opcji. - Wydaje mi się, że nie mam wystarczającej reputacji, aby komentować gdzie indziej, dlatego dodam tutaj swoją własną odpowiedź.
Wei Wang,
1
TLin (poniżej) ma rację. Pakiet isc-dhcp-client został zablokowany na starszej wersji. Dobry chwyt! Po prostu musiałem wykonać „apt-get install isc-dhcp-client”, aby zainstalować 4.3.3, a potem system jest szczęśliwy.
Wei Wang
Wei Wang: Wielkie dzięki, ponowna instalacja 'isc-dhcp-client' jak sugerowałeś, załatwiła sprawę! Udało mi się zabić hosta (gościa VM!) W trakcie aktualizacji do wydania, co nie było zbyt mądre. Teraz mogę zabrać się za naprawianie tych rzeczy za pośrednictwem ssh i znów do pracy w sieci! Dzięki.
stolsvik,
1

Miałem podobny problem jak OP i Wei Wang, gdzie ifuppróbowałem uruchomić dhclient z tą -Iopcją, ale mój dhclient był starszą wersją, która go nie obsługiwała. Domyślam się, że było to spowodowane moim poprzednim hackerskim sposobem pobierania / instalowania Xenial (16.04) Chromium, jednocześnie utrzymując mój system na Trusty (14.04), musiał on również zaktualizować niektóre inne części mojego systemu.

Krótko mówiąc, moja poprawka polegała na ręcznym pobraniu i zainstalowaniu odpowiednich pakietów związanych z dhclient w wyższym Xenial. Wymagane są trzy pakiety i należy je zainstalować w następującej kolejności:

  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 )

Potem dhclient --versionpokazałem , że mam 4.3.3, która obsługuje tę -Iopcję, i mogłem ifupponownie użyć .

TLin
źródło
0

Spróbuj tego:-

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

Więc zastąpić networking restartzifdown... && ifup....

Tak na marginesie: ifconfigod dawna jest również przestarzałe - użyj ipz pakietuiproute2

Możesz także spróbować

ifconfig eth0 down && ifconfig eth0 up

(lub jakkolwiek nazywany jest interfejs sieciowy) w celu ponownego uruchomienia sieci.

Afaque
źródło
0

@jos wspomina w komentarzu do oryginalnego postu:

Obecność linii „Użycie: ...” sprawia, że ​​wygląda to tak, jakby polecenie dhclient nie powiodło się, ponieważ wystąpił błąd w parametrach ...

Miałem ten precyzyjny problem i wskazówka była pełna rejestracja.

ifup --verbose eth0

Poszukaj danych wyjściowych wyjaśniających parametry DHCP.

Następnie wziąłem dane wyjściowe z:

/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

po prostu:

/sbin/dhclient -4 -v -pf /run/dhclient.eth0.pid eth0 a potem mam adres.

Wierzę, że jakaś aktualizacja oprogramowania spowodowała, że ​​dhclient nie zsynchronizował się z tym, co działo się w moim systemie Debian 7.11.

Eugene van der Merwe
źródło