处理网卡故障的第一原则是“先物理,后逻辑”。很多时候网络不通是因为网线松动、光模块污损或交换机端口问题。不要急着敲命令,先看一眼服务器背面。
1. 检查指示灯状态
观察服务器机箱后方的网卡指示灯。正常情况下,Link灯(连接灯)应常亮,Act灯(活动灯)应闪烁。如果Link灯不亮,说明物理层未连通。
2. 使用 ethtool 检测链路状态
登录系统后,首先确认网卡名称(如 eth0, ens33, enp0s3 等)。假设网卡名为 eth0,若未安装 ethtool,先执行安装:
CentOS/RHEL
yum install ethtool -y
Ubuntu/Debian
apt install ethtool -y
执行检测命令查看物理连接状态:
ethtool eth0
重点关注输出中的 Speed 和 Link detected 字段:
Speed: 1000Mb/s
Duplex: Full
Link detected: yes
如果 Link detected: no,且指示灯不亮,基本可以判定是网线、交换机端口或网卡硬件本身损坏。如果 Speed 显示为 Unknown,可能是驱动问题或协商失败。
如果物理连接正常,但系统无法识别网卡,通常是驱动程序丢失或内核加载失败。这一步我们需要确认内核是否看到了硬件。
1. 查看 PCI 设备识别情况
使用 lspci 命令列出所有 PCI 设备,过滤出以太网控制器:
lspci | grep -i ethernet
如果这里看不到你的网卡型号(例如 Intel I350 或 Realtek 8168),说明 BIOS 中未开启网卡,或者 PCIe 插槽接触不良,甚至硬件已损坏。如果能看到型号,继续下一步。
2. 检查驱动加载状态
使用 lshw(如果没有请安装 yum install lshw 或 apt install lshw)查看网络配置详情:
lshw -C network
查看输出中 logical name(是否分配了如 eth0 的名字)和 configuration(是否有 driver=e1000e 等驱动名称)。如果显示 UNCLAIMED,说明内核未加载对应驱动。
3. 手动加载或重载驱动
如果驱动未加载,你需要根据第一步 lspci 看到的型号,下载并安装对应驱动。如果驱动已安装但未工作,尝试重载。假设驱动模块名为 e1000e:
卸载驱动
modprobe -r e1000e
重新加载驱动
modprobe e1000e
执行后再次运行 ip a 查看网卡是否出现。
硬件和驱动正常后,网卡可能处于“DOWN”状态,或者 IP 配置错误。这是最常见的软件层故障。
1. 启用被关闭的网卡
使用 ip 命令查看网卡状态:
ip link show
如果看到 state DOWN,使用以下命令启动:
启动网卡
ip link set eth0 up
2. 排除 NetworkManager 冲突(CentOS 7/8 常见)
在 CentOS/RHEL 系统中,如果既配置了 /etc/sysconfig/network-scripts/ifcfg-eth0,又开启了 NetworkManager,可能会导致配置冲突。建议生产环境统一管理方式。
如果决定使用 nmcli(NetworkManager 命令行工具)管理,操作如下:
查看连接列表
nmcli connection show
启动指定连接(假设连接名为 System eth0)
nmcli connection up 'System eth0'
如果决定使用 传统 ifcfg 文件 管理,建议关闭 NetworkManager:
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl restart network
3. 修复 IP 配置文件
如果 IP 地址丢失,需要手动修改配置文件。以 CentOS 7 为例,编辑 /etc/sysconfig/network-scripts/ifcfg-eth0:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
保存后,重启网络服务生效:
systemctl restart network
对于 Ubuntu 18.04+ 使用 Netplan,编辑 /etc/netplan/00-installer-config.yaml:

network:
ethernets:
ens33:
dhcp4: no
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
version: 2
应用配置:
netplan apply
网卡 UP 了,IP 也有了,但还是 ping 不通?通常是路由表或 ARP 表出了问题。
1. 检查 IP 地址是否正确绑定
ip addr show eth0
确认 inet 字段下的 IP 地址是否与配置文件一致。
2. 检查路由表
这是排查“能 ping 通本机,ping 不通网关”的关键。查看当前路由:
ip route show
正常的输出应包含类似以下内容:
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
如果缺少 default 这一行,系统不知道如何将数据包发往外网。手动添加默认网关:
ip route add default via 192.168.1.1 dev eth0
3. 检查 ARP 解析
尝试 ping 网关 IP。如果显示 "Destination Host Unreachable",检查 ARP 表:
ip neigh show
如果网关 IP 对应的状态是 FAILED 或 INCOMPLETE,说明二层链路有问题。可能是交换机配置了端口隔离,或者你配置的 IP 地址与网段不在同一子网。
网络虽然通了,但出现丢包、延迟高、连接中断等情况,通常是因为网卡缓冲区溢出或 Ring Buffer 设置过小。
1. 检查网卡丢包统计
使用 ip -s link show eth0 可以看到详细的收发字节和错误包数。重点关注 dropped 和 overruns 指标。
更详细的统计可以使用 ethtool:
ethtool -S eth0
查看 rx_missed_errors(接收丢失错误)或 rx_fifo_errors(接收队列溢出)。如果这些数值在增长,说明服务器处理不过来,需要调整 Ring Buffer。
2. 调整 Ring Buffer(环形缓冲区)
查看当前最大和当前设置:
ethtool -g eth0
输出显示 RX(接收)和 TX(发送)的 max 值和 current 值。如果 current 远小于 max,建议调大。例如,将接收和发送缓冲区都设为 4096:
ethtool -G eth0 rx 4096 tx 4096
注意:此命令重启后失效。若要永久生效,需将此命令写入 /etc/rc.d/rc.local 并赋予执行权限,或者在网络启动脚本中添加。
3. 关闭或调整 offload 特性
某些老旧网卡或特定虚拟化环境下,TSO(TCP Segmentation Offload)或 GRO(Generic Receive Offload)可能导致丢包。尝试关闭这些特性测试:
ethtool -K eth0 tso off gso off gro off
再次观察丢包情况。如果问题解决,说明是网卡硬件卸载功能与当前驱动/系统不兼容。
如果以上所有步骤都正常,IP、路由、物理链路无误,但特定端口无法访问,最后检查系统防火墙。
1. 检查 iptables 规则(CentOS 6)
iptables -L -n -v
2. 检查 firewalld 规则(CentOS 7/8)
firewall-cmd --list-all
如果不需要防火墙,可临时关闭测试:
systemctl stop firewalld
3. 检查 SELinux 状态
SELinux 有时会阻止外部连接,特别是非标准端口:
getenforce
如果是 Enforcing,可临时设为 Permissive 进行排查:
setenforce 0
通过以上六个维度的硬核排查和实操修复,99%的服务器网卡故障都能在第一时间定位并解决。无需重启服务器,无需盲目重装系统,按图索骥即可恢复业务。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图