ip link show显示的是当前生效MAC地址,非出厂物理地址;查永久MAC必须用sudo ethtool -P(大写P),读取网卡EEPROM中不可修改的出厂地址,如Permanent address: 00:11:22:33:44:55。

ip link show 显示的是当前生效的 MAC,不是物理出厂地址
很多人以为 ip link show 输出的 link/ether 后面那串就是“物理 MAC”,其实它只是当前内核正在使用的地址——可能已被 ip link set dev ens33 address xx:xx:xx:xx:xx:xx 临时改过。查配置文件、脚本或容器启动时读到的也都是这个值,但它不等于硬件身份证。
查永久 MAC 必须用 sudo ethtool -P,不是 -p
注意参数是大写 -P(--permanent),不是小写 -p(那是闪烁网卡灯的命令)。执行:
sudo ethtool -P ens33
输出形如:Permanent address: 00:11:22:33:44:55。这个值来自网卡 EEPROM,软件无法覆盖,是唯一可信的出厂地址。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 不是所有网卡都支持:veth、macvlan、部分 Realtek 或 USB 网卡会返回
No data available - 某些 Intel 千兆卡驱动未实现该接口,可能返回全零
00:00:00:00:00:00 - 必须加
sudo,普通用户权限不足
/sys/class/net/xxx/address 和 ip link show 本质是一回事
cat /sys/class/net/ens33/address 读出来的和 ip link show ens33 里 link/ether 后面的值完全一致,都是当前生效地址。它快、轻量、无需解析,适合脚本,但别误以为它是“物理地址”。
- 普通用户可读,不需要 root
- 路径名不固定:现代系统多用
enp0s3、ens160这类可预测命名,别硬写eth0 - 虚拟设备(如
docker0、veth*)也有address文件,但它们没有物理 EEPROM
真正麻烦的不是“怎么查”,而是“查哪个网卡”
系统里常有多个接口:lo、wlan0、docker0、vethabc123……物理以太网卡通常名字以 en 开头(如 ens33、enp0s3),但得先确认。
- 快速列出真实候选:
ip -br link | grep -E '^en' | grep -v 'docker|veth|br-' - 更稳妥一点:
lspci -k | grep -A 3 -i ethernet看驱动绑定的设备名 - NetworkManager 管理的系统可用:
nmcli device show | grep general.hwaddr,但只反映 NM 当前管理的逻辑接口
查永久地址前,先确保你选对了那个插在主板 PCIe 插槽上的真实网卡——而不是容器桥接口或虚拟网卡。这点最容易被忽略,一错就全错。

















