Je ne peux pas ifdown
une 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
Comme demandé par marco:
user@box:/etc/network/$ cat /run/network/ifstate
lo=lo
eth1=eth1
Vérifiez le contenu du fichier /run/network/ifstate
. ifup
et ifdown
utilisent ce fichier pour noter quelles interfaces réseau peuvent être montées et descendues. Ainsi, ifup
peut être facilement confondu lorsque d'autres outils de mise en réseau sont utilisés pour faire apparaître une interface (par exemple ifconfig
).
De homme ifup
Le programme enregistre 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 à l'aide d'ifup et déconfigurée ultérieurement à l'aide de
ifconfig
sera toujours enregistrée comme étant active. Pour résoudre ce problème, vous pouvez utiliser le--force
option pour forcerifup
ouifdown
à exécuter des commandes de configuration ou de déconfiguration malgré ce qu'il considère être l'état actuel de l'interface.
ifdown
est un programme de haut niveau qui fait beaucoup de choses dont vous pourriez ne pas avoir besoin. De plus, il n'est pas disponible partout. La méthode la plus portable pourrait fonctionner pour vous:
$ Sudo ifconfig eth0 down
Si vous ne pouvez pas le ifup
, vous avez probablement un problème de configuration. L'apporter manuellement avec ifconfig eth0 up
n'est probablement pas la bonne chose dans ce cas. Sur Debian, ifup
est un exécutable binaire, vous devrez donc probablement le strace
pour savoir où il se bloque:
$ Sudo strace -e open ifup eth0
Cela vous indiquera quels fichiers ifup
ouvre pendant son fonctionnement, ce qui pourrait vous indiquer le problème.
Sur d'autres systèmes (par exemple RHEL et dérivés) ifup
est un script Shell, il est donc beaucoup plus facile à déboguer:
# sh -x `which ifup` eth0
Exécution d'un script Shell avec sh -x
le fait imprimer chaque ligne qu'il exécute, vous pouvez donc suivre l'exécution.
J'ai déjà vu cela 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 _ incorrectement configuré /etc/network/interfaces
fichier, vous pouvez toujours faire descendre eth0 avec:
$ Sudo ip link set eth0 down
Pour toute personne aux prises avec ce problème:
J'ai vérifié le fichier ifstate. "Nom-interface" dans/run/network.
Il était vide, j'ai donc inclus "interface-name" (eth0) dans ifstate. Fichier "interface-name" dans/run/network.
Ajouter eth0=eth0
à /run/network/ifstate
. Cela a fonctionné pour moi
Ce que j'ai trouvé m'a aidé, c'est d'appeler la commande rm
pour supprimer le fichier de verrouillage dans /run/network/
Faites ls -la
Et vous devriez voir un fichier caché .ifstate
Ou quelque chose sous ce nom.
Supprimez cela et essayez ensuite: ifdown && ifup
Si vous avez peur de casser quelque chose, faites simplement une copie de ce fichier à l'extérieur du répertoire et supprimez celui à l'intérieur du répertoire.