在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