Linux系统里如何查看网卡的硬件ID或设备标识?

在Linux系统中,网卡的“ID”通常指代多种标识信息,包括物理地址(MAC地址)、网络接口名称(如eth0、ens33)、PCI设备ID(硬件标识)以及驱动模块名称等,这些ID在系统管理、网络配置、故障排查中至关重要,本文将详细介绍如何通过不同命令和方法查看这些网卡ID,并说明各场景下的适用场景和注意事项。

linux如何查看网卡id

查看网卡的MAC地址(物理地址)

MAC地址是网卡的唯一物理标识,由48位二进制数表示,通常以十六进制格式呈现(如00:1a:2b:3c:4d:5e),查看MAC地址的常用方法如下:

使用ip命令(推荐,现代Linux系统默认支持)

ip命令是iproute2工具包的核心命令,功能强大且推荐使用,通过ip linkip addr可查看所有网卡的MAC地址:

ip link show

输出示例:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000  
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000  
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff  
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000  
    link/ether 00:1a:2b:3c:4d:6f brd ff:ff:ff:ff:ff:ff  

其中link/ether后的字段即为MAC地址,若需查看特定网卡的MAC,可指定接口名,如ip link show eth0

使用ifconfig命令(传统工具,需安装net-tools

ifconfig是早期的网络配置工具,部分系统默认未安装,需通过sudo apt install net-tools(Ubuntu/Debian)或sudo yum install net-tools(CentOS/RHEL)安装,使用方法:

ifconfig

输出示例:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255  
        inet6 fe80::21a:2bff:fe3c:4d5e  prefixlen 64  scopeid 0x20<link>  
        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  

其中ether字段即为MAC地址。

通过/sys文件系统查看

Linux将网卡信息存储在/sys/class/net/目录下,每个子目录对应一个网络接口,直接读取接口目录下的address文件可获取MAC地址:

cat /sys/class/net/eth0/address

输出示例:

00:1a:2b:3c:4d:5e

此方法适合脚本编程,可精准获取单个接口的MAC地址。

查看网络接口名称

网络接口名称是系统分配的逻辑标识,传统Linux使用eth0eth1等命名方式,而现代系统(如Ubuntu 18.04+、CentOS 7+)采用可预测命名规则(如ens33enp0s3),命名规则基于硬件信息(PCI位置、总线类型等)。

使用ipifconfig命令

通过ip addrifconfig可直接查看所有接口名称:

linux如何查看网卡id

ip addr show | grep "^[0-9]*:" | awk '{print $2}' | tr -d ':'

输出示例:

lo
eth0
wlan0

其中lo为回环接口,其他为物理/虚拟网卡接口名。

查看/sys/class/net/目录

/sys/class/net/目录下的每个子目录即为接口名称:

ls /sys/class/net/

输出示例:

lo  eth0  wlan0

查看网卡的PCI设备ID

PCI设备ID是网卡的硬件标识,由厂商ID(Vendor ID)和设备ID(Device ID)组成,用于识别网卡的具体型号和厂商(如Intel Corporation的网卡厂商ID为8086),查看PCI设备ID需使用lspci命令。

安装lspci工具

若系统未安装lspci,需先安装:

  • Ubuntu/Debian: sudo apt install pciutils
  • CentOS/RHEL: sudo yum install pciutils

查看所有网卡的PCI信息

lspci | grep -i "ethernet"

输出示例:

04:00.0 Ethernet controller: Intel Corporation I210 Gigabit Network Connection (rev 03)  

若需更详细的ID信息(含厂商和设备ID),使用-nn参数:

lspci -nn | grep -i "ethernet"

输出示例:

04:00.0 Ethernet controller [0200]: Intel Corporation I210 Gigabit Network Connection [8086:1572] (rev 03)  

其中[8086:1572]即为PCI ID,8086是厂商ID(Intel),1572是设备ID(I210)。

通过接口关联PCI设备

若需通过接口名(如eth0)查看其PCI设备ID,可查看/sys/class/net/<interface>/device/目录下的符号链接:

ls -l /sys/class/net/eth0/device/

输出示例:

linux如何查看网卡id

total 0  
lrwxrwxrwx 1 root root 0 May 10 10:00 0000:04:00.0 -> ../../0000:04:00.0  
drwxr-xr-x 3 root root 0 May 10 10:0  power  
lrwxrwxrwx 1 root root 0 May 10 10:0 subsystem -> ../../../../bus/pci/devices  
-r--r--r-- 1 root root 4096 May 10 10:00 uevent  

其中0000:04:00.0是PCI设备地址,结合lspci -v -s 0000:04:00.0可查看详细信息。

查看网卡驱动模块名称

网卡驱动模块是内核中控制网卡工作的程序,查看驱动信息有助于排查驱动兼容性问题,常用工具为ethtoolmodinfo

安装ethtool

sudo apt install ethtool  # Ubuntu/Debian
sudo yum install ethtool  # CentOS/RHEL

查看接口驱动信息

ethtool -i eth0

输出示例:

driver: e1000e  
version: 3.2.6-k  
firmware-version: 0.1-1  
expansion-rom-version:  
bus-info: 0000:04:00.0  
supports-statistics: yes  
supports-test: no  
supports-eeprom-access: no  
supports-register-dump: yes  
supports-priv-flags: no  

其中driver字段即为驱动模块名称(如e1000e为Intel千兆网卡驱动)。

查看驱动模块详细信息

通过modinfo可查看驱动模块的详细参数、版本等信息:

modinfo e1000e

输出示例:

filename:       /lib/modules/5.4.0-42-generic/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko  
version:        3.2.6-k  
description:   Intel(R) PRO/1000 Gigabit Network Driver  
author:        Intel Corporation, <linux.nics@intel.com>  
license:        GPL  
srcversion:     5A3F5C6F6F3F3F3F3F3F3F3F  
alias:          pci:v00008086d00001572sv*sd*bc*sc*i*  
alias:          pci:v00008086d00001575sv*sd*bc*sc*i*  
...  

常用网卡ID查看命令总结

为方便快速查找,以下为常用命令及用途对照表:

命令 用途 输出示例(简写) 适用场景
ip link show 查看所有接口的MAC地址和状态 link/ether 00:1a:2b:3c:4d:5e 现代Linux系统,推荐使用
ifconfig 查看接口MAC地址、IP等信息 ether 00:1a:2b:3c:4d:5e 传统系统,需安装net-tools
cat /sys/class/net/eth0/address 直接读取指定接口MAC 00:1a:2b:3c:4d:5e 脚本编程,精准获取单个接口MAC
ip addr show | grep "^[0-9]*:" 查看所有接口名称 eth0wlan0 快速获取接口列表
lspci -nn | grep -i "ethernet" 查看网卡PCI设备ID [8086:1572] 硬件识别,驱动匹配
ethtool -i eth0 查看接口驱动模块 driver: e1000e 驱动故障排查

注意事项

  1. 权限问题:部分命令(如lspciethtool)可能需要sudo权限才能获取完整信息。
  2. 发行版差异:不同Linux发行版默认工具不同(如Ubuntu默认ip,旧版CentOS可能默认ifconfig),需根据系统选择。
  3. 内核版本影响:接口命名规则(如eth0 vs ens33)受内核版本和udev规则影响,可通过sudo ls /etc/udev/rules.d/ | grep -i net查看命名规则配置。
  4. 虚拟化环境:在虚拟机(VMware、KVM)中,网卡可能为虚拟设备(如ens33veth0),其MAC地址和PCI ID可能与物理网卡不同。

相关问答FAQs

Q1:Linux中网卡的MAC地址和接口名称有什么区别?如何分别查看?
A:MAC地址是网卡的全球唯一物理标识(如00:1a:2b:3c:4d:5e),用于数据链路层通信;接口名称是系统分配的逻辑标识(如eth0、ens33),用于用户空间操作,查看MAC地址可用ip link showcat /sys/class/net/<interface>/address;查看接口名称可用ip addr show | grep "^[0-9]*:"ls /sys/class/net/

Q2:为什么我的Linux系统中找不到网卡ID,可能的原因和解决方法?
A:可能原因及解决方法如下:

  1. 工具未安装:如lspciethtool未安装,可通过sudo apt install pciutils ethtool(Ubuntu/Debian)或sudo yum install pciutils ethtool(CentOS/RHEL)安装。
  2. 权限不足:普通用户无法查看某些硬件信息,需使用sudo执行命令。
  3. 网卡未加载:驱动未加载或硬件未识别,可通过dmesg | grep -i "eth"查看内核日志,确认网卡是否被正确识别。
  4. 虚拟化配置问题:在虚拟机中,若网卡未正确挂载,可在虚拟机管理器中检查网卡类型(如VMXNET3、E1000)并重新配置。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28678.html

(0)
酷番叔酷番叔
上一篇 2025年9月23日 02:48
下一篇 2025年9月23日 03:04

相关推荐

  • 怎么用通用快捷键一键退出全屏?

    在使用Linux虚拟机时,全屏模式能提供沉浸式体验,但许多用户会因不熟悉操作而无法退出,以下是针对主流虚拟机软件的详细退出方法,操作前请确保已安装对应增强工具(如VirtualBox Guest Additions或VMware Tools),否则部分功能可能失效,无论使用哪种虚拟机软件,优先尝试以下组合键:默……

    2025年7月21日
    4800
  • linux 上如何安装系统软件

    Linux 上安装系统软件可通过包管理器,如 apt(Debian/Ubuntu)、yum

    2025年8月16日
    3700
  • Linux系统如何安装中文语言支持包?

    在Linux系统中,安装中文包是为了解决终端显示乱码、图形界面中文界面缺失、应用无法正确显示中文等问题,确保系统对中文语言的良好支持,不同Linux发行版的包管理器和中文包名称存在差异,以下是主流发行版的详细安装步骤及配置方法,Ubuntu/Debian系列安装中文包Ubuntu和Debian基于Debian系……

    2025年9月24日
    1600
  • Linux网络故障?命令行秒解秘籍!

    基础连通性测试pingping -c 4 example.com # 发送4个ICMP包测试连通性关键输出:64 bytes from…(收到响应)packet loss(丢包率)time=20.3 ms(延迟)中断:Ctrl+Ctraceroutetraceroute example.com # 追踪数据……

    2025年6月16日
    5300
  • 编写Linux程序的关键步骤与基础方法有哪些?

    在Linux环境下编写程序,通常涉及从环境搭建到代码编写、编译调试、部署维护的全流程,Linux作为开源操作系统,其工具链和系统调用为程序开发提供了强大支持,以下是详细步骤和关键要点,开发环境准备Linux程序开发需先安装必要的工具链,以C语言为例,常用工具包括GCC(编译器)、GDB(调试器)、Make(构建……

    2025年10月1日
    1400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信