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

相关推荐

  • 如何绑定IP到MAC地址?

    在Linux系统中,绑定MAC地址(也称为静态ARP绑定)是网络安全和网络管理的重要手段,它通过将特定IP地址与对应的MAC地址强制关联,防止ARP欺骗攻击,确保网络设备间通信的可信性,以下是详细的操作方法和注意事项:为什么需要绑定MAC地址?防范ARP欺骗:阻止攻击者伪造MAC地址劫持流量,网络准入控制:仅允……

    2025年8月4日
    16500
  • Linux如何安装图形界面?新手必看

    为什么需要Linux GUI?易用性:图形化操作降低命令行学习门槛,多任务效率:支持窗口管理、拖放操作和图形化软件(如LibreOffice、GIMP),硬件兼容:现代GPU驱动通常通过GUI配置更便捷,安装前的准备工作系统更新终端执行:sudo apt update && sudo apt u……

    2025年7月24日
    13000
  • Linux如何手动卸载Eclipse?

    卸载核心步骤删除Eclipse安装目录打开终端,定位到Eclipse的安装路径(默认通常在/opt/eclipse或用户主目录):# 如果安装在系统目录(需管理员权限)sudo rm -rf /opt/eclipse# 如果安装在用户目录(/eclipse)rm -rf ~/eclipse验证路径:若不确定安装……

    2025年7月12日
    16500
  • 如何快速精通Linux指令?

    基础操作环境打开终端图形界面:按 Ctrl+Alt+T(Ubuntu等)或从应用菜单搜索”Terminal”,纯文本模式:直接登录后进入命令行界面,远程连接:使用 ssh 用户名@IP地址(如 ssh user@192.168.1.10),指令结构命令格式:命令 [选项] [参数]示例:ls -l /homel……

    2025年7月20日
    14100
  • Linux覆盖文件如何避免误操作?

    覆盖文件的核心原理Linux中覆盖文件本质是替换原文件,需注意:权限要求:用户需拥有文件的写权限(或使用sudo提权),风险提示:覆盖后原内容不可恢复(除非提前备份),底层机制:通过重定向、复制或移动操作生成新文件,替换原文件的inode,命令行覆盖方法(最常用)重定向输出(> 或 >>)覆盖……

    2025年6月13日
    17700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信