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

51

Não consigo ifdownuma 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 pelo marco:

user@box:/etc/network/$ cat /run/network/ifstate 
lo=lo
eth1=eth1
jwbensley
fonte
4
O que /run/network/ifstatecontém?
11003 Marco Marco
Atualizei minha pergunta com o conteúdo deste arquivo, eth0 não está lá. Uma rápida "Google" está me dizendo o significado deste arquivo (como eu não acessou antes), eu acho que eu posso ver onde está o problema :)
jwbensley
@Marco; Este fato tem fixado o meu problema, se você postar isso como uma resposta que pode marcá-lo como :) correta
jwbensley

Respostas:

55

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

De man ifup

O programa mantém registros de se as interfaces de rede estão ativadas ou desativadas. Sob circunstâncias excepcionais, esses registros podem se tornar inconsistentes com os estados reais das interfaces. Por exemplo, uma interface criada usando ifup e posteriormente desconfigurada usando ifconfigainda será registrada como ativa. Para corrigir isso, você pode usar a --forceopção para forçar ifup ou ifdownexecutar comandos de configuração ou desconfiguração, apesar do que considera o estado atual da interface.

Marco
fonte
8
Para adicionar a essa resposta, eu tive que adicionar eth0=eth0ao /run/network/ifstatepara reconhecer a interface e configurá-la corretamente. Essa resposta me ajudou a apontar para o arquivo, mas parou de sugerir essa adição, que foi o que resolveu meu problema semelhante.
David Parks
11
@DavidParks Tem certeza de que a interface está marcada como autoem /etc/network/interfaces? Ele deve aparecer /run/network/ifstatesem a necessidade de modificar manualmente o arquivo.
Marco
11
--forcefoi a resposta para mim; descobriu-se ifupque não trouxe a interface em primeiro lugar por causa de uma falha no comando /etc/network/if-pre-up.d; sorte eu ter rede em tudo!
sanmai
32

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

$ sudo ifconfig eth0 down

Se você não ifupconseguir, provavelmente terá algum problema de configuração. Criá-lo manualmente ifconfig eth0 upprovavelmente não é a coisa certa nesse caso. No Debian, ifupé um executável binário, então você provavelmente precisaria stracedisso para descobrir onde ele está sendo desligado:

$ sudo strace -e open ifup eth0

Isso informará quais arquivos ifupestão abrindo enquanto ele funciona, o que pode indicar o problema.

Em outros sistemas (por exemplo, RHEL e derivados), ifuphá um script de shell, portanto é muito mais fácil depurar:

# sh -x `which ifup` eth0

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

Warren Young
fonte
Uma resposta difícil, mas Marco encontrou o problema. Eu tentei o sudo ifconfig eth0 down && sudo ifconfig eth0 upque abalaria a interface para cima e para baixo, mas eu estava tentando disparar manualmente um script se-up que eu estava escrevendo e que não estava fazendo isso. Depois de atualizar meu arquivo / etc / network / run / ifstate, o ifdown / up funciona agora. Obrigado pela sua informação! :)
jwbensley
Esqueci de dizer, ótima idéia com a opção -x! Obrigado!
jwbensley
11
ifdowné um programa de alto nível que faz muita coisa que você pode precisar. ifconfig eth0 downé mais portátil e sempre pode ser executado, mas não executa as tarefas de limpeza que ifdownpodem ser realizadas.
Gilles 'SO- stop be evil'
Não quero sugerir que você use ifconfigo tempo todo, evitando ifup/down. Eu o sugeri apenas como uma etapa de solução de problemas. Pelo que entendi, o problema acabou sendo resultado do uso, e ifconfignão ifup/down, confundindo os mecanismos de alto nível. Mas eu não sabia disso quando postei minha resposta.
Warren Young
20

Já vi isso antes, quando o ethX não estava configurado corretamente /etc/network/interfaces. Isso precisa de algo como: -

auto eth0
   iface eth0 inet dhcp

Mesmo com um /etc/network/interfacesarquivo configurado incorretamente , você ainda pode desativar o eth0 com:

$ sudo ip link set eth0 down
Alex Leach
fonte
isso é exatamente o que aconteceu comigo. Eu esqueci de anexá-lo auto. Obrigado.
Mike
2

Para quem está enfrentando esse problema:

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

Como estava vazio, incluí o "nome da interface" (eth0) no arquivo ifstate. "Nome da interface" em / run / network.

user9885365
fonte
1

Adicionar eth0=eth0a /run/network/ifstate. Isso funcionou para mim

Jeroen
fonte
0

O que eu achei me ajudou é chamar o rmcomando para remover o arquivo de bloqueio dentro/run/network/

Faça ls -lae você deverá ver um .ifstatearquivo oculto ou algo com esse nome.

Remova isso e tente: ifdown && ifup

Se você estiver preocupado, pode quebrar algo, basta fazer uma cópia desse arquivo fora do diretório e remover o arquivo dentro do diretório.

Hunter Lowe
fonte