在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