Ubuntu 24.04 下 Realtek RTL8111/8168 网卡频繁掉线与解决方案
在 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 -u4.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