在Linux系统中,查看网卡并不只是“看一眼名字”这么简单。我们需要区分物理网卡、虚拟网卡、桥接设备,还要确认它们是否处于UP状态、有没有正确获取到IP地址、以及收发包是否存在异常。不同发行版默认预装的工具略有差异,但核心思路都是读取内核暴露的网络设备信息。

一、使用ip命令查看网卡
ip命令来自iproute2软件包,几乎是现代Linux发行版的标准组件。它直接通过netlink套接字与内核通信,能返回最权威的接口数据。相比已被废弃的ifconfig,ip命令输出结构更清晰,也支持更多状态维度。
最基础的用法是列出所有网络链路层设备。执行后会看到类似lo、eth0、ens33这样的接口名,以及对应的MAC地址和状态标识。如果看到state DOWN,说明该网卡未被激活。
# 列出所有网卡及链路状态 ip link # 仅查看某个网卡,例如ens33 ip link show ens33 # 查看网卡详细统计(收发包、错误、丢包) ip -s link
当我们排查网络不通的问题时,建议先用ip -s link观察errors和dropped字段。若dropped持续增长,往往意味着网卡队列满或者内核参数配置不当,而不是简单的物理连线问题。
ip addr是另一个高频子命令,它在ip link基础上附加了网络层地址信息。你可以一眼看到每个网卡绑定的IPv4与IPv6地址,以及子网掩码长度。对于用DHCP获取地址的机器,这里能确认是否真的拿到了租约。
# 查看所有网卡的IP地址配置 ip addr # 只看运行中的网卡 ip addr show up
二、使用ifconfig与传统工具
尽管ifconfig已不再积极维护,但在不少老旧服务器或最小化容器中仍能见到。它读取的是/proc/net/dev与ioctl接口,信息维度比ip少,但输出对人类更“友好”。
直接输入ifconfig会列出当前UP的网卡。加上-a参数可显示所有接口,包括未激活的。如果你在脚本中依赖它,要注意某些新系统默认没装net-tools包,需要手动用包管理器安装。
# 安装net-tools(Debian/Ubuntu) apt-get install net-tools # 查看所有网卡 ifconfig -a
ifconfig的缺点在于无法展示较新的网络命名空间状态,也不能像ip命令那样精细控制策略路由。因此在自动化运维中,更推荐将脚本迁移到ip命令,减少环境依赖。
三、通过proc与sysfs深入查看
如果用户态工具的输出让你存疑,可以直接查内核暴露的文件系统。/proc/net/dev以纯文本方式记录每个接口的流量统计,非常适合自己写监控采集器。
每一行对应一张网卡,前几列是接收方向数据,后几列是发送方向数据。字段包括字节数、包数、错包、丢包等。配合awk就能做环比计算。
# 查看proc中的网卡流量
cat /proc/net/dev
# 提取ens33的接收字节数
awk -F: '/ens33/{print $2}' /proc/net/dev
sysfs路径/sys/class/net则把每张网卡抽象成目录。进去后能读到speed、operstate、mtu等属性文件。比如cat /sys/class/net/ens33/operstate会直接返回up或down,比解析命令输出更稳。
# 读取网卡速率与运行状态 cat /sys/class/net/ens33/speed cat /sys/class/net/ens33/operstate
四、使用ethtool检查网卡硬件
当怀疑是网线、光模块或双工模式导致的问题时,ethtool能提供驱动层与物理层视角。它可以报告当前协商速率、是否支持千兆、以及网卡驱动版本。
常见用法是ethtool 网卡名,能直接看到Speed、Duplex、Auto-negotiation。如果Speed显示未知,通常说明物理链路没通,而不是系统配置错误。
# 查看网卡硬件参数 ethtool ens33 # 查看驱动与固件信息 ethtool -i ens33
ethtool还能做网卡点亮测试(ethtool -p),让对应网口指示灯闪烁,方便机房运维在成排服务器中定位设备。这个功能在ip命令里是没有的。
五、网卡命名规律与排查建议
很多初学者在云服务器上用ifconfig找不到eth0,其实是因为systemd采用了可预测网卡命名。常见前缀有eno(板载)、ens(热插拔插槽)、enp(PCI地理路径)。了解这点能避免“网卡消失”的误判。
综合排障时,推荐顺序为:先用ip addr确认接口存在且UP,再用ip -s link看丢包,接着用ethtool看物理链路,最后查路由与DNS。这样由底层到上层,能最快缩小故障范围。
| 工具 | 数据来源 | 适用场景 |
|---|---|---|
| ip命令 | netlink | 日常查看、脚本自动化 |
| ifconfig | proc/ioctl | 老旧系统兼容 |
| ethtool | 驱动ioctl | 物理链路与速率排查 |
| /proc/net/dev | 内核统计量 | 自写监控采集 |
掌握上述多套方法后,无论面对物理机、虚拟机还是容器网络,你都能在几秒内搞清楚“网卡到底在哪、状态如何”。这比死记某条命令更有价值。
linux网卡查看ip_command修改时间:2026-08-02 14:42:13