在Linux系统中,MAC地址(媒体访问控制地址)是网卡的唯一标识符,用于在网络中精确识别设备,无论是网络配置、故障排查,还是安全策略制定,查看网卡MAC地址都是一项基础且重要的操作,本文将详细介绍在Linux系统中查看网卡MAC地址的多种方法、适用场景及常见问题解决,帮助用户高效掌握这一技能。

MAC地址基础与Linux网卡概述
MAC地址是固化在网卡ROM中的物理地址,由48位二进制数组成,通常表示为6组16进制数(如00:1A:2B:3C:4D:5E),是全球唯一的硬件标识,在Linux中,网卡以网络接口的形式存在,常见的命名方式包括传统命名(如eth0、eth1)和一致性命名(如ens33、ens34),后者基于硬件拓扑结构,命名更稳定,每个网络接口(包括物理网卡、虚拟网卡、回环接口)都可能对应一个MAC地址,其中物理网卡的MAC地址是固定的,而虚拟网卡可能使用随机或手动指定的MAC地址。
命令行查看MAC地址的常用方法
Linux提供了多种命令行工具查看MAC地址,用户可根据系统环境、需求灵活选择,以下是五种最常用的方法,涵盖不同场景和工具。
使用ifconfig命令:传统且直观的查看方式
ifconfig是Linux中经典的网络配置工具,用于显示或配置网络接口信息,虽然在新版系统中逐渐被ip命令替代,但许多发行版仍默认安装或可通过包管理器获取。
命令格式:
ifconfig [网络接口名]
若不指定接口名,则显示所有网络接口信息。
示例操作:
ifconfig eth0
输出解读:
在输出结果中,ether字段对应的即为MAC地址,
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:1a:2b:3c:4d:5e txqueuelen 1000 (Ethernet)
...
注意事项:
- 若提示
command not found,需安装net-tools包(如Ubuntu/Debian:sudo apt install net-tools;CentOS/RHEL:sudo yum install net-tools)。 - 此命令需要root权限或普通用户对
/sbin/ifconfig的执行权限。
使用ip addr命令:现代Linux系统的推荐工具
ip命令是iproute2包的一部分,功能更强大且逐渐取代ifconfig,是现代Linux发行版(如Ubuntu 18.04+、CentOS 7+)的默认网络工具。
命令格式:
ip addr show [网络接口名]
可简化为ip a [接口名]。
示例操作:
ip addr show ens33
输出解读:
在输出结果中,link/ether字段对应的MAC地址,

2: ens33: <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
...
优势:
- 支持更丰富的网络参数显示(如IPv4/IPv6地址、子网掩码、MTU等)。
- 命令格式更规范,适合脚本编写。
使用ethtool命令:获取网卡硬件详细信息
ethtool用于查看和配置网卡参数,不仅能显示MAC地址,还能获取网卡速率、双工模式、驱动信息等硬件级数据。
命令格式:
ethtool [网络接口名]
示例操作:
ethtool eth0
输出解读:
在输出结果的Permanent address或Current address字段中可找到MAC地址,
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
...
Permanent address: 00:1a:2b:3c:4d:5e
Current address: 00:1a:2b:3c:4d:5e
...
适用场景:
- 需要排查网卡硬件问题时(如连接不稳定、速率异常)。
- 查看网卡的“永久MAC地址”(即固化的物理地址,区别于临时修改的MAC地址)。
读取/sys/class/net/目录下的文件:底层信息的直接访问
Linux内核将网络接口信息以文件形式存储在/sys/class/net/目录下,通过读取对应接口的address文件,可直接获取MAC地址,无需额外安装工具,适合脚本自动化处理。
命令格式:
cat /sys/class/net/[网络接口名]/address
示例操作:
cat /sys/class/net/ens33/address
输出解读:
直接输出MAC地址,无其他信息,
00:1a:2b:3c:4d:5e
注意事项:
- 输出的MAC地址为小写,且无冒号分隔(部分系统可能保留冒号,需以实际输出为准)。
- 此方法无需root权限,但需确保用户对目录有读取权限。
使用nmcli命令:NetworkManager环境下的便捷工具
nmcli是NetworkManager的命令行工具,适用于使用NetworkManager管理网络的系统(如Ubuntu Desktop、Fedora等),可查看网络连接的详细信息,包括MAC地址。
命令格式:

