在 Ubuntu 24.04 上,我的有线网卡(Realtek RTL8111/8168 系列)经常出现 几分钟就掉线一次 的情况。掉线时系统日志里充斥着 Link DOWN / Lost carrier / DHCP lease lost 的信息,IP 地址会丢失,SSH 会中断,非常影响使用。

本文记录了问题排查过程和最终解决方案。


1. 问题现象

查看 systemd-networkd 日志,可以看到类似输出:

Sep 04 14:12:32 systemd-networkd[754]: enp37s0: Link DOWN
Sep 04 14:12:32 systemd-networkd[754]: enp37s0: Lost carrier
Sep 04 14:12:32 systemd-networkd[754]: enp37s0: DHCP lease lost
Sep 04 14:12:34 systemd-networkd[754]: enp37s0: Link UP
Sep 04 14:12:38 systemd-networkd[754]: enp37s0: DHCPv4 address 192.168.1.246/24, gateway 192.168.1.1 acquired

可以看到,网卡反复掉线 → 重新获取 IP,而不是单纯 DHCP 租约到期。


2. 确认网卡型号

通过 lspci 查看网卡型号,确认是 Realtek RTL8111/8168 系列。

lspci | grep -i eth

25:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet Controller (rev 15)

3. 问题原因

Ubuntu 默认使用内核自带的r8169驱动来驱动 RTL8111/8168 网卡,但这个驱动对硬件支持不完整,常见问题包括:

  • 随机掉线(Link DOWN)
  • DHCP 租约频繁丢失
  • 省电特性 (EEE) 导致链路不稳定
  • Realtek 官方推荐使用r8168驱动,而不是r8169

4. 解决步骤

4.1 安装r8168-dkms

Ubuntu 提供了r8168-dkms包,直接安装即可:

sudo apt update
sudo apt install r8168-dkms

安装后会生成配置文件/etc/modprobe.d/r8168-dkms.conf,但其中的blacklist r8169默认是被注释掉的。

4.2 屏蔽 r8169

编辑配置文件:

sudo vim /etc/modprobe.d/r8168-dkms.conf

找到这一行:

#blacklist r8169

改成:

blacklist r8169

保存退出后,更新initramfs

sudo update-initramfs -u

4.3 重启并确认

重启系统:

sudo reboot

然后检查驱动:

lspci -k -s 25:00.0

预期输出:

Kernel driver in use: r8168
Kernel modules: r8168

此时,网卡已经使用r8168驱动。

5. 可选优化

5.1 关闭 EEE(节能以太网)

某些 Realtek 网卡在开启 EEE 时会出现不稳定,可以关闭:

sudo ethtool --set-eee enp37s0 eee off

若确认稳定,可以写入systemd service中,开机自动执行。

5.2 强制速率/双工模式

如果交换机/路由器兼容性有问题,可以强制固定速率:

sudo ethtool -s enp37s0 speed 1000 duplex full autoneg on

标签: linux, ubuntu, rtl8222/8168

添加新评论