我无法ifdown
在 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
根据马可的要求:
user@box:/etc/network/$ cat /run/network/ifstate
lo=lo
eth1=eth1
答案1
检查文件的内容/run/network/ifstate
。ifup
并ifdown
使用此文件来记录哪些网络接口可以启动和关闭。因此,ifup
当使用其他网络工具来启动界面时,很容易混淆(例如ifconfig
)。
该程序会记录网络接口是打开还是关闭。在特殊情况下,这些记录可能会与接口的真实状态不一致。例如,使用 ifup 启动并随后使用取消配置的接口
ifconfig
仍将被记录为 up。要解决此问题,您可以使用该--force
选项强制ifup
或ifdown
运行配置或取消配置命令,无论其认为接口的当前状态如何。
答案2
ifdown
是一个高级程序,它可以完成许多您可能不需要的事情。此外,它并非在所有地方都可用。更便携的方式可能适合您:
$ sudo ifconfig eth0 down
如果不能ifup
,则可能存在一些配置问题。在这种情况下,手动提出它ifconfig eth0 up
可能不是正确的选择。在 Debian 上,ifup
它是一个二进制可执行文件,因此您可能必须通过strace
它来找出它挂起的位置:
$ sudo strace -e open ifup eth0
这将告诉您ifup
在工作时正在打开哪些文件,这可能会提示您发现问题。
在其他系统(例如 RHEL 及其衍生系统)上ifup
是 shell 脚本,因此调试起来要容易得多:
# sh -x `which ifup` eth0
运行 shell 脚本会sh -x
使其打印运行的每一行,以便您可以跟踪执行情况。
答案3
我以前在 .net 中未正确配置 ethX 时见过这种情况
/etc/network/interfaces
。这需要类似的东西:-
auto eth0
iface eth0 inet dhcp
即使/etc/network/interfaces
文件配置不正确,您仍然可以使用以下命令关闭 eth0:
$ sudo ip link set eth0 down
答案4
添加。eth0=eth0
/run/network/ifstate
这对我有用