CentOS 网络驱动设置与排障指南
一、快速判断与定位
- 确认网卡是否被识别:执行命令查看以太网控制器型号,例如:lspci | grep -i ethernet。若能看到如 Intel Corporation Ethernet Connection I219-LM 等信息,说明硬件被识别但可能缺少驱动。若完全无输出,优先检查硬件连接与系统镜像兼容性。
- 查看当前驱动与接口状态:用 ip link show 确认网卡接口名(如 ens33/eth0)是否存在;用 ethtool -i <接口名> 查看已加载的驱动名称与版本(如 driver: e1000e)。
- 判断驱动是否加载:执行 lsmod | grep <驱动名>(如 e1000e)。如无输出,说明驱动未加载或未安装。
二、安装或更新网卡驱动
- 安装编译依赖(以 CentOS 7 为例):确保已安装与当前运行内核匹配的 kernel-devel、gcc 等工具,例如:yum install -y kernel-devel gcc。
- 获取官方驱动:前往网卡厂商官网(如 Intel)下载对应型号与内核的驱动源码包(常见为 .tar.gz)。例如 Intel 有线网卡驱动页面:https://downloadcenter.intel.com/zh-cn/download/15817。
- 编译与安装:解压后进入驱动源码目录(通常位于 src/),执行 make 与 make install 完成安装。
- 加载驱动并验证:执行 depmod -a 更新模块依赖,随后 modprobe <驱动名> 加载模块;用 lsmod | grep <驱动名> 与 ethtool -i <接口名> 验证是否加载成功。
三、UEFI Secure Boot 导致驱动无法加载的处理
- 现象:执行 modprobe <驱动名> 时报错 Required key not available。
- 原因:自 内核 4.4.0-20 起启用 EFI_SECURE_BOOT_SIG_ENFORCE,未签名的第三方驱动会被拒绝加载。
- 解决:重启进入 BIOS/UEFI,在 Secure Boot 设置中关闭 EFI_SECURE_BOOT_SIG_ENFORCE(或关闭 Secure Boot),保存并重启;随后再次加载驱动。
四、驱动正常后配置网络
- 使用 ifcfg 文件(传统方式,适用于 CentOS 7):编辑 /etc/sysconfig/network-scripts/ifcfg-<接口名>(如 ifcfg-ens33)。示例(静态 IP):
DEVICE=ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
使配置生效:systemctl restart network。
- 使用 NetworkManager(推荐):
- 查看设备与连接:nmcli d
- 修改连接(将“连接名”替换为实际名称):
nmcli con mod “连接名” ipv4.addresses 192.168.1.100/24
nmcli con mod “连接名” ipv4.gateway 192.168.1.1
nmcli con mod “连接名” ipv4.dns “8.8.8.8,8.8.4.4”
nmcli con mod “连接名” ipv4.method manual
- 使配置生效:nmcli con down “连接名” && nmcli con up “连接名”。
五、验证与常见问题
- 验证链路与连通性:
- 查看接口与状态:ip addr show <接口名>(状态应为 UP)
- 测试网关连通:ping -c 4 <网关IP>
- 测试外网解析:ping -c 4 8.8.8.8 与 ping -c 4 www.google.com
- 常见问题速查:
- 接口不存在或名称不符:用 ip link 确认实际名称(如 ens33/eth0),再编辑对应 ifcfg-* 文件或 nmcli 连接。
- 驱动加载失败:检查是否安装 kernel-devel/gcc、是否执行 depmod -a,以及是否因 Secure Boot 被拦截(见第三节)。
- 已加载旧驱动:先 rmmod <旧驱动名>,再 modprobe <新驱动名> 加载新版本。
- 配置不生效:确认 ONBOOT=yes,并重启网络服务或系统;使用 nmcli 时确保操作的是正确的“连接名”。