在Linux系统中,获取网络接口的MAC地址(物理地址)是网络管理、故障排查或安全配置的常见需求,以下是几种可靠且高效的方法,适用于大多数Linux发行版(如Ubuntu、CentOS、Debian等),所有操作均需在终端中执行:
最现代且官方推荐的工具,输出简洁易读:
ip link show
- 操作步骤:
- 打开终端,输入
ip link show。 - 在输出中查找你的网络接口(如
eth0、wlan0或enp0s3)。 - MAC地址位于
link/ether后,格式为00:11:22:33:44:55。
- 打开终端,输入
示例输出:
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether **08:00:27:9e:1f:33** brd ff:ff:ff:ff:ff:ff
使用 ifconfig 命令(传统方式)
经典网络工具(部分新系统需安装):
ifconfig -a
- 操作步骤:
- 若未安装,运行
sudo apt install net-tools(Debian/Ubuntu)或sudo yum install net-tools(CentOS/RHEL)。 - 输入
ifconfig -a,在对应接口的ether或HWaddr字段找到MAC地址。
- 若未安装,运行
示例输出:
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.10 netmask 255.255.255.0 broadcast 192.168.1.255
ether **08:00:27:9e:1f:33** txqueuelen 1000 (Ethernet)
通过系统文件直接读取
无需安装任何工具,直接访问内核暴露的硬件信息:
cat /sys/class/net/<接口名>/address
- 操作步骤:
- 先通过
ip link或ls /sys/class/net/确认接口名称(如eth0)。 - 运行
cat /sys/class/net/eth0/address,直接输出MAC地址。
- 先通过
示例输出:
08:00:27:9e:1f:33
其他辅助工具
ethtool(查询高级网卡信息)
ethtool -P eth0
输出:Permanent address: 08:00:27:9e:1f:33
nmcli(NetworkManager用户)
nmcli device show eth0 | grep GENERAL.HWADDR
关键注意事项
-
临时与永久地址:
- 上述方法获取的是当前活跃的MAC地址。
- 若系统启用了MAC地址随机化(常见于WiFi),每次重启可能变化,禁用方法因发行版而异(如修改NetworkManager配置)。
-
多网卡场景:
服务器可能有多个接口(eth0、eth1),需根据名称区分。 -
权限问题:
普通用户可执行ip link或cat /sys/class/net/...,但ifconfig可能需要sudo。
总结建议
| 方法 | 适用场景 | 优势 |
|---|---|---|
ip link |
所有现代Linux系统 | 无需安装,输出简洁 |
ifconfig |
旧系统或习惯传统命令 | 兼容性广 |
读取/sys文件 |
脚本自动化或无网络工具环境 | 速度快,直接访问内核数据 |
ethtool/nmcli |
需额外网卡信息或NetworkManager管理环境 | 提供更多硬件细节 |
引用说明:
- Linux
ip命令文档:man7.org/linux/man-pages/man8/ip.8.htmlifconfig手册页:net-tools.berlios.de- 内核文档(sysfs文件系统):www.kernel.org/doc/Documentation/ABI/testing/sysfs-class-net
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7978.html