在Linux系统中,查看网卡数量是网络管理的基础操作,无论是排查网络问题、配置网络服务还是监控系统状态,都需要准确掌握网卡的识别信息,Linux提供了多种命令和工具来查看网卡信息,下面将详细介绍几种常用方法,帮助用户全面了解如何识别系统中的网卡数量及类型。

使用ip命令(推荐方法)
ip命令是iproute2工具包的核心命令,现代Linux发行版(如Ubuntu、CentOS、Debian等)默认已安装,功能强大且信息全面,通过ip命令可以查看网卡的名称、状态、MAC地址、IP地址等详细信息。
基本语法:
ip a
或
ip link show
输出解读:
执行ip a后,终端会显示所有网络接口的详细信息,每块网卡对应一个开头的段落。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/00:1a:2b:3c:4d:5f brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/52:54:00:ab:cd:ef brd ff:ff:ff:ff:ff:ff
- 网卡数量统计:上述输出中,开头的数字序号(如
1:、2:、3:、4:)对应不同的网络接口,其中lo是环回接口(虚拟网卡,用于本地通信),eth0和eth1是物理网卡,virbr0是虚拟网桥(通常由KVM、Docker等虚拟化工具创建),统计时需排除lo,实际物理网卡+虚拟网卡数量为4-1=3块。 - 关键信息:
eth0、eth1等是网卡名称(通常物理网卡以eth、ens开头,虚拟网卡以virbr、docker、lo开头);state UP/DOWN表示网卡是否启用;link/后跟的是MAC地址。
使用ifconfig命令(传统方法)
ifconfig是net-tools工具包中的命令,在早期Linux系统中广泛使用,但部分现代发行版(如Ubuntu 20.04+)默认未安装,需手动安装。

安装方法(以Ubuntu为例):
sudo apt update && sudo apt install net-tools
基本语法:
ifconfig -a
输出解读:
执行ifconfig -a后,会显示所有网络接口的配置信息,包括已启用(UP)和未启用(DOWN)的网卡。
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
ether 00:1a:2b:3c:4d:5e txqueuelen 1000 (Ethernet)
RX packets 12345 bytes 1234567 (1.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6789 bytes 987654 (964.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:1a:2b:3c:4d:5f txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
virbr0: flags=4099<BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:ab:cd:ef txqueuelen 1000 (Ethernet)
- 网卡数量统计:同样需排除
lo,eth0、eth1、virbr0共3块网卡。flags中的UP表示网卡已启用,BROADCAST表示支持广播,RUNNING表示网卡正在工作。
查看/sys/class/net/目录
Linux内核通过/sys/class/net/目录暴露所有网络接口的信息,直接列出该目录下的子目录即可获取所有网卡名称,无需安装额外工具。
基本语法:
ls /sys/class/net/
输出示例:
eth0 eth1 lo virbr0
- 网卡数量统计:目录名称即为网卡名称,排除
lo后,eth0、eth1、virbr0共3块网卡,此方法最简单,仅返回网卡名称,适合快速统计数量。
使用lspci命令查看物理网卡硬件信息
若需区分物理网卡和虚拟网卡(如虚拟化环境中的虚拟网卡),可通过lspci命令列出PCI设备,并过滤网卡相关硬件。
安装方法(以Ubuntu为例):
sudo apt install pciutils
基本语法:
lspci | grep -i 'ethernet|network'
输出示例:
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-LM 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller
- 物理网卡识别:每行对应一块物理网卡的硬件信息,
Ethernet controller或Network controller标识网卡类型,此方法仅能统计物理网卡数量,无法识别虚拟网卡(如virbr0、docker0等)。
使用nmcli命令(NetworkManager工具)
nmcli是NetworkManager的命令行工具,适用于桌面版或服务器版Linux,可结合网络管理查看网卡状态。

基本语法:
nmcli device status
输出示例:
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
eth1 ethernet disconnected --
lo loopback unmanaged --
virbr0 bridge disconnected --
- 网卡数量统计:
DEVICE列即为网卡名称,排除lo(unmanaged表示非管理状态),eth0、eth1、virbr0共3块网卡。STATE列显示网卡连接状态(connected/disconnected)。
不同命令对比总结
| 命令 | 所属工具包 | 功能特点 | 适用场景 |
|---|---|---|---|
ip a |
iproute2(默认) | 信息全面,包含状态、MAC、IP等 | 日常查看、网络配置 |
ifconfig -a |
net-tools(需安装) | 传统命令,兼容旧系统 | 遗留系统维护 |
ls /sys/class/net/ |
内核文件系统 | 仅返回网卡名称,简单快速 | 快速统计数量 |
lspci | grep |
pciutils(需安装) | 仅显示物理网卡硬件信息 | 区分物理/虚拟网卡 |
nmcli device status |
NetworkManager | 结合网络管理状态,适合桌面/服务器环境 | 网络服务管理 |
相关问答FAQs
问题1:执行ifconfig命令时报错“command not found”,如何解决?
解答:ifconfig属于net-tools工具包,部分现代Linux发行版(如Ubuntu 20.04+、CentOS 8+)默认未安装,可通过以下命令安装:
- Ubuntu/Debian:
sudo apt update && sudo apt install net-tools
- CentOS/RHEL/Rocky Linux:
sudo yum install net-tools
安装后执行
ifconfig -a即可查看所有网卡信息。
问题2:如何区分物理网卡和虚拟网卡?
解答:可通过以下方法区分:
- 接口名称:物理网卡通常以
eth(传统命名)、ens(Predictable Network Interface Names,新系统默认)开头,如eth0、ens33;虚拟网卡常见名称有lo(环回)、virbr0(虚拟网桥,KVM/Docker)、docker0(Docker默认网桥)、wlan0(无线虚拟网卡)等。 lspci命令:物理网卡可通过lspci | grep -i 'ethernet'查看到硬件信息,虚拟网卡无对应PCI设备记录。ethtool命令:安装ethtool后,执行sudo ethtool -i <网卡名>查看驱动,物理网卡驱动通常为e1000、igb、r8169等,虚拟网卡驱动多为virtio_net(KVM)、hv_netvsc(Hyper-V)等。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/38720.html