我已经有一段时间没有使用我的网卡了,现在它根本就不能用了。我可以手动为其分配 IP 地址(sudo ip addr add 192.168.2.155/24 broadcast 192.168.2.255 dev eth0
例如),但我什至无法 ping 同一网络中的主机。
在我看来,非常可疑的是 ethtool ( ethtool -S eth0
) 显示一些传输的数据包,但接收的字节和数据包始终为零。显然有什么问题。
这是我尝试过的事情的列表
- 重新启动
- 尝试过其他电缆
- 尝试了其他端口(这台笔记本电脑的扩展坞上有一个端口,笔记本电脑本身有一个端口;它们在内部连接到同一网卡)
- 尝试了其他交换机(交换机 A:8 端口 GbE,交换机 B:5 端口 100 MbE)
- 将内核和 linux 固件降级到旧版本(分别为 3.13 和 2013 年中)
- 启动最新的 arch linux live media ;没用,症状一样
启动 Ubuntu 14.04.1 live 媒体;没用,症状一样
在上面提到的每个设置中,我尝试使用 wicd 通过手动分配 IP 地址来访问网络。一开始我也尝试过 NetworkManager,结果相同
此时我怀疑网卡可能已损坏,如果是这样,我该如何验证或排除它?
这是有问题的网卡 (Thinkpad X200):
00:19.0 Ethernet controller: Intel Corporation 82567LM Gigabit Network Connection (rev 03)
Subsystem: Lenovo Device 20ee
Flags: bus master, fast devsel, latency 0, IRQ 44
Memory at f2600000 (32-bit, non-prefetchable) [size=128K]
Memory at f2625000 (32-bit, non-prefetchable) [size=4K]
I/O ports at 1840 [size=32]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [e0] PCI Advanced Features
Kernel driver in use: e1000e
Kernel modules: e1000e
ethtool -S eth0:
NIC statistics:
rx_packets: 0
tx_packets: 90
rx_bytes: 0
tx_bytes: 8113
rx_broadcast: 0
tx_broadcast: 70
rx_multicast: 0
tx_multicast: 20
rx_errors: 0
tx_errors: 0
tx_dropped: 0
multicast: 0
collisions: 0
rx_length_errors: 0
rx_over_errors: 0
rx_crc_errors: 0
rx_frame_errors: 0
rx_no_buffer_count: 0
rx_missed_errors: 0
tx_aborted_errors: 0
tx_carrier_errors: 0
tx_fifo_errors: 0
tx_heartbeat_errors: 0
tx_window_errors: 0
tx_abort_late_coll: 0
tx_deferred_ok: 0
tx_single_coll_ok: 0
tx_multi_coll_ok: 0
tx_timeout_count: 0
tx_restart_queue: 0
rx_long_length_errors: 0
rx_short_length_errors: 0
rx_align_errors: 0
tx_tcp_seg_good: 0
tx_tcp_seg_failed: 0
rx_flow_control_xon: 0
rx_flow_control_xoff: 0
tx_flow_control_xon: 0
tx_flow_control_xoff: 0
rx_csum_offload_good: 0
rx_csum_offload_errors: 0
rx_header_split: 0
alloc_rx_buff_failed: 0
tx_smbus: 0
rx_smbus: 0
dropped_smbus: 0
rx_dma_failed: 0
tx_dma_failed: 0
rx_hwtstamp_cleared: 0
uncorr_ecc_errors: 0
corr_ecc_errors: 0
使用 tcpdump -i eth0 我根本看不到任何流量。
答案1
在我看来,到目前为止,您的测试已经非常明确地证明,至少问题网卡的接收端无法正常工作。但如果您想进行更多测试,这里有一些建议:
检查笔记本电脑的扩展坞连接器:由于带扩展坞和不带扩展坞都使用相同的网卡,这意味着笔记本电脑的网络插座是通过扩展坞连接器接线的。如果扩展坞连接器损坏或被导电物短路,即使扩展坞未使用,也可能会导致 NIC 接收电路短路。
检查网络插座(笔记本电脑和扩展坞):插座中的所有触点都状态良好吗?有什么东西可能会导致短路吗?
使用已知良好的电缆将网络适配器连接到可以从中获取连接状态信息的设备:托管交换机或另一台具有自动 MDIX 功能的网络接口(即大多数现代千兆位 NIC)的计算机应该是良好的。手动分配 IP 地址。
用于ethtool eth0
查看您的网络接口是否认为链路已启动。另一端同意吗?如果测试伙伴没有看到任何链接,则网卡肯定出现故障。
尝试从有问题的网卡传输数据:另一端是否收到任何内容? (在托管交换机中,该端口的流量计数器应该增加;对于另一台主机,您还可以监视统计数据或仅使用tcpdump
,wireshark
或类似的方法来监视所有传入流量。)如果测试伙伴没有看到流量或其接收错误计数器正在增加,问题 NIC 的传输端(也)出现故障。
答案2
连接到有线或无线网络。dhcpcd
启动时自动加载。
dhcpcd.service
默认情况下为所有接口启动。如果手动配置则停止有线网络。
systemctl stop dhcpcd.service
用于连接到无线网络
wifi-menu wlo1
作为wlo1
无线接口。
ip link
查看接口,或绑定dhcpcd
到以太网使用
systemctl start [email protected]
如果 dhcpd 启动失败,请手动启动 dhcpcd。
dhcpcd eth0
Archlinux 维基网络配置