nmcli connection show [连接名] | grep "mac-address"
或直接查看接口状态:
nmcli device show [网络接口名]
示例操作:
nmcli device show ens33
输出解读:
在输出结果的MAC ADDRESS字段中可找到MAC地址,
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.MAC-ADDRESS: 00:1a:2b:3c:4d:5e
...
适用场景:
- 使用NetworkManager管理网络,且需要关联连接配置(如静态IP、VLAN等)的场景。
不同场景下的MAC地址查看技巧
批量查看所有网卡的MAC地址
若需一次性查看系统所有网卡的MAC地址,可结合grep命令过滤输出:
- 使用
ip命令:ip addr show | grep -E "^[0-9]+:" -A1 | grep "link/ether" | awk '{print $2}'输出结果为每行一个MAC地址,对应顺序显示的接口。
- 使用
ifconfig命令:ifconfig -a | grep "ether" | awk '{print $2}'
查看特定类型网卡的MAC地址
- 仅查看物理网卡:排除回环接口(lo)和虚拟接口(如docker0、virbr0):
ip addr show | grep -v "lo:" | grep -E "^[0-9]+:" -A1 | grep "link/ether" | awk '{print $2}' - 查看无线网卡MAC地址:
ip addr show wlan0 | grep "link/ether" | awk '{print $2}'
远程服务器查看MAC地址
通过SSH远程登录服务器时,可直接使用上述命令,若需快速获取,可结合ssh和管道:
ssh user@remote_server "ip addr show eth0 | grep 'link/ether' | awk '{print $2}'"
常见问题排查与解决
提示“命令未找到”
- 若
ifconfig未安装,可通过包管理器安装:# Ubuntu/Debian sudo apt install net-tools # CentOS/RHEL sudo yum install net-tools
- 若
ip命令不可用(极少数情况),安装iproute2:sudo apt install iproute2 # Ubuntu/Debian sudo yum install iproute # CentOS/RHEL
MAC地址显示为00:00:00:00:00:00或无效值
可能原因及解决方法:
- 网卡未启用:使用
ifup [接口名]或ip link set [接口名] up启用网卡。 - 驱动问题:检查驱动是否加载正常(
lsmod | grep [驱动名]),尝试重新加载驱动(modprobe [驱动名])。 - 虚拟网卡:部分虚拟网卡(如Docker默认网桥)可能使用随机MAC,需检查容器或虚拟机配置。
MAC地址被修改(非预期情况)
若发现MAC地址与硬件固化的地址不符,可能是手动修改或软件配置导致:
- 使用
ethtool查看“Permanent address”确认原始MAC地址。 - 检查是否有网络配置工具(如NetworkManager、ifcfg文件)设置了MAC地址克隆。
进阶:自动化脚本与批量处理
通过编写简单脚本,可批量查看多台服务器或多个网卡的MAC地址,提高运维效率,以下脚本可遍历所有网卡并输出接口名与MAC地址:
#!/bin/bash
echo "Interface Name\tMAC Address"
echo "--------------------------------"
for interface in /sys/class/net/*; do
iface_name=$(basename "$interface")
mac=$(cat "$interface/address" 2>/dev/null)
if [ -n "$mac" ]; then
echo -e "$iface_name\t\t$mac"
fi
done
保存为show_mac.sh,赋予执行权限(chmod +x show_mac.sh)后运行,即可输出格式化的结果。
在Linux系统中查看网卡MAC地址是网络管理的基础技能,本文从ifconfig、ip addr、ethtool到/sys/class/net/和nmcli,详细介绍了五种常用方法,并覆盖了批量查看、远程操作、问题排查等场景,用户可根据实际需求选择合适的工具,结合脚本实现自动化处理,从而高效完成网络配置与故障排查任务,掌握这些方法,不仅能提升Linux操作能力,还能为后续的网络管理打下坚实基础。












