在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