在Linux系统中,MAC地址(Media Access Control Address)是网卡的物理地址,用于在局域网中唯一标识网络接口设备,查看Linux系统的MAC地址有多种方法,可通过命令行工具或系统文件直接获取,以下是详细操作步骤及不同方法的对比分析。

使用ifconfig命令查看MAC地址
ifconfig是传统的网络配置工具,可显示或配置网络接口信息,若系统中未安装,需先根据发行版安装(如Debian/Ubuntu使用sudo apt install net-tools,CentOS/RHEL使用sudo yum install net-tools)。
操作步骤:
-
打开终端,输入以下命令列出所有网络接口:
ifconfig
输出中会显示
eth0(有线网卡)、wlan0(无线网卡)等接口信息。 -
定位目标接口,在
HWaddr(部分系统显示为ether)字段后即为MAC地址,eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ether 00:1a:2b:3c:4d:5e txqueuelen 1000 (Ethernet)其中
00:1a:2b:3c:4d:5e即为该网卡的MAC地址。
使用ip命令查看MAC地址
ip是现代Linux系统推荐的网络配置工具,功能比ifconfig更全面,默认已安装在大多数发行版中。
操作步骤:
-
输入以下命令显示所有网络接口的详细信息:
ip addr show
或简化为:

ip a
-
在输出中找到目标接口,
link/ether字段后即为MAC地址,2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff若需仅查看MAC地址,可结合
grep过滤:ip a | grep -E "link/ether|ether" | awk '{print $2}'
读取/sys文件系统查看MAC地址
Linux内核通过/sys/class/net/目录暴露网络接口信息,直接读取对应接口的address文件可获取MAC地址,适合脚本编程或无命令行工具的环境。
操作步骤:
-
列出所有网络接口:
ls /sys/class/net/
-
读取目标接口的
address文件,例如eth0:cat /sys/class/net/eth0/address
输出为小写无冒号格式(如
001a2b3c4d5e),可通过sed添加冒号:cat /sys/class/net/eth0/address | sed 's/(..)/1:/g; s/:$//'
使用nmcli工具查看MAC地址
nmcli是NetworkManager的命令行工具,适用于使用NetworkManager管理网络的系统(如Ubuntu、Fedora默认启用)。
操作步骤:
-
查看所有网络设备的详细信息:

nmcli device show
-
在输出中找到目标设备(如
eth0),GENERAL.MAC-ADDRESS字段即为MAC地址,GENERAL.DEVICE: eth0 GENERAL.TYPE: ethernet GENERAL.MAC-ADDRESS: 00:1a:2b:3c:4d:5e
使用ethtool工具查看MAC地址
ethtool可查看和配置网卡参数,需先安装(sudo apt install ethtool或sudo yum install ethtool)。
操作步骤:
- 查看网卡的永久MAC地址(避免虚拟接口临时MAC的干扰):
ethtool -P eth0
输出示例:
Permanent address: 00:1a:2b:3c:4d:5e
不同方法对比
| 方法 | 核心命令 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| ifconfig | ifconfig |
直观,兼容旧系统 | 逐渐被淘汰,需额外安装 | 传统Linux系统 |
| ip | ip addr show |
现代系统默认,功能全面 | 输出信息较多,需过滤 | 通用Linux系统 |
| /sys文件系统 | cat /sys/class/net/... |
无需工具,适合脚本 | 输出格式需处理 | 自动化脚本、无命令行环境 |
| nmcli | nmcli device show |
结合NetworkManager管理 | 依赖NetworkManager服务 | NetworkManager管理的系统 |
| ethtool | ethtool -P |
可查看永久MAC地址 | 需安装工具 | 需区分临时/永久MAC场景 |
注意事项
- 虚拟接口:Docker、虚拟机等创建的虚拟接口(如
docker0、veth123)也会有MAC地址,可通过ip addr查看。 - 多网卡场景:若需快速查看所有网卡MAC地址,可使用:
ip a | grep "link/ether" | awk '{print $2, $7}' - MAC地址格式:标准MAC地址为6组2位十六进制数,组间用冒号或连字符分隔,大小写不敏感。
相关问答FAQs
问题1:为什么同一个网卡在ifconfig和ip addr中显示的MAC地址格式不同?
解答:ifconfig默认显示为大写带冒号格式(如00:1A:2B:3C:4D:5E),而ip addr默认显示为小写带冒号格式(如00:1a:2b:3c:4d:5e),本质是同一地址,仅格式差异,可通过tr '[:lower:]' '[:upper:]'转换为大写,或sed 's/://g'去除冒号。
问题2:如何查看所有网卡的MAC地址(包括虚拟网卡)?
解答:使用ip addr show命令可显示所有接口(物理和虚拟)的MAC地址,或通过遍历/sys/class/net/目录获取:
ls /sys/class/net/ | while read interface; do echo "$interface: $(cat /sys/class/net/$interface/address)" done
此命令会列出所有接口及其对应的MAC地址,格式为接口名: MAC地址。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/23848.html