Kann nicht ifdown eth0 (Hauptschnittstelle)

51

Ich kann ifdownunter Debian 6.0.5 keine Benutzeroberfläche erstellen:

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

Wie von Marco gefordert:

user@box:/etc/network/$ cat /run/network/ifstate 
lo=lo
eth1=eth1
jwbensley
quelle
4
Was ist /run/network/ifstateenthalten?
Marco
Ich habe meine Frage mit dem Inhalt dieser Datei aktualisiert, eth0 ist nicht dabei. Ein kurzes "Google" teilt mir die Bedeutung dieser Datei mit (da ich vorher noch nicht darauf zugegriffen habe). Ich glaube, ich kann sehen, wo das Problem liegt :)
jwbensley
@Marco; Dies hat in der Tat mein Problem behoben, wenn Sie dies als Antwort posten, kann ich es als korrekt markieren :)
jwbensley

Antworten:

55

Überprüfen Sie den Inhalt der Datei /run/network/ifstate. ifupund ifdownverwenden Sie diese Datei, um zu notieren, welche Netzwerkschnittstellen hoch- und heruntergefahren werden können. Daher ifupkann es leicht zu Verwechslungen kommen, wenn andere Netzwerk-Tools zum Aufrufen einer Schnittstelle verwendet werden (z ifconfig. B. ).

Vom Mann ifup

Das Programm zeichnet auf, ob die Netzwerkschnittstellen aktiv oder inaktiv sind. In Ausnahmefällen können diese Datensätze mit den tatsächlichen Zuständen der Schnittstellen inkonsistent werden. Beispielsweise wird eine Schnittstelle, die mit ifup aufgerufen und später mit dekonfiguriert wurde, ifconfigweiterhin als aktiv aufgezeichnet. Um dies zu beheben, können Sie die --forceOption verwenden, um Konfigurations- oder Dekonfigurationsbefehle zu erzwingen ifup oder ifdownauszuführen, ungeachtet des aktuellen Status der Schnittstelle.

Marco
quelle
8
Um diese Antwort zu ergänzen, musste ich hinzufügen eth0=eth0, /run/network/ifstateum die Schnittstelle zu erkennen und richtig zu konfigurieren. Diese Antwort hat mir geholfen, auf die Datei zu verweisen, hat aber aufgehört, diese Hinzufügung vorzuschlagen, was mein ähnliches Problem löste.
David Parks
1
@DavidParks Sind Sie sicher, dass die Schnittstelle als autoin markiert ist /etc/network/interfaces? Es sollte angezeigt werden, /run/network/ifstateohne dass die Datei manuell geändert werden muss.
Marco
1
--forcewar die Antwort für mich; Es stellte sich heraus ifup, dass die Benutzeroberfläche wegen eines fehlerhaften Befehls nicht zuerst aufgerufen wurde /etc/network/if-pre-up.d. Glück, dass ich überhaupt ein Netzwerk habe!
Sanmai
32

ifdownist ein High-Level-Programm, das viele Dinge erledigt, die Sie möglicherweise nicht benötigen. Außerdem ist es nicht überall verfügbar. Der portablere Weg könnte für Sie funktionieren:

$ sudo ifconfig eth0 down

Wenn Sie es dann nicht ifupkönnen, haben Sie wahrscheinlich ein Konfigurationsproblem. Manuell aufzurufen ifconfig eth0 upist in diesem Fall wahrscheinlich nicht das Richtige. Unter Debian ifupist es eine ausführbare Binärdatei, daher müssten Sie wahrscheinlich straceherausfinden, wo es aufgehängt wird:

$ sudo strace -e open ifup eth0

Das wird Ihnen sagen, welche Dateien ifupgeöffnet werden, während es funktioniert, was Sie in das Problem verweisen könnte.

Auf anderen Systemen (z. B. RHEL und Derivaten) ifupist ein Shell-Skript vorhanden, daher ist das Debuggen wesentlich einfacher:

# sh -x `which ifup` eth0

Wenn Sie ein Shell-Skript mit sh -xausführen, wird jede Zeile, die ausgeführt wird, gedruckt, sodass Sie die Ausführung verfolgen können.

Warren Young
quelle
Eine knackige Antwort, aber Marco hat das Problem gefunden. Ich habe versucht sudo ifconfig eth0 down && sudo ifconfig eth0 up, die Benutzeroberfläche nach oben und unten zu klappen, aber ich habe versucht, manuell ein If-Up-Skript auszulösen, das ich geschrieben habe, und das hat es nicht getan. Nach dem Aktualisieren meiner / etc / network / run / ifstate-Datei funktioniert ifdown / up jetzt. Vielen Dank für deine Infos! :)
jwbensley
Ich habe vergessen zu sagen, tolle Idee mit der Option -x! Vielen Dank!
Jwbensley
1
ifdownist ein High-Level-Programm, das eine Menge Dinge tut, die Sie vielleicht brauchen. ifconfig eth0 downist portabler und kann immer ausgeführt werden, führt jedoch ifdownmöglicherweise keine Bereinigungsaufgaben aus .
Gilles 'SO- hör auf böse zu sein'
Ich will nicht vorschlagen, dass Sie die ifconfigganze Zeit verwenden, um zu vermeiden ifup/down. Ich schlug es nur zur Fehlerbehebung vor. Wie ich das Problem verstehe, stellte sich heraus, dass es ein Ergebnis der Verwendung von ifconfigstatt war ifup/down, wodurch die Mechanismen auf hoher Ebene verwirrt wurden. Aber das wusste ich nicht, als ich meine Antwort veröffentlichte.
Warren Young
20

Ich habe das schon einmal gesehen, als ethX nicht richtig konfiguriert war /etc/network/interfaces. Das braucht so etwas wie: -

auto eth0
   iface eth0 inet dhcp

Selbst mit einer nicht /etc/network/interfacesrichtig konfigurierten Datei können Sie eth0 mit folgendem Befehl beenden:

$ sudo ip link set eth0 down
Alex Leach
quelle
Genau das ist mir passiert. Ich habe vergessen, es anzuhängen auto. Vielen Dank.
Mike
2

Für alle, die mit diesem Problem zu kämpfen haben:

Ich habe die Datei ifstate. "Interface-name" unter / run / network überprüft.

Es war leer, also habe ich "Schnittstellenname" (eth0) in die Datei "Schnittstellenname" unter / run / network eingefügt.

user9885365
quelle
1

Hinzufügen eth0=eth0zu /run/network/ifstate. Das hat bei mir funktioniert

Jeroen
quelle
0

Was ich gefunden habe, hat mir geholfen, den rmBefehl zum Entfernen der darin enthaltenen Sperrdatei aufzurufen/run/network/

Tun ls -laund Sie sollten eine versteckte .ifstateDatei oder etwas unter diesem Namen sehen.

Entfernen Sie das und versuchen Sie dann: ifdown && ifup

Wenn Sie befürchten, dass etwas kaputt geht, erstellen Sie einfach eine Kopie dieser Datei außerhalb des Verzeichnisses und entfernen Sie die Datei innerhalb des Verzeichnisses.

Hunter Lowe
quelle