eth0をifdownできない(メインインターフェイス)


51

ifdownDebian 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

marcoの要求どおり:

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

4
何が/run/network/ifstate含まれていますか?
マルコ

このファイルの内容で質問を更新しましたが、eth0はそこにありません。迅速な「Googleは」、私は、問題がどこにあるか私が見ることができると思います:)(私は前にそれをアクセスしていないとして)私は、このファイルの意味を語っている
jwbensley

@Marco; これは確かに私の問題を解決しました。答えとしてこれを投稿すると、それを正しいとマークできます:)
jwbensley

回答:


55

ファイルの内容を確認してください/run/network/ifstateifupおよびifdownネットワークインターフェイスが上下に持ってきて、可能なノートに、このファイルを使用します。したがって、ifup他のネットワークツールを使用してインターフェイスを起動すると、混乱しやすくなります(例:)ifconfig

男ifupから

このプログラムは、ネットワークインターフェイスがアップ状態かダウン状態かを記録します。例外的な状況では、これらの記録はインターフェースの実際の状態と矛盾する可能性があります。たとえば、ifupを使用ifconfigして起動され、後で使用して構成解除されたインターフェイスは、引き続きupとして記録されます。これを修正するには、--forceオプションを使用して、インターフェイスの現在の状態が何であると見なされていても、構成コマンドまたは構成解除コマンドを強制ifup またはifdown実行できます。


8
この答えに追加eth0=eth0する/run/network/ifstateには、インターフェイスを認識して適切に構成するために追加する必要がありました。この回答は、ファイルを指すのに役立ちましたが、その追加を示唆するまでには至らず、それが私の同様の問題を解決しました。
デビッドパークス

1
@DavidParksインターフェースがのようにマークさautoれてい/etc/network/interfacesますか?/run/network/ifstateファイルを手動で変更する必要なく表示されます。
マルコ

1
--force私の答えでした。ifup失敗したコマンドのために、そもそもインターフェイスが起動しなかったことが判明しました/etc/network/if-pre-up.d。ラッキーなことにネットワークを持って!
sanmai

32

ifdownあなたが必要としないかもしれない多くのことを行う高レベルのプログラムです。さらに、どこでも利用できるわけではありません。より移植性の高い方法があなたのために働くかもしれません:

$ sudo ifconfig eth0 down

それができないifup場合は、おそらく設定に問題があります。ifconfig eth0 upその場合、手動で起動するのはおそらく適切ではありません。Debianではifup、バイナリ実行可能ファイルであるため、straceどこでハングアップするのかを把握するために、おそらくそれを行う必要があります。

$ sudo strace -e open ifup eth0

これifupにより、動作中にどのファイルが開いているかがわかり、問題の手がかりとなる可能性があります。

他のシステム(RHELや派生物など)にifupはシェルスクリプトがあるため、デバッグがはるかに簡単です。

# sh -x `which ifup` eth0

でシェルスクリプトを実行すると、実行されるsh -xすべての行が出力されるため、実行をトレースできます。


クラッキングの答えですが、マルコは問題を発見しました。私は試していたsudo ifconfig eth0 down && sudo ifconfig eth0 upインターフェイス上下フラップだろうが、私は手動で私が執筆し、そのことをやっていませんでしたされている場合はアップスクリプトをトリガしようとしていました。/ etc / network / run / ifstateファイルを更新した後、ifdown / upが動作するようになりました。情報ありがとうございます!:)
jwbensley

言い忘れていましたが、-xオプションを使用するのは素晴らしい考えです。ありがとう!
-jwbensley

1
ifdownあなたが必要とするかもしれない多くのことをする高レベルのプログラムです。ifconfig eth0 downより移植性が高く、いつでも実行できますが、実行されるifdown可能性のあるクリーンアップタスクは実行されません。
ジル「SO-悪であるのをやめる」

ifconfig避けて、常に使用することを提案するつもりはありませんifup/down。トラブルシューティングの手順としてのみ提案しました。私が問題を理解しているように、それはの代わりにを使用した結果であることが判明し、それにより高レベルのメカニズムを混乱させました。しかし、答えを投稿したとき、私はそれを知りませんでした。ifconfigifup/down
ウォーレンヤング

20

ethXがで適切に設定されていなかったときに、これを見たことがあります /etc/network/interfaces。これには次のようなものが必要です:-

auto eth0
   iface eth0 inet dhcp

/etc/network/interfacesファイルが正しく構成されていなくても、次のコマンドでeth0を停止できます。

$ sudo ip link set eth0 down

これはまさに私に起こったことです。に追加するのを忘れましたauto。ありがとう。
マイク

2

この問題に苦労している人には:

/ run / networkでファイルifstate。 "interface-name"をチェックしました。

それは空だったので、/ run / networkのifstate。 "interface-name"ファイルに "interface-name"(eth0)を含めました。



0

私が助けたのは、rmコマンドを呼び出してロックファイルを削除することです/run/network/

するとls -la.ifstateその名前の下に隠しファイルまたは何かが表示されるはずです。

それを削除してから試してください: ifdown && ifup

心配な場合は、ディレクトリ外でそのファイルのコピーを作成し、ディレクトリ内のファイルを削除するだけで、何かが壊れる可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.