各位,我的一台生产服务器(Debian Lenny)遇到了一个非常奇怪的问题——重启后网络接口(eth0、eth1)处于关闭状态。
看起来服务器上安装了基于 Intel 的网络适配器,lspci 列出如下:
以太网控制器:Intel Corporation Device 10c9(rev 01)
负责此适配器的内核驱动程序是“igb”。 lsmod 显示“igb”模块存在。 我尝试了“modprobe -r igb && modprobe igb”,网络接口先是消失然后出现,但它们又处于 DOWN 状态。
可能出了什么问题?它以前运行良好。如何修复?
我使用的是 KVM IP,无法真正从 Java Applet 复制完整的 dmesg 输出。运行“dmesg | grep eth”没有显示任何异常,以下是其输出:
[ 2.137021] igb 0000:05:00.0: eth0: (PCIe:2.5Gb/s:Width x4) 00:25:90:1d:3e:c2
[ 2.137100] igb 0000:05:00.0: eth0: PBA No: 0100ff-0ff
[ 2.320508] igb 0000:05:00.1: eth1: (PCIe:2.5Gb/s:Width x4) 00:25:90:1d:3e:c3
[ 2.320587] igb 0000:05:00.1: eth1: PBA No: 0100ff-0ff
更新:有关服务器的一些附加信息。我正在使用 OpenVZ 修补版本的内核,但我认为这与此无关。我尝试使用未修补版本的内核进行启动,但没有任何变化,接口仍然处于关闭状态。
但这不是全部。甚至“lo”接口也处于关闭状态。lsmod 显示 loop 模块正在运行。我尝试了“modprobe -r loop && modprobe loop”,但 loop 设备仍然处于关闭状态。
答案1
我找到了这个问题的答案。
重启后我的网络处于 DOWN 状态,因为... /sbin/ifup 丢失。我尝试使用 aptitude 从“测试”存储库安装一些软件包,但似乎删除了“ifupdown”软件包!如果 /sbin/ifup 丢失,/etc/init.d/networking 会悄悄退出。这就是我无法手动启用网络接口的原因。
我是这样解决这个奇怪情况的。首先,我通过手动运行“ifconfig up lo”、“ifconfig up eth0”启用网络。其次,我通过运行“ip a add ...”为这些接口分配地址。第三,我使用“ip route add ...”设置默认路由。最后,我使用 apt-get 重新安装了“ifupdown”包。