Sem rede: falha ao exibir eth0

12

O serviço de rede falha ao iniciar / não inicia na reinicialização.

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

Ainda consigo acessar o servidor via console remoto, mas nada mais, pois sem rede, não há saída nem entrada.

systemctl status networking.service diz:

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

Meu / etc / network / interfaces é parecido com:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

Onde posso começar a depurar?

Obrigado por qualquer dica! Atenciosamente, 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
fonte
1
O sistema tenta trazer sua interface de rede upexecutando, um por um, os scripts localizados /etc/network/if-up.d. Um deles contém um dhclientcomando que falha. Então faça algo parecido grep -R dhclient /etc/network/if-up.d/*e veja o que você recebe.
21716 Jos
Obrigado por esta informação. Não há comando dhclient, nem no if-up.d nem acima.
Katja Süss
Você pode fazer um manual sudo ifup --verbose eth0para ver onde as coisas dão errado?
21716 Jos
Eu adicionei a saída de # sudo ifup --verbose eth0 à minha pergunta.
Katja Süss
A presença das linhas "Usage: ..." faz com que pareça que o comando dhclient falha porque há um erro nos parâmetros. No entanto, tanto quanto posso dizer, o comando está correto. Além disso, tenho as mesmas linhas de "uso" no meu arquivo /var/log/syslog. Você pode tentar executar o dhclientcomando manualmente por conta própria. Se nenhuma mensagem de erro aparecer, não haverá problema dhclient.
21716 Jos

Respostas:

7

Isto somente aconteceu para mim. O motivo foi que houve uma inconsistência de dependência de pacote que interrompeu minha atualização de confiável para xenial; portanto, algumas versões de pacote foram inconsistentes. No meu caso, a inconsistência foi causada pelo squid3 e ca-certificates-java.

Eu restaurei a conexão de rede executando apenas dhclient eth0. Após resolver a inconsistência do pacote removendo os pacotes incorretos e executando apt-get install -f, executei apt-get dist-upgradee apt-get install ubuntu-standard. Isso resolveu meu problema completamente.

O que me levou a suspeitar da inconsistência é que o /sbin/ifupbinário continha a dhclientlinha de comando desatualizada com a -Iopção não mais suportada . Deve ser uma inconsistência da versão do pacote.

furstex
fonte
de alguma forma, minha atualização de lançamento também ficou paralisada, e isso funcionou também para mim, obrigado!
Evert
6

Estou assumindo que você acabou de instalar / atualizar para um sistema operacional mais recente, como o Ubuntu 16.04, e devido à saída dos esquemas de nomenclatura da interface tradicional, como eth0ou eth1, o sistema não pode iniciar a interface.

Tente editar o seu /etc/network/interfacespara usar ens32ou em ens192vez de eth0como

# The loopback network interface
auto lo
iface lo inet loopback

# The Ethernet interface
auto ens192
iface ens192 inet dhcp

Isso deve permitir a reinicialização da interface de rede. Espero que ajude. Para detalhes sobre as alterações preditivas na interface de rede

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

P. Ntende
fonte
a correção para mim foi: askubuntu.com/a/830163/543586
theINtoy 15/04
Que salva-vidas. Isso é exatamente o que estava impedindo que meu host linux virtual voltasse à rede depois que eles executaram uma atualização forçada do kernel para o colapso. mina era ens3 (fazer ip link show e descobrir qual ens se aplica a você)
Patrick F
2

Não tenho certeza se isso ainda é útil: parece que o dhclient não possui mais a opção "-I" ou "-df", que de acordo com a página do manual DDNS:

-I Use o esquema DDNS padrão das RFCs 4701 e 4702.

Depois de remover essa opção da linha de comando, o dhclient pode ativar o eth0.

[EDIT] : Agora, se eu pudesse encontrar onde está a opção "-I" ...

Wei Wang
fonte
1
Estou tentando descobrir onde o comando "dhclient" é chamado com essas opções. Instalei temporariamente a rede executando manualmente o comando dhclient sem essas duas opções. - Parece que não tenho reputação suficiente para comentar em outros lugares, então estou adicionando minha própria resposta aqui.
Wei Wang
1
TLin (abaixo) está certo. O pacote isc-dhcp-client estava preso em uma versão mais antiga. Boa pegada! Eu apenas tive que fazer um "apt-get install isc-dhcp-client" para instalar o 4.3.3 e o sistema ficou satisfeito depois disso.
Wei Wang
Wei Wang: Muito obrigado, reinstalar o 'isc-dhcp-client', como você sugeriu, fez o truque! Consegui matar o host (convidado da VM!) No meio de uma atualização de lançamento / lançamento, o que não era exatamente inteligente. Agora eu posso consertar essas coisas via ssh e com redes novamente! Obrigado.
22418 stolsvik
1

Eu tive um problema semelhante ao OP e Wei Wang, onde ifupestava tentando executar o dhclient com a -Iopção, mas meu dhclient era uma versão mais antiga que não era compatível. Meu palpite é que isso ocorreu devido à minha maneira hacky anterior de baixar / instalar o Xenial (16.04) Chromium enquanto mantinha meu sistema em Trusty (14.04), ele também deve ter atualizado algumas outras partes do meu sistema.

Para encurtar a história, minha solução foi baixar e instalar manualmente os pacotes relevantes relacionados ao dhclient no Xenial upstream. São necessários três pacotes, e ele precisa ser instalado na seguinte ordem:

  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 )

Depois disso, dhclient --versionmostrei que tinha o 4.3.3, que suporta a -Iopção, e consegui usá-lo ifupnovamente.

TLin
fonte
0

Experimente o seguinte: -

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

Então substitua networking restartporifdown... && ifup....

Apenas como um aparte: ifconfigtambém foi descontinuado por um longo tempo - use ipdo pacoteiproute2

Você poderia tentar também

ifconfig eth0 down && ifconfig eth0 up

(ou como a interface de rede é chamada) para reiniciar a rede.

Afaque
fonte
0

@jos menciona em um comentário na postagem original:

A presença das linhas "Usage: ..." faz com que pareça que o comando dhclient falha porque há um erro nos parâmetros ...

Eu tive esse problema preciso e o log detalhado foi a dica.

ifup --verbose eth0

Procure a saída que explica os parâmetros DHCP.

Então peguei a saída de:

/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

simplesmente:

/sbin/dhclient -4 -v -pf /run/dhclient.eth0.pid eth0 e então eu consegui um endereço.

Eu acredito que algumas atualizações de software fizeram o dhclient ficar fora de sincronia o que estava acontecendo no meu sistema Debian 7.11.

Eugene van der Merwe
fonte