Ifdown ne peut pas eth0 (interface principale)

51

Je ne peux pas ifdownune interface sur 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

À la demande de marco:

user@box:/etc/network/$ cat /run/network/ifstate 
lo=lo
eth1=eth1
Jwbensley
la source
4
Que /run/network/ifstatecontient?
Marco
J'ai mis à jour ma question avec le contenu de ce fichier, eth0 n'y est pas. Un rapide "Google" me dit la signification de ce fichier (je n'y ai jamais accédé auparavant), je pense pouvoir voir où se situe le problème :)
jwbensley
@Marco; Cela a en effet corrigé mon problème, si vous postez ceci comme réponse, je peux le marquer comme correct :)
jwbensley

Réponses:

55

Vérifiez le contenu du fichier /run/network/ifstate. ifupet ifdownutilisez ce fichier pour noter les interfaces réseau qui peuvent être activées et désactivées. Ainsi, ifuppeut être facilement confondu lorsque d’autres outils de réseau sont utilisés pour faire apparaître une interface (par exemple ifconfig).

De l' homme si up

Le programme conserve des enregistrements indiquant si les interfaces réseau sont actives ou non. Dans des circonstances exceptionnelles, ces enregistrements peuvent devenir incompatibles avec les états réels des interfaces. Par exemple, une interface créée avec ifup et déconfigurée ultérieurement ifconfigsera toujours enregistrée comme étant active . Pour résoudre ce problème, vous pouvez utiliser l' --forceoption permettant de forcer ifup ou ifdownd'exécuter des commandes de configuration ou de déconfiguration malgré l'état actuel de l'interface.

Marco
la source
8
Pour ajouter à cette réponse, j'ai dû ajouter eth0=eth0à /run/network/ifstatepour qu'il reconnaisse l'interface et le configure correctement. Cette réponse m'a aidé à pointer vers le fichier, mais s'est arrêtée avant de suggérer cette addition, ce qui a résolu mon problème similaire.
David Parks
1
@DavidParks Etes-vous sûr que l'interface est marquée comme autodans /etc/network/interfaces? Il devrait apparaître /run/network/ifstatesans qu'il soit nécessaire de modifier manuellement le fichier.
Marco
1
--forceétait la réponse pour moi; il s'est avéré ifupque l'interface n'a pas été mise en place en raison d'une commande défaillante /etc/network/if-pre-up.d; Heureusement moi d'avoir le réseau du tout!
Sanmai
32

ifdownest un programme de haut niveau qui fait beaucoup de choses dont vous n’auriez peut-être pas besoin. De plus, il n'est pas disponible partout. Le moyen le plus portable pourrait fonctionner pour vous:

$ sudo ifconfig eth0 down

Si vous ne le pouvez pas ifup, vous avez probablement un problème de configuration. Le ifconfig eth0 upfait d'en parler manuellement n'est probablement pas la bonne chose dans ce cas. Sur Debian, il ifupy a un exécutable binaire, vous devriez donc probablement le stracetrouver pour savoir où il se bloque:

$ sudo strace -e open ifup eth0

Cela vous indiquera quels fichiers ifups’ouvrent pendant que cela fonctionne, ce qui pourrait vous aider à comprendre le problème.

Sur d’autres systèmes (par exemple, RHEL et ses dérivés), il ifups’agit d’un script shell, il est donc beaucoup plus facile de déboguer:

# sh -x `which ifup` eth0

L'exécution d'un script shell avec lui sh -xpermet d'imprimer chaque ligne exécutée, ce qui vous permet de suivre l'exécution.

Warren Young
la source
Une réponse à craquer, mais Marco a trouvé le problème. J'ai essayé de sudo ifconfig eth0 down && sudo ifconfig eth0 upfaire basculer l'interface de haut en bas, mais j'essayais de déclencher manuellement un script if-up que j'ai écrit et qui ne le faisait pas. Après la mise à jour de mon fichier / etc / network / run / ifstate, ifdown / up fonctionne maintenant. Merci pour votre information cependant! :)
Jwbensley
Oublié de dire, bonne idée avec l'option -x! Merci!
Jwbensley
1
ifdownest un programme de haut niveau qui fait beaucoup de choses dont vous pourriez avoir besoin. ifconfig eth0 downest plus portable et peut toujours être exécuté, mais il n’effectue pas les tâches de nettoyage qui ifdownpourraient s’effectuer .
Gilles 'SO- arrête d'être méchant'
Je ne veux pas suggérer que vous utilisez ifconfigtout le temps, en évitant ifup/down. Je l'ai suggéré seulement comme une étape de dépannage. Si je comprends bien le problème, il s’est avéré être le résultat d’une utilisation ifconfigau lieu de ifup/down, ce qui confond les mécanismes de haut niveau. Mais je ne le savais pas quand j'ai posté ma réponse.
Warren Young
20

J'ai déjà vu cela auparavant quand EthX n'était pas correctement configuré dans /etc/network/interfaces. Cela nécessite quelque chose comme: -

auto eth0
   iface eth0 inet dhcp

Même avec un /etc/network/interfacesfichier mal configuré , vous pouvez toujours supprimer eth0 avec:

$ sudo ip link set eth0 down
Alex Leach
la source
C'est exactement ce qui m'est arrivé. J'ai oublié de l'ajouter à auto. Merci.
Mike
2

Pour quiconque est aux prises avec ce problème:

J'ai vérifié le fichier ifstate. "Nom-interface" dans / run / network.

Comme il était vide, j'ai inclus "nom-interface" (eth0) dans le fichier ifstate. "Nom-interface" sur / run / network.

utilisateur9885365
la source
1

Ajouter eth0=eth0à /run/network/ifstate. Cela a fonctionné pour moi

Jeroen
la source
0

Ce que j'ai trouvé m'a aidé à appeler la rmcommande pour supprimer le fichier de verrouillage dans/run/network/

Faites ls -laet vous devriez voir un .ifstatefichier caché ou quelque chose sous ce nom.

Supprimez cela et essayez ensuite: ifdown && ifup

Si vous êtes inquiet, vous risquez de casser quelque chose, faites simplement une copie de ce fichier en dehors du répertoire et supprimez celui qui se trouve à l'intérieur du répertoire.

Hunter Lowe
la source