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 -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