我无法获得这台笔记本电脑,克拉普托普,无法使用接口连接到 Internet eth0
,但它可以使用接口进行连接wlan0
。管理的 NetworkManagereth0
在尝试查找 DHCP 服务器(作为我的家庭路由器存在)时超时192.168.0.1
。
另一台笔记本电脑,德尔蒂克,可以使用相同的以太网电缆正常连接和协商 DHCP。
在用Wireshark监控eth0
两台机器后,我发现德尔蒂克192.168.0.1
在发送广播后与 协商了一个 IP 地址255.255.255.255
,但是克拉普托普发送了四次 DHCP 广播,但没有收到任何回复。
似乎克拉普托普是可以的,因为它可以检测到我插入电线的时间,但为什么不能克拉普托普收到任何数据包吗?
是克拉普托普缺少驱动程序?我该如何进一步排除故障?
我在下面提供了我的设置的详细信息:
日志和命令输出
网络管理器(来自/var/log/syslog
)
lshw
Wireshark:DHCP 数据包
注意这个超级用户问题无关,因为它谈论的是无法连接到wlan0
。
答案1
可能的原因是路由器上的以太网端口有缺陷。 直到 2015 年 4 月 30 日我才找到支持这一观点的证据,而直到 2015 年 8 月 10 日我才意识到这一点。
我应该做什么
一些额外的故障排除步骤:
我应该运行一下
sudo ethtool -S eth0
看看网络接口控制器(NIC)统计信息中是否存在任何错误。由于我能够通过以太网发送但不能接收,所以我可能看到
rx_crc_errors
每次接收尝试时统计增量之类的内容。我应该尝试将以太网电缆的路由器端插入不同的路由器端口。
当然,我将以太网电缆的计算机端插入了两台不同的计算机,但这让我相信一台计算机(克拉普托普) 是有缺陷的,因为另一个 (德尔蒂克) 能够连接到路由器。
在工作电脑上,德尔蒂克,我应该跑去
sudo ethtool eth0
看看是否建立了良好的联系。德尔蒂克具有 1Gbps 的容量,路由器也是如此,因此
ethtool
应该显示Speed: 1000Mb/s
和Duplex: Full
。后来,在 2015 年 4 月 30 日,我发现有缺陷的端口会导致ethtool
返回不同的、更令人担忧的值。我应该运行速度基准测试来测试以太网链路,以确保我获得了预期的全部性能德尔蒂克和路由器。
如果我做过网速测试,我可能会看到 1MiB/s 的传输速度,这表明存在链接问题,即使在德尔蒂克。
为了排除电缆问题,我应该尝试使用不同的千兆以太网电缆。
事实证明电缆没有问题,但无论如何,这是一个很好的故障排除步骤。
证据与解释
2015 年 4 月 30 日,我注意到我的值得信赖的rsync -avzHXShPs
命令最大速度约为 1MiB/s。我通过监控iftop
和尝试在另一台计算机上进行互联网下载来排除其他流量,这台计算机的数据传输速度快了十倍。
我使用以下命令检查了网络链接ethtool
:
root@node51 [~]# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: No
Speed: 10Mb/s
Duplex: Half
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
啊哈!半双工 10Mbps。这不正常,而且非常慢。作为参考,这是预期的(良好)输出,通过路由器上的交换以太网端口捕获:
root@node51 [~]# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
计算机和路由器尝试谈判 速度越来越慢直到建立可靠的协议。最慢的协议 10BASE-T 半双工被选中。
强制使用完整的 1000BASE-T 全双工 ( ethtool -s eth0 speed 1000 duplex full
) 预期性能导致受影响的计算机脱离网络,这强烈表明路由器不想在更快的链路上通信。
克拉普托普首先限制为 100Mbps 全双工,可能没有机会协商 10Mbps 半双工。
现在我已经确定了坏的以太网端口,我需要做的就是不使用该端口或购买一个新的路由器。
2015年7月27日,我安装了新的路由器后退回了有缺陷的路由器。
今天,克拉普托普在具有 100Mbps 全双工以太网连接的容错网络绑定上运行:
root@node52 [~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: wlan0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 3
Permanent HW addr: 00:1f:3a:55:dc:0d
Slave queue ID: 0
Slave Interface: eth0
MII Status: up
Speed: 100 Mbps
Duplex: full
Link Failure Count: 3
Permanent HW addr: 00:1e:68:32:4a:b5
Slave queue ID: 0