在Linux系统中,查看网卡的MAC地址(即物理地址)是网络配置和故障排查的基础操作,MAC地址是网卡的唯一硬件标识符,由12位十六进制数组成(如00:1A:2B:3C:4D:5E
),常用于网络绑定、设备识别或安全策略,以下是多种可靠的方法,适用于所有主流Linux发行版(如Ubuntu、CentOS、Debian等):ip
命令是新一代网络工具,取代了旧的 ifconfig
,功能更全面:
ip link show
- 输出示例:
1: lo: <LOOPBACK> ... link/loopback 00:00:00:00:00:00 2: eth0: <BROADCAST> ... link/ether 00:1a:2b:3c:4d:5e
- 关键字段:
link/ether
后紧跟的即是MAC地址(如00:1a:2b:3c:4d:5e
)。
- 查看指定网卡:
ip link show eth0 | grep link/ether | awk '{print $2}'
方法2:使用 ifconfig
命令(传统方式)
若系统未预装,可通过 net-tools
包安装(sudo apt install net-tools
或 sudo yum install net-tools
):
ifconfig
- 输出示例:
eth0: ... ether 00:1a:2b:3c:4d:5e ...
- 关键字段:
ether
后为MAC地址。 - 仅显示MAC地址:
ifconfig eth0 | grep ether | awk '{print $2}'
方法3:通过 /sys
文件系统(无需安装工具)
Linux内核通过虚拟文件系统 /sys
暴露硬件信息:
cat /sys/class/net/eth0/address
- 直接输出:
00:1a:2b:3c:4d:5e
- 适用场景:脚本自动化或精简环境(如Docker容器)。
方法4:使用 ethtool
工具(查看永久MAC地址)
某些网卡支持动态MAC地址(如虚拟化环境),ethtool
可查看硬件固化的永久地址:
sudo ethtool -P eth0
- 输出示例:
Permanent address: 00:1a:2b:3c:4d:5e
- 注意:需安装
ethtool
包(sudo apt install ethtool
或sudo yum install ethtool
)。
方法5:通过 nmcli
(NetworkManager用户适用)
若系统使用NetworkManager管理网络:
nmcli device show eth0 | grep GENERAL.HWADDR
- 输出示例:
GENERAL.HWADDR: 00:1A:2B:3C:4D:5E
常见问题解答(FAQ)
-
为什么MAC地址显示为
ff:ff:ff:ff:ff:ff
?
通常表示网卡未激活或驱动异常,尝试启用网卡:sudo ip link set eth0 up
-
如何区分多个网卡?
使用ip link
或ls /sys/class/net/
列出所有网卡名称(如eth0
、wlan0
)。 -
MAC地址被随机化(如Wi-Fi)?
某些系统(如NetworkManager)默认启用”cloned MAC”以保护隐私,关闭方法:nmcli connection modify "Your-WiFi-Name" wifi.cloned-mac-address permanent
-
虚拟机或容器中MAC地址不一致?
虚拟网卡的MAC由宿主机分配,通过virsh edit 虚拟机名
或容器配置查看真实值。
注意事项
- 权限要求:除
/sys
外,其他命令可能需要sudo
权限。 - 一致性:
ip link
和ifconfig
显示当前生效的MAC地址,ethtool
显示硬件固化地址。 - 临时修改:MAC地址可通过
sudo ip link set dev eth0 address 00:11:22:33:44:55
临时更改(重启失效)。
引用说明基于Linux内核文档(kernel.org/doc)、
iproute2
官方手册(man7.org/linux/man-pages/man8/ip.8.html)及NetworkManager文档(developer.gnome.org/NetworkManager)综合整理,确保信息准确可靠。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5453.html