我正在使用一台旧电脑作为家庭服务器/防火墙,使用的是基于 Linux 的发行版 (Mandriva)。最初,它有两个 NIC,eth0
一个是主板适配器,另一个eth1
是 10/100 PCI 网卡。
eth0
连接到其他设备所连接的内部交换机,并eth1
连接到互联网机顶盒路由器。
随着时间的推移和新用途的出现,我添加了两个千兆 PCI 网卡(DLink DGE-528T),因此它们变成了eth2
和eth3
,其功能与它们所替换的卡相同。也就是说,eth2
连接到内部交换机并eth3
连接到路由器。
一切都运行良好,直到几周前,我注意到我失去了连接eth3
,查看卡本身,电缆插入插头时不再发出“咔嗒”声。事实证明,电缆受到了一些滥用,导致 RJ45 连接器弯曲,使其变得不可靠。
因此,我决定更换eth3
一张新的千兆卡(TP-LINK TG-3269),该卡似乎没有如此脆弱的连接器。这张卡因此被命名为“千兆卡”,eth4
并eth3
已从服务器上完全移除。
但是,我似乎无法让新卡与路由器配合使用,插入路由器后,背面的 LED 灯从不亮。果然,ifplugd
和ethtool
都表明未建立链接。作为临时解决方法,我重新使用,eth1
以便服务器仍能继续发挥作用,尽管处于降级模式。
我以为这张卡已经“完蛋了”,但我尝试了一些东西,得到了一些奇怪的结果,总结如下:
- 连接
eth4
到内部交换机:LED 亮起,以 1000Mb 建立连接 - 连接
eth4
到eth0
:LED 亮起,连接以 100Mb 建立 - 连接
eth2
到路由器:LED 亮起,以 1000Mb 建立连接
因此,看起来路由器不想与我的eth4
卡对话,原因我也说不清。
查看了与我的问题有些相似的各种帖子,我发现了这个mii-diag
工具,并首先在没有电缆的情况下运行它,然后在插入路由器电缆的情况下运行它。结果如下:
[obones@server ~]$ sudo mii-diag eth4
Basic registers of MII PHY #32: 1000 7949 001c c913 0de1 0000 0004 2001.
Basic mode control register 0x1000: Auto-negotiation enabled.
Basic mode status register 0x7949 ... 7949.
Link status: not established.
End of basic transceiver information.
[obones@server ~]$ sudo mii-diag eth4
Basic registers of MII PHY #32: 1000 7949 001c c913 0de1 c5e1 000f 2001.
The autonegotiated capability is 01e0.
The autonegotiated media type is 100baseTx-FD.
Basic mode control register 0x1000: Auto-negotiation enabled.
Basic mode status register 0x7949 ... 7949.
Link status: not established.
Your link partner advertised c5e1: Flow-control 100baseTx-FD 100baseTx 10baseT-FD 10baseT, w/ 802.3X flow control.
End of basic transceiver information.
我知道这mii-diag
不是千兆位感知的,但我发现有趣的是,在第二种情况下,它检测到存在链接伙伴,但链接尚未建立。
这可能是什么原因?我下一步该尝试什么?
根据要求,这里还有一些额外的细节。
路由器确实支持千兆,在eth3
连接器出现故障之前,它以该速度运行良好。连接到时eth2
,它以千兆速度运行良好。
dmesg -T | grep eth4
没有输出任何内容
以下是 lspci 的输出:
00:0a.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet [10ec:8169] (rev 10)
Subsystem: Realtek Semiconductor Co., Ltd. RTL-8169 Gigabit Ethernet [10ec:8169]
00:0b.0 Ethernet controller [0200]: D-Link System Inc DGE-528T Gigabit Ethernet Adapter [1186:4300] (rev 10)
Subsystem: D-Link System Inc DGE-528T Gigabit Ethernet Adapter [1186:4300]
00:0d.0 Ethernet controller [0200]: Intel Corporation 82557/8/9/0/1 Ethernet Pro 100 [8086:1229] (rev 08)
00:13.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ [10ec:8139] (rev 10)
还有来自 lshw 的:
*-network:0
description: Ethernet interface
product: RTL-8169 Gigabit Ethernet
vendor: Realtek Semiconductor Co., Ltd.
physical id: a
bus info: pci@0000:00:0a.0
logical name: eth4
version: 10
serial: 14:cc:20:05:38:22
size: 10MB/s
capacity: 1GB/s
width: 32 bits
clock: 66MHz
capabilities: pm bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=half latency=64 link=no maxlatency=64 mingnt=32 multicast=yes port=MII speed=10MB/s
resources: irq:18 ioport:a000(size=256) memory:f7109000-f71090ff memory:c0180000-c019ffff(prefetchable)
*-network:1
description: Ethernet interface
product: DGE-528T Gigabit Ethernet Adapter
vendor: D-Link System Inc
physical id: b
bus info: pci@0000:00:0b.0
logical name: eth2
version: 10
serial: 1c:7e:e5:26:54:a0
size: 1GB/s
capacity: 1GB/s
width: 32 bits
clock: 66MHz
capabilities: pm bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd 1000bt 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=r8169 driverversion=2.3LK-NAPI duplex=full ip=10.10.10.254 latency=64 link=yes maxlatency=64 mingnt=32 multicast=yes port=MII speed=1GB/s
resources: irq:19 ioport:a400(size=256) memory:f710b000-f710b0ff memory:c01a0000-c01bffff(prefetchable)
*-network:2
description: Ethernet interface
product: 82557/8/9/0/1 Ethernet Pro 100
vendor: Intel Corporation
physical id: d
bus info: pci@0000:00:0d.0
logical name: eth1
version: 08
serial: 00:90:27:ca:ba:e8
size: 100MB/s
capacity: 100MB/s
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list rom ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e100 driverversion=3.5.24-k2-NAPI duplex=full firmware=N/A ip=192.168.1.253 latency=64 link=yes maxlatency=56 mingnt=8 multicast=yes port=MII speed=100MB/s
resources: irq:17 memory:f710a000-f710afff ioport:ac00(size=64) memory:f7000000-f70fffff memory:c0000000-c00fffff(prefetchable)
*-network:3
description: Ethernet interface
product: RTL-8139/8139C/8139C+
vendor: Realtek Semiconductor Co., Ltd.
physical id: 13
bus info: pci@0000:00:13.0
logical name: eth0
version: 10
serial: 00:14:85:c0:ea:2b
size: 10MB/s
capacity: 100MB/s
width: 32 bits
clock: 33MHz
capabilities: pm bus_master cap_list ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=8139too driverversion=0.9.28 duplex=half ip=10.10.10.250 latency=64 link=no maxlatency=64 mingnt=32 multicast=yes port=MII speed=10MB/s
resources: irq:18 ioport:e000(size=256) memory:f710d000-f710d0ff
您认为强制将eth4
卡设置为千兆位而不进行自动协商可以解决这个问题吗?如果我没记错的话,命令应该是这样的:
ethtool -s eth4 duplex full speed 1000 autoneg off
我今晚会尝试一下,但是为什么一开始就不起作用呢?
答案1
好吧,我现在知道为什么eth4
无法建立链接,在摆弄了一会儿电缆后我才明白过来。应该知道的是,即使是在家里,我也使用配线架来分派各种连接。这意味着服务器通过这种布置连接到路由器:
server <--> cable <--> plug <--> wall <--> plug <--> patch bay <--> plug <--> router
在我最初的消息中,我说eth2
将以 1G 的速度连接到路由器,当时这是正确的。
但我本周再次尝试,这种情况再也没有发生,这让我立即意识到我遇到的最初问题eth3
是电缆滥用造成的。果然,使用墙上的另一个插头连接到接线板后,可以以eth4
1G 的速度正确连接到路由器。
所以,最终,它与硬件有关,只是不是我期望的那种硬件。
非常感谢所有对我的问题发表评论的人,我从你们身上学到了不少技巧,很抱歉浪费了你们的时间,我应该更彻底地检查电缆。