我的 HP Proliant DL 360 G4p 服务器出现了一个奇怪的问题。它有两个千兆以太网接口,但我只能打开其中一个。这让我开始感到害怕,这就是我来这里的原因。我正在运行 x64 ubuntu 11.10 服务器版本。
lshw -c network 显示第二个接口被禁用。我不知道为什么以及如何启用它。
$ sudo lshw -c network
*-network:0
description: Ethernet interface
product: NetXtreme BCM5704 Gigabit Ethernet
vendor: Broadcom Corporation
physical id: 2
bus info: pci@0000:02:02.0
logical name: eth0
version: 10
serial: 00:18:71:e3:6d:26
size: 100Mbit/s
capacity: 1Gbit/s
width: 64 bits
clock: 66MHz
capabilities: pcix pm vpd msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=tg3 driverversion=3.119 duplex=full firmware=5704-v3.27b, ASFIPMIc v2.36 ip=10.48.8.x latency=64 link=yes mingnt=64 multicast=yes port=twisted pair speed=100Mbit/s
resources: irq:25 memory:fdf70000-fdf7ffff
*-network:1 DISABLED
description: Ethernet interface
product: NetXtreme BCM5704 Gigabit Ethernet
vendor: Broadcom Corporation
physical id: 2.1
bus info: pci@0000:02:02.1
logical name: eth1
version: 10
serial: 00:18:71:e3:6d:25
capacity: 1Gbit/s
width: 64 bits
clock: 66MHz
capabilities: pcix pm vpd msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=tg3 driverversion=3.119 firmware=5704-v3.27b latency=64 link=no mingnt=64 multicast=yes port=twisted pair
resources: irq:26 memory:fdf60000-fdf6ffff
如果我尝试 ifup eth1,那么我会得到
$ sudo ifup eth1
Ignoring unknown interface eth1=eth1.
我猜想这就是 /etc/network/interfaces 中没有列出 eth1 时发生的情况。但是当我添加 eth1 的配置时,我仍然无法 ifup。
$ sudo ifup eth1
RTNETLINK answers: File exists
Failed to bring up eth1.
I've also tried ifconfig eth1 up but without any result.
为了清楚起见,我添加了一个屏蔽版本的 /etc/network/interfaces。但我不认为这是问题的原因。
$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 10.48.8.x
netmask 255.255.255.y
network 10.48.8.z
broadcast 10.48.8.t
gateway 10.48.8.u
auto eth1
iface eth1 inet static
address 193.190.253.x
netmask 255.255.255.y
network 193.190.253.z
broadcast 193.190.253.t
gateway 193.190.253.u
我真的需要一些帮助来解决这个问题。这让我抓狂不已。谢谢。
答案1
我找到了解决方案。/etc/network/interfaces 中定义了两个网关,但您根本就不能拥有多个网关。这毫无意义。
网关是您向其发送所有流量的 IP。如果您有两个网关,则您的路由表将为目标 0.0.0.0 提供双重条目,系统无法处理这种情况。双重路由是导致 RTNETLINK 回答“文件存在”的原因,这意味着 0.0.0.0 已经有路由。
我已经注释掉其中一个网关,现在我可以 ifup eth0 和 eth1。
tl;dr 删除网关条目直到只剩下一个。
答案2
由此关联我学到了很多东西,它帮助我改正了错误。
只需将以下行添加到 eth0 配置下的 /etc/network/interfaces 中:
预先设置 ip 地址 del 192.168.1.254/24 dev eth0 2> /dev/null || true
这不是最完美的解决方案,但至少它有效。感谢 grapsus.net 和 google 的所有者。
答案3
输出的第二部分的中间是link=no
。
我怀疑你的电缆松了或者坏了。也可能是一端的网卡坏了。
答案4
如果您只想启动一个,请删除auto ethX
另一个的指定。它表示接口应自动启动。如果您遇到一个接口的问题,手动启动它可能有帮助,直到您解决问题为止。
如果两个接口都处于活动状态,您可能还想在接口上设置不应是默认路由的路由度量。
dmesg
尝试启动接口后, 您可能需要检查输出。这应该会显示生成的任何内核消息,并可能使诊断更容易。mii-tool
如果可用,则可以提供有关接口的一些有用信息。