Não é possível ifdown eth0 (interface principal)

48

Eu não posso ifdown uma interface no Debian 6.0.5:

user@box:/etc/network$ sudo ifdown eth0 && sudo ifup eth0
ifdown: interface eth0 not configured
SIOCADDRT: File exists
Failed to bring up eth0.

user@box:/etc/network$ cat interfaces 
auto lo
iface lo inet loopback

allow-hotplug eth0 
allow-hotplug eth1 

auto eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
gateway 10.0.0.254

auto eth1
iface eth1 inet manual

Conforme solicitado por marco:

user@box:/etc/network/$ cat /run/network/ifstate 
lo=lo
eth1=eth1
    
por jwbensley 11.10.2012 / 18:02

6 respostas

52

Verifique o conteúdo do arquivo /run/network/ifstate . ifup e ifdown usam esse arquivo para observar quais interfaces de rede podem ser ativadas e desativadas. Assim, ifup pode ser facilmente confundido quando outras ferramentas de rede são usadas para abrir uma interface (por exemplo, ifconfig ).

De man ifup

The program keeps records of whether network interfaces are up or down. Under exceptional circumstances these records can become inconsistent with the real states of the interfaces. For example, an interface that was brought up using ifup and later deconfigured using ifconfig will still be recorded as up. To fix this you can use the --force option to force ifup or ifdown to run configuration or deconfiguration commands despite what it considers the current state of the interface to be.

    
por 11.10.2012 / 18:46
30

ifdown é um programa de alto nível que faz muitas coisas que você pode não precisar. Além disso, não está disponível em todos os lugares. A maneira mais portável pode funcionar para você:

$ sudo ifconfig eth0 down

Se você não puder ifup , provavelmente terá algum problema de configuração. Manualmente trazê-lo com ifconfig eth0 up provavelmente não é a coisa certa nesse caso. No Debian, ifup é um executável binário, então você provavelmente teria que strace para descobrir onde ele está sendo desconectado:

$ sudo strace -e open ifup eth0

Isso informará quais arquivos ifup está abrindo enquanto funciona, o que pode indicar o problema.

Em outros sistemas (por exemplo, RHEL e derivativos) ifup é um script shell, por isso é muito mais fácil depurar:

# sh -x 'which ifup' eth0

A execução de um script de shell com sh -x faz com que ele imprima todas as linhas que ele executa, para que você possa rastrear a execução.

    
por 11.10.2012 / 18:32
19

Eu já vi isso antes, quando o ethX não estava configurado corretamente %código%. Isso precisa de algo como: -

auto eth0
   iface eth0 inet dhcp

Mesmo com um arquivo /etc/network/interfaces configurado incorretamente, ainda é possível desativar eth0 com:

$ sudo ip link set eth0 down
    
por 11.10.2012 / 20:08
1

Para quem está lutando com esse problema:

Eu verifiquei o arquivo ifstate. "interface-name" em / run / network.

Estava vazio, então incluí "nome-da-interface" (eth0) em ifstate. "nome-da-interface" em / run / network.

    
por 05.06.2018 / 13:13
0

Adicione eth0=eth0 a /run/network/ifstate . Isso funcionou para mim

    
por 13.03.2017 / 19:12
0

O que eu encontrei me ajudou a chamar o comando rm para remover o arquivo de bloqueio em /run/network/

Faça ls -la e você verá um arquivo .ifstate oculto ou algo com esse nome.

Remova isso e tente: ifdown && ifup

Se você está preocupado em quebrar alguma coisa, faça uma cópia desse arquivo fora do diretório e remova o arquivo dentro do diretório.

    
por 27.03.2018 / 11:31