No puedo ifdown eth0 (interfaz principal)


51

No puedo ifdownuna interfaz en 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

Según lo solicitado por marco:

user@box:/etc/network/$ cat /run/network/ifstate 
lo=lo
eth1=eth1

44
¿Qué /run/network/ifstatecontiene?
Marco

He actualizado mi pregunta con el contenido de este archivo, eth0 no está allí. Una rápida "Google" me está diciendo que el significado de este archivo (ya que no han accedido a ella antes), creo que puedo ver dónde está el problema :)
jwbensley

@Marco; De hecho, esto ha solucionado mi problema, si publica esto como respuesta puedo marcarlo como correcto :)
jwbensley

Respuestas:


55

Verifique el contenido del archivo /run/network/ifstate. ifupy ifdownuse este archivo para observar qué interfaces de red se pueden activar y desactivar. Por lo tanto, ifuppuede confundirse fácilmente cuando se utilizan otras herramientas de red para abrir una interfaz (por ejemplo ifconfig).

Del hombre si

El programa mantiene registros de si las interfaces de red están activas o inactivas. En circunstancias excepcionales, estos registros pueden volverse inconsistentes con los estados reales de las interfaces. Por ejemplo, una interfaz que se creó usando ifup y luego se desconfiguró usando ifconfigaún se registrará como activa . Para solucionar esto, puede usar la --forceopción para forzar ifup o ifdownejecutar comandos de configuración o desconfiguración a pesar de lo que considera que es el estado actual de la interfaz.


8
Para agregar a esta respuesta, tuve que agregar eth0=eth0a /run/network/ifstatepara que reconozca la interfaz y la configure correctamente. Esta respuesta me ayudó a señalar el archivo, pero no sugirió esa adición, que es lo que resolvió mi problema similar.
David Parks

1
@DavidParks ¿Está seguro de que la interfaz está marcada como autoen /etc/network/interfaces? Debería aparecer /run/network/ifstatesin la necesidad de modificar manualmente el archivo.
Marco

1
--forcefue la respuesta para mí; resultó ifupque en primer lugar no apareció la interfaz debido a un error en el comando /etc/network/if-pre-up.d; ¡Suerte que tengo red en absoluto!
sanmai

32

ifdownes un programa de alto nivel que hace muchas cosas que quizás no necesites. Además, no está disponible en todas partes. La forma más portátil podría funcionar para usted:

$ sudo ifconfig eth0 down

Si no puede ifuphacerlo, es probable que tenga algún problema de configuración. Tratarlo manualmente ifconfig eth0 upprobablemente no sea lo correcto en ese caso. En Debian, ifupes un ejecutable binario, por lo que probablemente tenga straceque averiguar dónde se cuelga:

$ sudo strace -e open ifup eth0

Eso le dirá qué archivos ifupse están abriendo mientras funciona, lo que podría indicarle el problema.

En otros sistemas (por ejemplo, RHEL y derivados) ifupes un script de shell, por lo que es mucho más fácil de depurar:

# sh -x `which ifup` eth0

La ejecución de un script de shell sh -xhace que imprima cada línea que ejecuta, para que pueda rastrear la ejecución.


Una respuesta acertada, pero Marco ha encontrado el problema. Intenté sudo ifconfig eth0 down && sudo ifconfig eth0 uplo que agitaría la interfaz hacia arriba y hacia abajo, pero estaba tratando de activar manualmente un script if-up que he estado escribiendo y eso no lo estaba haciendo. Después de actualizar mi archivo / etc / network / run / ifstate, ifdown / up funciona ahora. ¡Gracias por tu información! :)
jwbensley

Olvidé decir, ¡gran idea con la opción -x! ¡Gracias!
jwbensley

1
ifdownes un programa de alto nivel que hace muchas cosas que podrías necesitar. ifconfig eth0 downes más portátil y siempre se puede ejecutar, pero no realiza las tareas de limpieza que ifdownpodrían hacer.
Gilles 'SO- deja de ser malvado'

No quiero sugerir que uses ifconfigtodo el tiempo, evitando ifup/down. Lo sugerí solo como un paso de solución de problemas. Según tengo entendido el problema, resultó ser el resultado de usarlo en ifconfiglugar de ifup/downconfundir los mecanismos de alto nivel. Pero no lo sabía cuando publiqué mi respuesta.
Warren Young

20

He visto esto antes cuando ethX no estaba configurado correctamente /etc/network/interfaces. Esto necesita algo como: -

auto eth0
   iface eth0 inet dhcp

Incluso con un /etc/network/interfacesarchivo configurado incorrectamente , aún puede derribar eth0 con:

$ sudo ip link set eth0 down

Esto es exactamente lo que me pasó. Olvidé agregarlo auto. Gracias.
Mike

2

Para cualquiera que tenga problemas con este problema:

Revisé el archivo ifstate. "Interface-name" en / run / network.

Estaba vacío, así que incluí el "nombre de interfaz" (eth0) en ifstate. El archivo "nombre de interfaz" en / run / network.


1

Añadir eth0=eth0a /run/network/ifstate. Esto funciono para mi


0

Lo que encontré me ayudó es llamar al rmcomando para eliminar el archivo de bloqueo dentro/run/network/

Haga ls -lay debería ver un .ifstatearchivo oculto o algo con ese nombre.

Elimina eso y luego prueba: ifdown && ifup

Si le preocupa que pueda romper algo, simplemente haga una copia de ese archivo fuera del directorio y elimine el que está dentro del directorio.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.