Debian 6.0.5のインターフェースをifdown
できません:
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
ファイルの内容を確認してください/run/network/ifstate
。 ifup
およびifdown
は、このファイルを使用して、起動または停止できるネットワークインターフェイスを記録します。したがって、ifup
は、他のネットワークツールを使用してインターフェイスを起動すると混乱しやすくなります(例:ifconfig
)。
から man ifup
プログラムは、ネットワークインターフェイスがアップかダウンかを記録します。例外的な状況下では、これらのレコードはインターフェースの実際の状態と一致しなくなる可能性があります。たとえば、ifupを使用して起動され、後で
ifconfig
を使用して構成解除されたインターフェイスは、引き続きupとして記録されます。これを修正するには、--force
オプションは、インターフェースの現在の状態をどのように考慮していても、強制的にifup
またはifdown
に構成または構成解除コマンドを実行させます。
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
を使用してシェルスクリプトを実行すると、実行するすべての行が出力されるため、実行を追跡できます。
これは、ethXが/etc/network/interfaces
で適切に構成されていなかったときに以前に見たことがあります。これは次のようなものが必要です:-
auto eth0
iface eth0 inet dhcp
不適切に構成された/etc/network/interfaces
ファイルを使用しても、次のコマンドでeth0を停止できます。
$ Sudo ip link set eth0 down
この問題に苦しんでいる人のために:
/ run/networkにあるifstate。 "interface-name"ファイルを確認しました。
空だったので、/ run/networkにあるifstate。 "interface-name"ファイルに "interface-name"(eth0)を含めました。
追加 eth0=eth0
〜/run/network/ifstate
。これは私のために働いた
私が見つけたのは、rm
コマンドを呼び出して/run/network/
内のロックファイルを削除することです
ls -la
を実行すると、非表示の.ifstate
ファイルまたはその名前で何かが表示されます。
それを削除してから試してください:ifdown && ifup
心配している場合は、何かを壊して、ディレクトリの外にあるファイルのコピーを作成し、ディレクトリ内のファイルを削除してください。